Habilidades da Caixa de Diálogo SQL

Diálogos SQL são habilidades que podem traduzir as declarações de linguagem natural de um usuário em consultas SQL, enviar as consultas para uma origem de dados de backend e exibir a resposta. Esta versão do SQL Dialogs suporta integração com serviços de banco de dados Oracle, como o Oracle Enterprise Database Service.

Observação

Esta versão não suporta habilidades ou habilidades de Diálogo SQL em vários idiomas em que o idioma principal não é o inglês. Ao criar uma nova habilidade (ou versão ou clone de uma habilidade), você usa o campo Idioma Principal na caixa de diálogo Criar para especificar o idioma principal. Uma habilidade será multilíngue se o pacote de recursos, as declarações de amostra, o machine learning e as listas de valores, por exemplo, tiverem mais de um idioma ou se o fluxo de caixas de diálogo contiver código para detectar o idioma da entrada do usuário e traduzi-lo em segundo plano.

Ao gravar habilidades que fornecem informações do banco de dados para usuários finais, os desenvolvedores geralmente precisam definir os casos de uso, gravar componentes personalizados para recuperar os dados, criar intenções para os casos de uso, mapear declarações do usuário para intenções e gravar o fluxo de caixas de diálogo para tratar cada intenção. Com as habilidades de Diálogo SQL, você não precisa executar estas etapas. Em vez disso, você mapeia os modelos mentais dos dados dos usuários para a origem de dados física e a habilidade usa o mapa para gerar dinamicamente SQL a partir de declarações de linguagem natural.

Por exemplo, os usuários podem saber que os funcionários pertencem a departamentos que estão em vários locais e têm IDs de funcionário, cargos, datas de admissão e, às vezes, comissões. Considerando seu modelo mental, eles podem recuperar os dados perguntando à habilidade "Qual é o trabalho de James Smith?", "Quando James Smith foi contratado?", "Quantos funcionários estão em Nova York?", e "Quem tem a comissão mais alta?

Você cria uma habilidade de Diálogo SQL de maneira diferente das habilidades regulares. Para permitir que a habilidade entenda e responda a declarações de linguagem natural, você cria um modelo lógico a partir do modelo físico e ensina esse modelo usando termos de linguagem natural para descrever o modelo físico.

Como as Caixas de Diálogo SQL Funcionam

Para implementar uma habilidade de Caixa de Diálogo SQL, crie uma habilidade de caixa de diálogo visual e importe informações sobre o modelo físico (esquema de banco de dados) do serviço de dados. O Oracle Digital Assistant usa essas informações para criar uma entidade de consulta para cada tabela importada (o modelo lógico). As entidades de consulta contêm atributos que modelam as colunas da tabela.

Se uma tabela no modelo físico tiver uma chave estrangeira, a entidade de consulta terá um atributo que se vincula à entidade de consulta relacionada. Por exemplo, se uma tabela Emp tiver uma chave estrangeira para a tabela Dept, a entidade de consulta Emp terá um atributo dept, que se vincula à entidade Dept.

Assim que criar as entidades de consulta e identificar suas chaves primárias, você poderá treinar a habilidade e ela estará pronta para ser usada de forma rudimentar. Ou seja, você pode usar declarações de formato livre, mas, por enquanto, a consulta deve usar os nomes primários exatos de entidade e atributo, que são inicialmente derivados dos nomes do modelo físico (os nomes canônicos). Isso mudará à medida que você aprimorar o modelo lógico para refletir mais de perto a linguagem natural.

Para permitir que os usuários finais usem linguagem natural para perguntar sobre os dados, mapeie a terminologia do usuário final para o modelo físico alterando os nomes primários e adicionando sinônimos para as entidades de consulta e seus atributos. Por exemplo, você pode alterar o nome principal da tabela Emp para "employee" e adicionar o sinônimo "staff member". A adição de nomes principais e sinônimos são duas das maneiras pelas quais você treina o parser de linguagem natural (NLP) para resolver declarações em consultas Oracle Meaning Representation Query Language (OMRQL). As consultas OMRQL são como consultas SQL, mas são baseadas nos nomes canônicos dos modelos de objeto (as entidades de consulta). Por exemplo, se você alterar o nome principal de empno para "número do funcionário", "qual é o número do funcionário de Joe Smith" resultará em SELECT empno FROM emp WHERE ename = 'Joe Smith'.

Para melhorar ainda mais a resolução do processador de linguagem natural (NLP), você também pode associar os atributos a listas de valores, que são preenchidas automaticamente a partir do serviço de dados na criação.

Por exemplo, digamos que você importe tabelas Emp e Dept de um serviço de dados, o que resulta em entidades de consulta Emp e Dept. Imediatamente depois de importar as tabelas e treinar a habilidade, você pode consultar as entidades de consulta usando declarações como as seguintes:

Show all Emp in dept 10

Depois de alterar os nomes principais das entidades e dos atributos para termos de linguagem mais natural, como Employees para a entidade e department para o atributo, você poderá usar declarações como esta:

Show all the employees in department 10

Você pode ainda adicionar sinônimos para modelar todas as maneiras pelas quais as pessoas normalmente se referem à entidade ou ao atributo. Por exemplo, você pode adicionar os sinônimos district e territory para department para que o NLP reconheça essa declaração:

Show all employees in district 10

Com declarações mais complexas, você pode ensinar a habilidade a resolver as consultas para OMRQL adicionando dados de treinamento personalizados que associam as declarações a instruções OMRQL específicas.

Se sua habilidade tiver intenções de tratar casos de uso não SQL ou estiver incluída em um DA, você desejará adicionar declarações de roteamento ao conjunto de dados de entidades de consulta para ajudar a habilidade a diferenciar entre declarações relacionadas a SQL e declarações não relacionadas a SQL.

Quando a habilidade gera um resultado de consulta, ela permite que o usuário dê um polegar para cima ou para baixo para indicar se o resultado está correto. A página Insights mostra as contagens de polegares para cima (consultas corretas) e polegares para baixo (consultas incorretas) para que você possa ver o desempenho da habilidade.

Consultas suportadas

O modelo de processamento de linguagem natural SQL Dialogs suporta consultas que se traduzem para as cláusulas SQL básicas: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY e LIMIT.

Uma consulta pode envolver até 3 entidades diferentes. Ou seja, pode ter até 2 junções. As consultas que envolvem 3 junções podem ser resolvidas para corrigir resultados, dependendo do caso de uso. Para 4 ou mais junções, você precisará adicionar dados de treinamento personalizados para garantir que a habilidade forneça os resultados corretos.

Diálogos SQL não suportam as consultas mais complexas que envolvem subconsultas e operadores SET (INTERSECT, UNION, EXCEPT e NONE). Ele também não suporta consultas que não sejam em inglês, consultas que solicitam uma resposta sim ou não, consultas com pronomes e consultas de acompanhamento. Para saber mais sobre essas e outras limitações de consulta de Diálogos SQL, consulte Diagnosticando e Solucionando Problemas de Consultas SQL.

Para algumas das consultas que não são suportadas, talvez você possa resolver o problema usando views de banco de dados ou criando atributos virtuais, conforme descrito em Adicionar um Atributo Personalizado.

Veja a seguir uma tabela que descreve os tipos de consultas que as Caixas de Diálogo SQL suportam. Ele usa os seguintes valores de banco de dados:

Tabela de Funcionário

employee_id nome atribuição salário department_id
1 Alex Smith Vice-presidente 500,000 1
2 Samyra Kent Associado de Vendas 60,000 1
3 Laticia Fan Associado de Vendas 80,000 1

Tabela de departamentos

department_id nome localização
1 Vendas Dallas

Estes são os tipos de consultas que o SQL Dialogs suporta:

Categoria Descrição Exemplos
Display

Você pode solicitar uma entidade, atributos e agregações de atributos.

As agregações suportadas são média, soma, mínimo, máximo, contagem(atributo), contagem(coluna), contagem(atributo distinto)

Se a consulta não nomear nenhum atributo, a habilidade exibirá os listados para Atributos Padrão na guia Apresentação da entidade.

  • mostre todos os funcionários
  • nome, salário e nome do departamento dos funcionários
  • quais são os cargos exclusivos que um funcionário pode ter?
  • quantos funcionários
  • retornar o salário mais alto de todos os funcionários
Filtros

Você pode filtrar as linhas da tabela por condições em atributos específicos

Os atributos de texto podem ser iguais a um valor, conter um valor ou começar ou terminar com um valor.

É possível usar diferentes comparadores para filtrar colunas numéricas e de data/hora (=, <, <=, >, >=).

Você usa E e OU para combinar várias condições.

  • mostrar os nomes dos funcionários cujo cargo é clerk
  • devolver o salário de todos os funcionários
  • funcionários cujos nomes começam com Jo
  • visualizar funcionários que ingressaram em 2020 e ganham mais de 7000
Filtros com datas

Ao filtrar por um atributo de data ou data/hora, considere estes pontos:

  • Para atributos de data/hora, os valores devem conter datas e horas (10 de dezembro de 2020 às 3 pm).
  • Os valores podem ser absolutos (10 de dezembro de 2020) ou relativos (hoje).
  • O filtro pode ser um intervalo como "último ano" ou "5 de janeiro a 5 de julho" e pode ter datas ou datas com horários.
  • Use a configuração Preferência Temporal do atributo na guia Informações Gerais para definir se valores ambíguos, como "Quarta-feira", devem ser padronizados para a data mais próxima, passada ou futura.
  • Os valores de duração que precisam ser coagidos em datas, como "2 dias", são suportados.
  • Exemplo absoluto: quem foram os funcionários contratados em 10 de dezembro de 2020
  • Exemplo de intervalo relativo: quem foram os funcionários contratados no ano passado
  • Exemplo de Data Relativa: quem foram os funcionários contratados hoje
  • Exemplo de data + hora: pacotes entregues ontem às 6 da tarde
  • Exemplo de data + intervalo de tempo: Pacotes entregues entre 5 de janeiro 7 pm e 5 de fevereiro 10 am
  • Exemplo de data ambígua: quem foram os funcionários contratados na quarta-feira
  • Exemplo de duração: funcionários que foram contratados desde 1 mês
Ordenando e limitando o número de linhas Você pode solicitar explicitamente que a habilidade classifique as linhas resultantes por um atributo específico. Você também pode solicitar um determinado número dos valores mais altos ou mais baixos de um atributo ou entidade.
  • mostrar funcionários classificados por nomes de departamentos
  • funcionários ordenados por nome de Z a A
  • retornar o nome e o salário de todos os funcionários em ordem decrescente de salário
  • quais são os 10 salários mais altos de todos os funcionários?
  • qual funcionário tem o salário mais baixo
  • mostrar os 5 principais funcionários
Group By Você pode solicitar agregações diferentes após o agrupamento por um atributo ou uma entidade.
  • o salário médio de cada cargo
  • qual é o salário mais alto por departamento?
  • mostrar o nome, o local e o número de funcionários por departamento
Agrupar por e filtrar Você pode filtrar atributos ou entidades com base em agregações.
  • mostrar todos os cargos com salário médio acima de 3000
  • departamentos cujo salário mínimo é 4000
  • quais departamentos têm pelo menos 20 funcionários?
Agrupar por e solicitar com limite opcional Você pode classificar atributos ou entidades com base em agregações e, opcionalmente, solicitar a exibição de várias linhas superiores ou inferiores.
  • mostrar todos os cargos classificados pelo salário mais alto pago aos funcionários nesse cargo
  • qual departamento tem a menor média salarial?
  • exibir o nome dos departamentos com as 3 maiores contagens de funcionários

Tutorial: Conceitos Básicos de Caixas de Diálogo SQL

Você pode obter uma visão prática do SQL Dialogs percorrendo este tutorial:

Conceitos Básicos de Caixas de Diálogo SQL.

Workflow de Diálogos SQL

A forma como você cria uma habilidade de Caixa de Diálogo SQL difere das habilidades regulares. Aqui estão as principais etapas para criar uma habilidade de Diálogo SQL e treiná-la para que as pessoas possam usar a linguagem natural para consultar os serviços de dados.

Os participantes das etapas a seguir são desenvolvedor de habilidades, administrador de serviços, especialista em banco de dados e instrutor de IA.

  • O desenvolvedor de habilidades reúne os requisitos de habilidade (personas do usuário, casos de uso e tarefas) e corpus de treinamento (exemplos de declarações do usuário) e cria a habilidade. O desenvolvedor também ajuda a definir como os resultados são exibidos. Às vezes, essa pessoa é chamada de designer de conversas.

  • O administrador do serviço adiciona uma conexão ao serviço de dados.

  • O especialista em banco de dados analisa os requisitos de habilidade e o corpus de treinamento para identificar as tabelas e os atributos que fornecem as respostas. Em seguida, o especialista cria o modelo lógico base importando informações do modelo físico para a habilidade. O especialista também ajuda o desenvolvedor de habilidades e o instrutor de IA a tarefas como adicionar atributos baseados em expressão SQL, associar atributos a listas de valores carregadas de tabelas, associar atributos a expressões regulare e executar treinamento personalizado.

  • O treinador de IA adiciona nomes principais e sinônimos para ensinar ao analisador de linguagem natural (NLP) como entender as declarações de linguagem natural. Para declarações que a habilidade não pode traduzir para OMRQL, o instrutor de IA adiciona treinamento personalizado para ensinar ao analisador de linguagem natural como entender essas declarações. O instrutor monitora e testa continuamente a habilidade para aumentar a precisão da tradução da linguagem natural em consultas de banco de dados.

Para ajudar a ilustrar o fluxo de trabalho, usaremos um exemplo de serviço de dados de contas a pagar com as tabelas a seguir. Para simplificar, mostramos apenas as colunas mencionadas neste tópico.

Tabela Colunas
faturas
  • invoice_num
  • invoice_date
  • pmt_status_flag
  • invoice_amount
  • fornecedor
payment_schedules
  • invoice_num
  • due_date
  • amount_remaining
fornecedores
  • vendor_num
  • vendor_name
  1. Definir os Requisitos: O desenvolvedor de habilidades reúne os casos de uso e as tarefas que a habilidade de Caixa de Diálogo SQL deve suportar. Por exemplo, um departamento de contas a pagar pode ter este caso de uso:

    • Caso de Uso: Pague todas as NFFs com saldos pendentes que vencem no prazo de 30 dias para que possamos evitar multas.

      • Tarefa: Localize todas as NFFs não aprovadas com vencimento em até 30 dias para que possamos aprová-las a tempo.

      • Tarefa: Localize todas as NFFs aprovadas pendentes com vencimento em 30 dias para que possamos programá-las para pagamento a tempo.

    Como parte dessa fase de requisitos, o desenvolvedor de habilidades compila uma lista representativa das diferentes maneiras pelas quais as pessoas pedem essas informações. Essa lista serve como o conjunto de declarações de exemplo que o instrutor de IA usa para o corpus de treinamento.

  2. Configurar a Habilidade: O administrador de serviço, o desenvolvedor de habilidades e o especialista em banco de dados trabalham juntos para configurar a habilidade básica.

    1. Integrar com o Serviço: O administrador de serviços cria uma conexão do Oracle Digital Assistant com o serviço de dados. Consulte Conectar-se ao Serviço de Dados.

    2. Criar a Habilidade da Caixa de Diálogo SQL: O desenvolvedor de habilidades cria a habilidade da Caixa de Diálogo SQL, garantindo que o modo da caixa de diálogo seja definido como Visual na caixa de diálogo Criar Habilidade. Consulte Criar a Habilidade da Caixa de Diálogo SQL.

    3. Importar o Esquema: O especialista em banco de dados identifica as tabelas e os campos necessários para suportar os casos de uso e, em seguida, na página Entidades da habilidade, os importa do serviço de dados, conforme descrito em Criar Entidades de Consulta para Modelar o Serviço de Dados. Isso cria um modelo lógico base que contém uma entidade de consulta para cada tabela importada.

      Em nosso exemplo, o especialista em banco de dados importa as tabelas invoices, payment_schedules e vendors.

      Nesse ponto, a habilidade está pronta para uso com funcionalidade limitada. Para o modelo lógico base, os nomes das entidades e dos atributos são derivados da tabela e dos nomes de campo do modelo físico. Por exemplo, se o nome da tabela for payment_schedules, o nome principal será payment schedules. O instrutor de IA pode testar consultas na página Entidades ou usar o testador de conversas (Visualizar) para experimentar a funcionalidade SQL.

      Em nosso serviço de dados de exemplo, eles podem usar declarações de teste, como "mostrar faturas com flag de status de pagamento N", "mostrar fatura no 17445" ou "mostrar programações de pagamento com data de vencimento anterior a 2022-08-30".

  3. Treinamento: Adicione dados de treinamento por meio de nomes principais, sinônimos, listas de valores, expressões regulares e consultas de linguagem natural mapeadas para OMRQL.

    1. Adicionar Terminologia de Linguagem Natural: Para ajudar a associar frases de linguagem natural à estrutura de dados subjacente, o treinador de IA ensina à habilidade as diferentes maneiras pelas quais os usuários finais se referem às entidades e aos atributos. Ou seja, os nomes que as pessoas usarão em suas declarações de linguagem natural. O instrutor começa analisando as frases que o desenvolvedor de habilidades reuniu para identificar as declarações que a habilidade deve tratar (o corpus de treinamento). Além disso, eles podem consultar um dicionário de sinônimos e fonte de multidão para frases semelhantes. Em seguida, o instrutor de IA registra os termos equivalentes alterando os nomes principais e adicionando sinônimos. Consulte Fornecer Dados de Treinamento por meio de Nomes e Sinônimos.

      Em nosso exemplo, uma das declarações reunidas durante a fase de requisitos é "Dê-me uma lista de faturas com um saldo pendente maior que zero". O atributo que contém o saldo é amount remaining, portanto, o instrutor AI adiciona o sinônimo outstanding balance a esse atributo.

    2. Associar a Listas de Valores: Para melhorar a precisão, o treinador de IA pode, quando apropriado, criar listas de valores que contenham valores de amostra do serviço de dados. A habilidade associa automaticamente as listas a seus respectivos atributos, o que ajuda o analisador de linguagem natural a entender os tipos de valores que esses atributos podem conter. Consulte Fornecer Dados de Treinamento por meio de Listas de Valores.

      Em nosso exemplo, eles associam o atributo vendor_name a uma lista de valores recuperada do serviço de dados. Se a lista de valores incluir "Seven Corporation" e um usuário perguntar "mostrar sinalizador de resumo para Seven Corporation", o NLP deduzirá que Seven Corporation é um nome de fornecedor.

    3. Associar a Expressões Regulares: Quando os valores de um atributo devem corresponder a um padrão específico, o treinador de IA pode criar uma entidade de expressão regular e associá-la a esse atributo. Consulte Fornecer Dados de Treinamento por meio de Expressões Regulares.

      Por exemplo, o instrutor AI pode associar um atributo ip_address à expressão regular (\\d{1,2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]).

    4. Mapear Consultas Complexas: Nos casos em que a habilidade não consegue converter uma declaração válida em OMRQL, o treinador de IA adiciona essa declaração aos dados de treinamento e a mapeia para OMRQL, conforme descrito em Fornecer Dados de Treinamento por Meio de Declarações. Por exemplo, você pode mapear "mostrar faturas não pagas" para SELECT * payment_schedules WHERE payment_status_flag = 'Y' .

    5. Fornecer Sugestões de Preenchimento Automático: Para ajudar os usuários a saber o que o modelo lógico é capaz de responder, adicione declarações de exemplo, conforme descrito em Fornecer Sugestões de Consulta para Usuários da Caixa de Diálogo SQL.

    6. Fornecer Dados de Roteamento: Se sua habilidade de Caixa de Diálogo SQL tiver intenções ou se estiver em um DA, você precisará adicionar declarações para ajudar a habilidade a distinguir consultas de banco de dados. Consulte Rotear Declarações para a Conversa de Caixas de Diálogo SQL.

    7. Treine o Modelo de NLP: Para incorporar dados de treinamento ao modelo de NLP, o desenvolvedor de habilidades ou o treinador de IA clica no ícone Treinar e clica em Enviar.

  4. Configurar Como as Informações são Exibidas: O especialista em banco de dados e o desenvolvedor de habilidades trabalham juntos para ajustar como os resultados de cada entidade são exibidos, conforme descrito em Configurar Apresentação de Entidades e Atributos. Por exemplo, eles fazem coisas como podem definir a ordem de classificação padrão de uma entidade, exibir como formulário ou tabela, definir os atributos mínimos a serem incluídos na saída, adicionar botões e links aos resultados e adicionar atributos que exibem dados derivados ou calculados.

    Em nosso exemplo, eles podem definir a ordem de classificação padrão e os atributos mínimos da entidade de NFF como invoice_num e definir os atributos padrão como invoice_num, invoice_date, pmt_status_flag e invoice_amount. Eles também podem adicionar um atributo age que é calculado usando a diferença entre a data de hoje e a data da NFF.

  5. Configurar Regras de Consulta: O especialista em banco de dados e o treinador de IA trabalham juntos para definir as regras de consulta, como quando usar correspondência parcial e qual atributo usar para medir quando alguém pedir para comparar linhas sem especificar um atributo com o qual comparar. Consulte Definir Regras de Consulta.

    Em nosso exemplo, eles preveem que os usuários finais solicitem a maioria dos 10 pagamentos a serem feitos, de modo que eles configurem a entidade payment schedules para usar due_date para comparações e inverterão comparações para esse atributo para que as datas anteriores sejam mais altas que as datas posteriores.

  6. Teste e Reparo: O treinador de IA usa o testador de consulta da página Entidades para verificar se as declarações de teste são resolvidas para o OMRQL desejado e se a habilidade pode converter o OMRQL em SQL executável. Quando o testador de consulta não consegue traduzir o OMRQL para SQL, ele solicita dados de treinamento. Em muitos casos, você pode resolver isso adicionando a declaração aos dados de treinamento e associando-a a uma instrução OMRQL. Consulte Testar e Reparar.

  7. Monitorar e Melhorar: Depois que a habilidade entra na fase de teste beta e além, o treinador de IA, o desenvolvedor de habilidades, o gerente de projeto e as partes interessadas podem monitorar continuamente testes em lote e dados de Insights para ver o desempenho da habilidade e identificar áreas de melhoria. Consulte Monitorar e Melhorar.

Conectar ao Serviço de Dados

Para poder acessar um serviço de dados de qualquer habilidade de Caixa de Diálogo SQL, adicione uma integração de serviço de dados que permita ao Oracle Digital Assistant acessar o serviço de dados. Você só precisa de uma integração por serviço de dados.

As integrações foram testadas com o Oracle Database Cloud Service Enterprise Edition 12c e 19c Oracle Autonomous Transaction Processing e o MySQL HeatWave Database Service com o MySQL versão 8.

Observação

Depois de criar o serviço, você não pode alterá-lo. Se a senha for alterada, você precisará excluir e recriar a integração do serviço de dados.

Serviço de Dados Oracle

Para estabelecer conexão com um banco de dados Oracle, siga estas etapas:

  1. No Digital Assistant, clique em ícone do menu lateral para abrir o menu lateral, clique em Definições, clique em Serviços Adicionais e clique na guia Dados.

  2. Clique em + Adicionar Serviço.

  3. Na caixa de diálogo Novo Serviço de Dados, forneça estas informações básicas:

    Nome do Campo Descrição
    Tipo de Banco de Dados Selecione Oracle.
    Nome Um nome exclusivo para o serviço.
    Descrição do Serviço de Dados Uma descrição opcional da integração do serviço de dados, como uma descrição do banco de dados ou a finalidade.
    Nome do Usuário Peça ao administrador do banco de dados o nome de usuário e a senha que dão acesso às tabelas que os desenvolvedores de habilidades precisam para criar as entidades compostas para sua habilidade de Caixa de Diálogo SQL, conforme descrito em Criar Entidades de Consulta para Modelar o Serviço de Dados.
    Senha A senha do usuário. Observe que, para a integração do Oracle Digital Assistant, uma senha deve ter pelo menos 14 caracteres e não mais que 30 caracteres, e deve conter pelo menos um caractere maiúsculo, um caractere minúsculo e um número. Também não pode começar com um dígito.
  4. Clique em Continuar para configurar a autenticação do usuário final se seu serviço de dados estiver configurado para acesso baseado em função. Veja a seguir uma descrição dos campos dessa página:

    Nome do Campo Descrição
    A Autenticação do Usuário Final é obrigatória Selecione essa opção se seu serviço de dados estiver configurado para acesso baseado em função.
    Serviço de Autenticação

    Selecione um serviço de autenticação configurado em Definições > Serviços de Autenticação.

    Identificador do Usuário Final Selecione o tipo de identificador do usuário final.
    Expressão Personalizada

    Se o tipo de identificador de usuário final selecionado for personalizado, digite uma expressão FreeMarker para uma variável de perfil de usuário que represente o identificador de usuário final.

    Consulte Expressões para Reivindicações de Perfil OICD para obter mais informações e exemplos.

  5. Clique em Continuar para adicionar os detalhes da conexão.

  6. Na página Detalhes da Conexão, selecione Básico ou Conexão da Wallet da Nuvem para o tipo de conexão.

    • Para bancos de dados de nó único e bancos de dados ativados para RAC, selecione Básico.
    • Se você estiver estabelecendo conexão com um banco de dados ATP, selecione Conexão da Wallet da Nuvem.
  7. Se o tipo de conexão for Básico, informe esses valores, que você poderá obter do administrador do banco de dados:

    Nome do Campo Descrição
    Usar TLS Mova essa chave para a posição ON se quiser usar o TLS (Transport Layer Security) para proteger a conexão.
    Observação

    Se você estiver usando um certificado de CA privada para estabelecer conexão com o banco de dados, essa opção precisará ser ativada.
    Nome do Host

    Informe o host do serviço de dados. Saia do prefixo https://. Por exemplo: example.com.

    Porta A porta que permite conexões do cliente com o banco de dados.
    Identificador de Serviço

    Execute um dos seguintes procedimentos:

    • Selecione SID e informe o identificador do sistema Oracle da instância do banco de dados.

    • Selecione Nome do Serviço e informe o nome do serviço para o banco de dados.

    Ponto Final Privado Essa opção só aparecerá se você tiver pontos finais privados configurados na instância do Digital Assistant.

    Se você estiver estabelecendo conexão com um ponto final privado para acessar o serviço, alterne a opção Ponto final privado para a posição ON e selecione em uma lista de pontos finais privados associados à instância.

    (O uso de um ponto final privado permite que você acesse um serviço que não esteja acessível diretamente da Internet pública. Consulte Ponto Final Privado para obter detalhes.)

  8. Se o tipo de conexão for Conexão da Wallet da Nuvem, informe esses valores, que você poderá obter do administrador do banco de dados:

    Nome do Campo Descrição
    Arquivo de Wallet Localize e selecione o arquivo do Cloud Wallet que contém as credenciais do cliente ou arraste-o e solte-o no campo.
    Senha da Wallet Informe a senha que foi fornecida quando o arquivo da wallet foi baixado. Observe que, para a integração do Oracle Digital Assistant, uma senha de wallet deve ter pelo menos 15 caracteres e não mais que 30 caracteres, e deve conter pelo menos um caractere maiúsculo, um caractere minúsculo, um caractere especial e um número. Também não pode começar com um dígito.
    Serviço Selecione o nome do serviço de banco de dados. Certifique-se de selecionar um serviço que tenha uma simultaneidade de serviço suficientemente alta para que as consultas não levem mais de 30 segundos (em que o tempo limite é atingido). Os nomes de serviço com os sufixos _tp e _tpurgent geralmente são as opções mais adequadas aqui. Você pode ler mais sobre essas considerações em Nomes de Serviço de Banco de Dados para o Autonomous Database e Concorrência de Serviço.
    Ponto Final Privado Essa opção só aparecerá se você tiver pontos finais privados configurados na instância do Digital Assistant.

    Se você estiver estabelecendo conexão com um ponto final privado para acessar o serviço, alterne a opção Ponto final privado para a posição ON e selecione em uma lista de pontos finais privados associados à instância.

    (O uso de um ponto final privado permite que você acesse um serviço que não esteja acessível diretamente da Internet pública. Consulte Ponto Final Privado para obter detalhes.)

  9. Na página Propriedades Avançadas, se você precisar de um certificado de CA privada para estabelecer conexão com o banco de dados, alterne a opção Usar Confiança Privada para a posição ON e preencha o restante dos campos obrigatórios.
    Nome do Campo Descrição
    Usar Confiança Privada Se você estiver usando um certificado de CA privada para estabelecer conexão com o banco de dados, alterne essa alternância para a posição ON. Essa chave só será ativada se você tiver selecionado Usar TLS na página Detalhes da Conexão.
    Recurso de Certificados Selecione Autogerenciado.
    Escolher Arquivo PEM e Colar Texto PEM Selecione uma dessas opções para fornecer o certificado.
  10. Clique em Adicionar Serviço.

    Agora você pode importar o esquema do banco de dados para uma habilidade para criar entidades de consulta, que permitem aos usuários consultar o banco de dados usando linguagem natural.

Expressões para Reivindicações de Perfil OICD

Se você tiver uma conexão com um serviço de dados com acesso baseado em função e tiver selecionado Personalizado como o tipo de identificador do usuário, forneça uma expressão FreeMarker a uma variável de perfil do usuário que represente o identificador do usuário final, como uma reivindicação padrão ou personalizada do OpenID Connect (OIDC). Seguem alguns exemplos:

  • ${userProfile.MyAuthService1.value.sub}
  • ${userProfile.MyAuthService1.value["http://acme.com/custom_identifier"]}

Para obter mais informações sobre como as reivindicações de perfil no OIDC funcionam e algumas reivindicações de exemplo, consulte os seguintes recursos:

MySQL Serviço de Dados

  1. No Digital Assistant, clique em ícone do menu lateral para abrir o menu lateral, clique em Definições, clique em Serviços Adicionais e clique na guia Dados.

  2. Clique em + Adicionar Serviço.

  3. Na caixa de diálogo Novo Serviço de Dados, forneça estas informações básicas:

    Nome do Campo Descrição
    Tipo de Banco de Dados Selecione MySQL.
    Nome Um nome exclusivo para o serviço.
    Descrição do Serviço de Dados Uma descrição opcional da integração do serviço de dados, como uma descrição do banco de dados ou a finalidade.
    Tipo de Autenticação O administrador do banco de dados informará se você deve selecionar Padrão, Kerberos ou SO.
    Nome do Usuário Peça ao administrador do banco de dados o nome de usuário e a senha que dão acesso às tabelas que os desenvolvedores de habilidades precisam para criar as entidades compostas para sua habilidade de Caixa de Diálogo SQL, conforme descrito em Criar Entidades de Consulta para Modelar o Serviço de Dados.
    Senha A senha do usuário. Observe que, para a integração do Oracle Digital Assistant, uma senha deve ter pelo menos 14 caracteres e não mais que 30 caracteres, e deve conter pelo menos um caractere maiúsculo, um caractere minúsculo e um número. Também não pode começar com um dígito.
  4. Clique em Continuar para configurar os detalhes da conexão listados nesta tabela:

    Nome do Campo Descrição
    Usar TLS Mova essa chave para a posição ON se quiser usar o TLS (Transport Layer Security) para proteger a conexão.
    Observação

    Se você estiver usando um certificado de CA privada para estabelecer conexão com o banco de dados, essa opção precisará ser ativada.
    Nome do Host

    Informe o host do serviço de dados. Saia do prefixo https://. Por exemplo: example.com.

    Porta A porta que permite conexões do cliente com o banco de dados.
    Banco de Dados

    O nome do banco de dados.

    Ponto Final Privado Essa opção só aparecerá se você tiver pontos finais privados configurados na instância do Digital Assistant.

    Se você estiver estabelecendo conexão com um ponto final privado para acessar o serviço, alterne a opção Ponto final privado para a posição ON e selecione em uma lista de pontos finais privados associados à instância.

    (O uso de um ponto final privado permite que você acesse um serviço que não esteja acessível diretamente da Internet pública. Consulte Ponto Final Privado para obter detalhes.)

  5. Na página Propriedades Avançadas, se você precisar de um certificado de CA privada para estabelecer conexão com o banco de dados, alterne a opção Usar Confiança Privada para a posição ON e preencha o restante dos campos obrigatórios.
    Nome do Campo Descrição
    Usar Confiança Privada Se você estiver usando um certificado de CA privada para estabelecer conexão com o banco de dados, alterne essa alternância para a posição ON. Essa chave só será ativada se você tiver selecionado Usar TLS na página Detalhes da Conexão.
    Recurso de Certificados Selecione Autogerenciado.
    Escolher Arquivo PEM e Colar Texto PEM Selecione uma dessas opções para fornecer o certificado.
  6. Clique em Adicionar Serviço.

    Agora você pode importar o esquema do banco de dados para uma habilidade para criar entidades de consulta, que permitem aos usuários consultar o banco de dados usando linguagem natural.

Criar a Habilidade da Caixa de Diálogo SQL

Para criar uma habilidade de Caixa de Diálogo SQL, basta criar uma habilidade com o Modo de diálogo definido como Visual.

Criar Entidades de Consulta para Modelar o Serviço de Dados

Para ativar consultas de serviço de dados em uma habilidade da Caixa de Diálogo SQL, importe informações sobre o modelo físico de um serviço de dados (as tabelas ou views e suas colunas) para criar um modelo lógico base. Durante a importação, a habilidade adiciona entidades de consulta ao modelo lógico, em que cada entidade de consulta representa uma tabela física.

Observação

Uma habilidade não pode ter mais de 50 entidades e atributos de consulta. Por exemplo, você pode ter 5 entidades de consulta que combinadas têm 45 atributos.

Quando você treina sua habilidade, ela usa as informações das entidades de consulta para criar um modelo para o analisador de linguagem natural, o que permite que a habilidade traduza declarações do usuário em OMRQL. OMRQL é uma linguagem de consulta semelhante à SQL, mas baseada em modelos de objeto, que, nesse caso, são as entidades de consulta.

Antes de começar, você precisa do seguinte:

Para criar entidades de consulta para as tabelas desejadas em seu serviço de dados:

  1. Na página Entidades, clique em Mais e selecione Importar do Serviço de Dados.

    A caixa de diálogo Importar Entidades de Consulta é exibida.

  2. Selecione o serviço de dados e, em seguida, selecione as tabelas e os atributos que você deseja usar na habilidade.

  3. Clique em Importar.

    A habilidade adiciona entidades de consulta para as tabelas selecionadas. Ela define os nomes principais de entidades e atributos com base nos nomes canônicos. Por exemplo, se o nome canônico for "invoice_num", o nome principal será "número da NFF".

  4. Para cada entidade de consulta adicionada, selecione a entidade, clique na guia Configuração e verifique se a chave primária está definida na seção Mapeamento de Backend.

Neste ponto, você pode testar as consultas usando os nomes principais das entidades e dos atributos, como "mostrar NFFs em que o número da NFF é 12345". Mas primeiro, você deve clicar em ícone de trem com crachá e, depois que ele for concluído, poderá clicar em Testar Consultas para testar declarações ou clicar em Visualizar para testar no testador de conversas.

Como você está trabalhando com uma habilidade de caixa de diálogo SQL mínima, é possível treinar com Trainer Ht ou Trainer Tm. No entanto, depois de adicionar sugestões de preenchimento automático, dados de roteamento e dados de treinamento personalizados, o Trainer Tm produz resultados mais precisos.

Sua próxima etapa é ensinar à habilidade como os usuários finais se referem às entidades e aos atributos. Consulte Treinar a Habilidade para Converter Declarações de Linguagem Natural em SQL.

Treine a Habilidade para Converter Declarações de Linguagem Natural em SQL

Como instrutor de IA, seu trabalho é permitir que o analisador de linguagem natural traduza declarações de linguagem natural, como "quantas NFFs têm uma data de vencimento anterior a 15/12/22" em uma consulta OMRQL para recuperar a resposta da origem de dados subjacente (o modelo físico). Você faz isso criando um modelo lógico intuitivo dos dados que reflita de perto a linguagem natural.

Depois que o modelo lógico for criado pela importação da origem de dados, você usará nomes principais, sinônimos, listas de valores e declarações para ajudar o analisador de linguagem natural da habilidade a associar frases de linguagem natural às tabelas e colunas do modelo físico.

  • Para ensinar a habilidade sobre as diferentes maneiras pelas quais as pessoas se referem aos objetos, adicione nomes principais e sinônimos, conforme descrito em Fornecer Dados de Treinamento por meio de Nomes e Sinônimos. Por exemplo, talvez você queira ensinar a habilidade que as pessoas usam "número da fatura" para se referir à coluna invoice_num e também queira adicionar "número da fatura" e "número de referência" como sinônimos.

  • Para ajudar a habilidade a identificar valores de atributo em uma declaração, crie listas de valores de amostra e associe-as a atributos, conforme descrito em Fornecer Dados de Treinamento por meio de Listas de Valores. Por exemplo, você pode criar uma lista de valores que contenha status de pagamento reais e associar a lista ao atributo payment status da NFF.

  • Para ajudar a habilidade a identificar valores de atributo com base em padrões, crie entidades de expressão regular e associe-as a atributos, conforme descrito em Fornecer Dados de Treinamento por meio de Expressões Regulares. Por exemplo, você pode criar uma entidade de expressão regular com a expressão (\\d{1, 2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]) e associá-la ao atributo ip_address.

  • Quando a habilidade não puder traduzir corretamente uma declaração em OMRQL, você poderá adicionar um mapeamento de declaração para OMRQL ao conjunto de dados da entidade de consulta, conforme descrito em Fornecer Dados de Treinamento por Meio de Declarações e Testar e Reparar. Você também pode adicionar declarações para ajudar a habilidade a saber quando rotear uma declaração para o fluxo que a processa como uma execução SQL (ou seja, traduz-se em OMRQL e, em seguida, envia uma consulta SQL para a origem de dados).

Fornecer Dados de Treinamento por meio de Nomes e Sinônimos

Para ajudar uma habilidade de Diálogos SQL a associar frases de linguagem natural à estrutura de dados subjacente (modelo físico), comece tomando as declarações identificadas que a habilidade deve tratar (o corpus de treinamento) e analisando-as para descobrir as diferentes maneiras pelas quais os usuários finais se referem às entidades e aos atributos.

Por exemplo, suponha que você tenha essas declarações em seu corpus de treinamento:

  • Mostre os documentos fiscais com saldos pendentes maiores que zero.

  • Qual é o valor devido para a referência 12656?

Aqui, você vê que as pessoas usam "saldo excepcional" e "valor devido" para se referir à coluna amount_remaining. Você também vê que "referência" é uma maneira que as pessoas se referem a invoice_num.

Além do corpus de treinamento, talvez você também queira fazer crowdsource de declarações de seus usuários de destino para obter mais frases e analisá-las também.

Depois de compilar sua lista das maneiras pelas quais as pessoas se referem às entidades e aos atributos, escolha qual termo você deseja usar para o nome principal de cada entidade e atributo. Eles devem ser nomes que estão mais próximos dos usos mais comuns. Quando você escolher o nome, considere que o modelo de PNL pronto para uso provavelmente não entenderá as relações específicas do domínio. Por exemplo, ele não entenderá automaticamente que número da NFF e referência se referem à mesma coisa. Como o número da NFF é comumente usado e também é mais próximo de outros termos comumente usados, como número da NFF e número da fatura, você o tornaria o nome principal.

Trate o restante dos termos como sinônimos. No exemplo acima, você adicionaria reference, número da fatura e número da fatura à lista de sinônimos.

Observe que o nome principal é o padrão para os cabeçalhos e labels da coluna de resultados, mas você pode alterá-lo na guia Apresentação.

Usando sua lista, você cria os dados de treinamento na página Entidades.

  • Para definir o Nome Principal e os Sinônimos da entidade, abra a guia Configuração da entidade e expanda Idioma Natural.

  • Para definir o Nome Principal e os Sinônimos do atributo, abra a guia Idioma Natural do atributo.

Observação

Ao processar declarações, o analisador de linguagem natural não considera os nomes canônicos do modelo físico, ou seja, não examina os nomes de tabela e coluna. Ele usa apenas os mapeamentos de linguagem natural que você define usando nomes e sinônimos (o modelo lógico).

Fornecer Dados de Treinamento por meio de Listas de Valores

Você pode melhorar a precisão do analisador de linguagem natural associando atributos a listas de valores ou entidades dinâmicas. Isso ajuda o parser a identificar um atributo com base em seus valores conhecidos. Use Entidade Referenciada na guia Informações Gerais do atributo para associar o atributo aos valores da entidade de referência. Para entidades de lista de valores, você pode criar automaticamente a entidade, importar os valores do serviço de dados e associá-la como uma entidade referenciada, tudo em uma etapa.

Ao decidir se uma lista de valores ou uma entidade dinâmica deve ser usada para armazenar os valores, considere se a entidade está aberta ou fechada.

  • Uma lista aberta é aquela que é infinita ou dinâmica (ou ambas). Para listas abertas, considere criar e manter uma entidade dinâmica em vez de uma lista de valores. Se você optar por usar uma lista de valores, deverá selecionar a lista para garantir que ela contenha pelo menos os valores mais usados. Por exemplo, para uma lista de fornecedores que provavelmente cresce ao longo do tempo, você desejará que a lista inclua seus fornecedores mais usados. Isso ocorre porque as consultas sobre um fornecedor sem usar a palavra "fornecedor", como "mostrar o indicador de resumo da Seven Corporation", não corresponderão se esse valor não estiver na lista de valores. Assim, você aumenta a frequência de resoluções corretas pelo menos incluindo os valores mais usados.

  • Uma lista fechada é uma lista finita estática. Eles são ideais para entidades de lista de valores.

Para listas de valores e entidades dinâmicas, adicione versões singulares e plurais (quando aplicável) de sinônimos para cada valor de entidade a fim de indicar as maneiras pelas quais os usuários finais farão referência ao valor.

Os sinônimos são especialmente importantes quando a lista contém valores que os usuários finais normalmente não usam. Veja, por exemplo, esta lista de status de pagamento válidos. Os usuários terão muito mais probabilidade de usar palavras como pago, não pago e parcialmente pago do que usar Y, N e P. Adicionar essas palavras como sinônimos ajuda a garantir que o NLP reconheça que os usuários estão se referindo ao atributo de status do pagamento.

Valores de Status de Pagamento Sinônimos
Y pago
N não pago, não pago
P parcial, parcialmente pago, não pago

Quando um termo descreve mais de um valor de entidade, adicione esse termo como sinônimo a cada um. Por exemplo, N e P indicam que a NFF não foi paga. Se você adicionar "não pago" como sinônimo para ambos os status, "mostrar faturas não pagas" recuperará faturas com um valor payment_status de N ou P.

Para entidades dinâmicas, crie a entidade e use Entidade Referenciada na guia Informações Gerais do atributo para associar o atributo à lista.

Para listas de valores, você pode criar uma lista de valores no serviço de dados e associar a uma entidade seguindo estas etapas:

  1. Na página Entidades, edite o atributo e vá para a guia Informações Gerais.

  2. Selecione Entidade na lista suspensa Tipo.

  3. Clique em Se a entidade desejada não existir, você poderá gerar uma entidade de lista de valores com base no mapeamento em segundo plano clicando aqui. A lista de valores é criada e preenchida a partir do serviço de dados, e a Entidade Referenciada aponta para a nova lista de valores.

  4. (Opcional) Para aumentar as chances de a entrada do usuário corresponder a um valor da lista, abra a entidade da lista de valores e ative a opção Correspondência Difusa. Caso contrário, ele usa correspondência estrita, o que significa que a entrada do usuário deve ser uma correspondência exata com os valores e sinônimos. Por exemplo, "carros" não correspondem a "carro".

    A correspondência difusa usa colisão de palavras para identificar atributos da consulta. Por exemplo, "pound" corresponde a "pounds", "hold" corresponde a "on hold", "needed approval" corresponde a "needs approval" e "rent-lease" corresponde a "rent lease".

    Observe que a correspondência difusa não funciona para "_" e "?". Além disso, a correspondência parcial não funciona. Por exemplo, "Sete" não corresponde a "Sete Corporação". Se você precisar ativar a correspondência para essas strings, adicione-as à lista de sinônimos.

  5. Clique em Aplicar para salvar suas alterações.

Observação

Se algum valor na tabela física do serviço de dados terminar com um ponto, um ponto de interrogação ou espaços, esses caracteres não serão incluídos na lista de valores porque não são permitidos nomes canônicos.

Fornecer Dados de Treinamento por meio de Expressões Regulares

Se os valores de um atributo tiverem que corresponder a um determinado padrão, você poderá ajudar o analisador de linguagem natural a identificar os valores desse atributo associando o atributo a uma entidade de expressão regular.

Isso pode ser útil quando todos os valores devem seguir um padrão específico e o conjunto de valores válidos é muito grande para uma lista de valores ou é infinito. Por exemplo, para um atributo ip_address, você pode associá-lo a uma entidade de expressão regular chamada IpAddress, que tem a expressão regular (\\d{1,2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]).

Observe que, semelhante às listas de valores, se mais de um atributo no modelo puder ser associado à mesma expressão regular, os usuários precisarão fornecer contexto suficiente em sua consulta para distinguir entre os dois (ou mais) atributos.

Para associar um atributo a uma expressão regular:

  1. Na página Entidades, clique em + Adicionar Entidade, selecione Expressão Regular na lista drop-down Tipo, informe a expressão regular e clique em Criar.

    Certifique-se de criar a expressão regular de uma forma que impeça o analisador de linguagem natural de associar valores não relacionados ao atributo.

  2. Selecione a entidade com o atributo que você deseja associar à expressão regular, edite o atributo e vá para a guia Informações Gerais.

  3. Selecione Entidade no menu suspenso Tipo.

  4. Na lista drop-down Entidade Referenciada, selecione a entidade de expressão regular.

  5. Clique em Aplicar para salvar suas alterações.

Fornecer Dados de Treinamento por Meio de Declarações

Como instrutor de IA, você encontrará declarações de idiomas naturais que a habilidade não pode traduzir para OMRQL. Por exemplo, o modelo pode não ser capaz de lidar com sinônimos específicos do domínio que não parecem estar intimamente relacionados ao nome principal. Outro exemplo é quando o modelo não consegue distinguir entre duas entidades semelhantes. Quando isso acontece, você pode usar dados de treinamento para ensinar a habilidade a fazer parsing corretamente da declaração no OMRQL.

A inclusão nos dados do treinamento geralmente é chamada de treinamento personalizado. Você usa o treinamento personalizado para ensinar o modelo a associar palavras e frases a atributos, entidades e palavras-chave OMRQL no contexto de uma declaração completa mapeando a declaração para OMRQL.

Para cada cenário que você está corrigindo, comece com 20 declarações e adicione mais conforme necessário. Como muitos exemplos podem fazer com que o modelo preveja atributos e operadores em excesso, você deve se concentrar em um conjunto menor de declarações diversas, em vez de um grande conjunto de declarações semelhantes e de menor qualidade. Observe que há um limite de 120 declarações por habilidade.

Todos os valores na instrução OMRQL devem corresponder exatamente ao valor e ao formato do banco de dados. Tome, por exemplo, a declaração "quem é o funcionário cujo nome é Jones". Se os valores do banco de dados para o atributo name tiverem todas as letras em maiúsculas, o valor name também deverá ter todas as letras em maiúsculas. Isso é "SELECT * FROM Emp WHERE name = 'JONES'".

Quando a declaração que você está mapeando usa um sinônimo para o valor real do banco de dados, esse sinônimo deve ser definido para o valor em uma lista de valores e o OMRQL deve usar o valor real do banco de dados. Por exemplo, se a declaração for "mostrar o departamento cujo local é o big apple", "big apple" deverá ser definido na lista de valores dept_loc como sinônimo do valor "NEW YORK" e o OMRQL deverá ser "SELECT * FROM Dept WHERE loc = 'NEW YORK'".

Você pode adicionar declarações que contenham datas absolutas, como "faturas com vencimento em 5 de janeiro de 2022", mas não use declarações com datas relativas ou datas sem o ano. Por exemplo, se a declaração for "faturas com vencimento hoje", a data de hoje será codificada no OMRQL como SELECT * FROM Invoices WHERE due_date = '2022-01-01'. Além disso, se você usar uma data relativa, como "hoje", poderá obter um erro informando que as datas relativas não são suportadas.

Veja a seguir algumas práticas recomendadas para declarações de treinamento personalizadas:

  • Balancear o número de declarações: Alguns dos cenários mais complexos podem precisar de mais declarações do que os simples, mas tente equilibrar o número de declarações por cenário.

  • Balancear o treinamento de atributos e entidades semelhantes: Se você tiver dois atributos semelhantes e precisar fornecer dados de treinamento personalizados para um deles, também deverá fornecer a mesma quantidade de dados de treinamento para o outro. Quando os dados de treinamento se concentram apenas em um dos atributos semelhantes, o modelo pode prever demais esse atributo em relação à sua contraparte. O mesmo se aplica a entidades semelhantes. Por exemplo, a moeda de pagamento e a moeda da NFF são atributos semelhantes. Se a moeda de pagamento estiver representada em excesso nos dados de treinamento, o modelo poderá prever a moeda de pagamento mesmo quando a declaração solicitar a moeda da NFF.

    Quando você precisar ensinar o modelo a distinguir entre dois atributos semelhantes ou intimamente relacionados, equilibre a ponderação de importância fornecendo metade das declarações para um atributo e metade das declarações para o outro.

    Variar as declarações que se referem a esses atributos semelhantes. Por exemplo, aqui estão pares contrastantes de declarações para ajudar o modelo a distinguir entre amount_remaining e amount_paid:

    • informe o valor restante das NFFs aprovadas
    • mostre o valor pago para NFFs aprovadas
    • exibir o valor total a ser pago ao AAD do fornecedor
    • calcular o valor total pago ao AAD do fornecedor
    • qual é o valor devido em documentos fiscais para o AAD do fornecedor?
    • listar o valor pago nas NFFs para o AAD do fornecedor
  • Balancear o treinamento de valores que correspondem a nomes primários ou sinônimos: Digamos, por exemplo, que seu modelo tenha um atributo manager e que "gerente" também seja um valor para o atributo job do funcionário. Se quiser adicionar "Quantos gerentes" aos dados de treinamento, você deverá equilibrar esses dados de treinamento com declarações que usam o atributo manager, como "Quem é o gerente do funcionário Adam Smith", bem como declarações que usam o gerente job, como "Mostrar todos os gerentes". Dessa forma, o modelo pode aprender a diferenciar entre os dois usos. Se você não incluir exemplos para os dois tipos de uso, a habilidade poderá prever um uso em relação ao outro.

  • Diversificar frases: As melhores práticas para diversas frases para dados personalizados são semelhantes às de declarações de intenção:

    • Use frases completas.

    • Use verbos diferentes. Por exemplo: exibir, listar, mostrar, informar e ver.

    • Use vários sinônimos e paráfrases além do nome da entidade ou do atributo.

    • Use pronomes diferentes. Por exemplo: mostre-me, podemos ver, dizer-nos, quero.

    • Variar a estrutura da sentença. Por exemplo, coloque o valor do atributo próximo ao início, meio e fim das frases.

    • Se você tiver declarações com uma agregação, como AVG, também adicione declarações com outros operadores.

    • Se possível, use cláusulas diferentes, como agrupar por e onde cláusulas com condições AND e OR.

  • Diversificar Valores: Quando você usa mais de um valor nas declarações do cenário, o modelo é mais capaz de reconhecer valores diferentes. Inclua valores com diferentes comprimentos de palavra. Inclua alguns valores com caracteres especiais, como '/' e "-". Inclua alguns valores com palavras-chave especiais, como 'and'.

  • Inclua uma mistura de valores conhecidos e desconhecidos. Para atributos de lista de valores, use um conjunto representativo de valores de atributo (mas não todos) para treinar que as correspondências de lista de valores são sinais importantes. Além disso, para listas de valores que não são listas fechadas, inclua valores que não estão na lista de valores para ensiná-la a também associar frases específicas ao atributo.

Para adicionar uma declaração mapeada aos dados de treinamento:

  1. Se o botão Treinar tiver um selo vermelho, clique em ícone de trem com crachá e treine usando o Trainer Tm.

  2. Na página Entidades, vá para a guia Conjunto de Dados e clique em Entidades de Consulta.

  3. Clique na guia Dados de Treinamento.

  4. Clique em Adicionar Declaração.

    A caixa de diálogo Criar Declaração é exibida.

  5. Digite a declaração e clique em Continuar.

    A caixa de diálogo exibe a consulta OMRQL da declaração. Se ele não conseguir converter a declaração na consulta, a consulta ficará em branco.

    Observe que, se a habilidade não tiver sido treinada, ela não poderá converter a declaração em uma consulta OMRQL.

  6. Revise a consulta e corrija-a se estiver errada.

    Para obter palavras-chave e exemplos de OMRQL, consulte Referência de OMRQL.

  7. Clique em Concluído para adicionar a declaração mapeada aos dados de treinamento.

Fornecer Sugestões de Consulta para Usuários da Caixa de Diálogo SQL

Você pode ajudar os usuários a aprender sobre as consultas de banco de dados que eles podem fazer, fornecendo sugestões de preenchimento automático. Essas sugestões fornecem dicas sobre quais tipos de perguntas o modelo lógico é capaz de responder. As declarações também ajudam a habilidade no roteamento.

Para criar sugestões de preenchimento automático para uma habilidade de Diálogos SQL:

  1. Se o botão Treinar tiver um selo vermelho, clique em ícone de trem com crachá e treine usando o Trainer TM.

  2. Na página Entidades, vá para a guia Conjunto de Dados e clique em Entidades de Consulta.

  3. Clique na guia Sugestões de Preenchimento Automático.

  4. Clique em Adicionar Declaração.

    A caixa de diálogo Criar Declaração é exibida.

  5. Digite a declaração, clique fora da caixa de texto e clique em Continuar.

    A caixa de diálogo exibe a consulta OMRQL da declaração. Se ele não conseguir converter a declaração em uma consulta, a consulta ficará em branco.

    Observe que, se a habilidade não tiver sido treinada, ela não poderá converter a declaração em uma consulta OMRQL.

  6. Revise a consulta e corrija-a se estiver errada.

    Para obter palavras-chave e exemplos de OMRQL, consulte Referência de OMRQL.

  7. Clique em Concluído para adicionar a declaração mapeada às sugestões de preenchimento automático.

Encaminhar Declarações para a Conversa de Caixas de Diálogo SQL

Se sua habilidade tiver intenções ou estiver em um DA, assim como com intenções, sua habilidade precisará de declarações para ajudá-la a rotear consultas SQL para a conversa Diálogos SQL. O mecanismo de roteamento usa sugestões de preenchimento automático, dados de treinamento, declarações de roteamento geradas e declarações de roteamento criadas à mão para saber como reconhecer consultas SQL. Você pode ver cada tipo de declaração nas guias separadas da página Conjunto de Dados de Entidades de Consulta.

Na guia Dados de Roteamento Gerados, você pode gerar rapidamente 100 declarações de roteamento baseadas no modelo lógico, conforme descrito em Gerar Dados de Roteamento de Caixas de Diálogo SQL. Em seguida, você pode revisá-los, editá-los, se necessário, e aprovar ou desaprová-los. As que você aprova são adicionadas à guia Dados de Roteamento Combinados e marcadas como sintéticas ou, se você as editou, refinadas.

A guia Dados de Roteamento Combinados lista todos os tipos de conjunto de dados. Além disso, é aí que você pode adicionar manualmente dados de roteamento criados manualmente, conforme descrito em Dados de Roteamento de Caixas de Diálogo SQL do Handcraft.

Observe que o número total de declarações de preenchimento automático, treinamento, geradas e elaboradas manualmente não pode exceder 10.000. Se você exceder esse limite, verá a mensagem "O número máximo de exemplos de corpus para este bot (10000) foi atingido". Há também um limite de 120 declarações de treinamento.

Para saber mais sobre sugestões de preenchimento automático e dados de treinamento, consulte Fornecer Sugestões de Consulta para Usuários da Caixa de Diálogo SQL e Fornecer Dados de Treinamento por Meio de Declarações.

Dica:

Cada entidade tem uma guia de conjunto de dados na qual você pode ver as declarações que usam atributos dessa entidade específica.

Gerar Dados de Roteamento de Diálogos SQL

Se sua habilidade tiver intenções ou estiver em um DA, assim como com intenções, sua habilidade precisará de declarações para ajudá-la a rotear consultas SQL para a conversa Diálogos SQL. Além das sugestões de preenchimento automático, dados de treinamento e dados de roteamento criados manualmente, o mecanismo de roteamento usa declarações de roteamento geradas que você cria na guia Dados de Roteamento Gerados no Conjunto de Dados de Entidades de Consulta. As declarações geradas representam uma ampla cobertura de perguntas sobre todas as entidades de consulta no modelo lógico.

Para gerar dados de roteiro:

  1. Se o botão Treinar tiver um selo vermelho, clique em ícone de trem com crachá e treine usando o Trainer TM.

  2. Na página Entidades, vá para a guia Conjunto de Dados e clique em Entidades de Consulta.

  3. Clique na guia Dados de Roteamento Gerados.

  4. Clique em Gerar.

    A caixa de diálogo Gerar dados de roteamento é exibida.

  5. No campo Selecionar entidades, selecione Todas. Na primeira vez que gerar os dados de roteamento, você deverá gerar dados para todas as entidades. Depois de gerar o conjunto inicial, você poderá voltar e gerar para entidades específicas se houver necessidade.

  6. Clique em Gerar.

    A habilidade gera 100 declarações, que refletem perguntas que o modelo lógico pode responder.



  7. Revise os dados gerados e edite qualquer um que precise de refinamento.

    Dica:

    A declaração não será editável se tiver sido aprovada. Se você quiser alterar uma declaração aprovada, desaprová-la, editá-la e depois aprová-la novamente.
  8. Exclua as entradas quando necessário e aprove o restante.

    As declarações aprovadas são adicionadas aos dados de roteamento combinados. Se você editou uma declaração, seu subtipo de roteamento na guia Dados de Roteamento Combinados será Refinado. Caso contrário, ele será Sintético.

Dados de Roteamento de Diálogos SQL do Handcraft

Se houver consultas SQL válidas que o DA ou a habilidade não esteja roteando para a conversa SQL, você precisará adicionar essas declarações aos dados de roteamento na guia Dados de Roteamento Combinados DA página Conjunto de Dados de Entidades de Consulta.

Para adicionar dados de roteamento criados manualmente:

  1. Se o botão Treinar tiver um selo vermelho, clique em ícone de trem com crachá e treine usando o Trainer TM.

  2. Na página Entidades, vá para a guia Conjunto de Dados e clique em Entidades de Consulta.

  3. Clique na guia Dados de Roteamento Combinados.

  4. Clique em Adicionar Declaração.

    A caixa de diálogo Criar Declaração é exibida.

  5. Digite a declaração e clique fora da caixa de texto.

  6. Clique em Continuar.

  7. Revise a consulta OMRQL para verificar se seus resultados responderiam à consulta. Caso contrário, corrija a consulta e clique em Reinterpretar. Consulte Referência OMRQL para obter as palavras-chave de consulta OMRQL.

  8. Clique em Concluído.

    A declaração é adicionada aos dados com o subtipo de roteamento definido como Feito à Mão.

Configurar Apresentação de Entidades e Atributos

Veja a seguir as ações que você pode fazer para controlar quando e como as linhas e os atributos da entidade são exibidos nos resultados:

Normalmente, o especialista em banco de dados e o designer de conversas trabalham juntos nessa tarefa, pois um tem experiência em esquema de banco de dados e o outro tem familiaridade com as expectativas do usuário.

Você pode testar suas alterações clicando em Visualizar para abrir o testador de conversas e informar uma declaração para recuperar os dados apropriados.

Dica:

A maioria das alterações que você fizer exigirá um novo treinamento do analisador de linguagem natural (PNL). Ao testar suas alterações, se o ícone Treinar tiver um selo vermelho (ícone de trem com crachá), primeiro você precisará clicar em Treinar e concluir o processo de treinamento.

Configurar para Exibir Formulário ou Tabela

A habilidade pode exibir os resultados da entidade como uma tabela, um formulário ou um formulário de tabela (no qual você pode expandir uma linha para ver mais detalhes no modo de formulário). Use os campos de conversão de layout na guia Apresentação da entidade para configurar quando os resultados devem ser exibidos em cada modo.

Por padrão, a habilidade exibe cada linha na resposta como um formulário, a menos que o número de linhas exceda um limite especificado para Usar layout de formulário para esse número de linhas ou menos. Aqui estão exemplos de uma resposta no modo de formulário e no modo de tabela:


A seguir, descrição de sql-results-form.png
Descrição da ilustração sql-results-form.png


A seguir, descrição de sql-results-table.png
Descrição da ilustração sql-results-table.png

No caso em que o número de colunas excede um limite, a habilidade exibe um formulário de tabela. Com um formulário de tabela, somente o número especificado de colunas é exibido e o usuário pode expandir o formulário para ver os outros atributos. Use Alternar para layout de formulário de tabela quando o número de colunas exceder esse número para especificar o limite. Veja um exemplo de layout de formulário de tabela para o limite de coluna 2.


A seguir, descrição de sql-results-table-form.png
Descrição da ilustração sql-results-table-form.png

Exibir uma ou duas seções horizontais no formulário

Por padrão, no modo de form, a habilidade exibe todos os atributos de resultado um abaixo do outro. Para economizar espaço, você pode definir Número de Seções Horizontais no Layout do Formulário como 2 para exibir duas colunas de atributos.

Definir o Título dos Resultados

Por padrão, a habilidade usa o nome da entidade de consulta para o título dos resultados, mas você pode usar o Nome para Exibição na guia Apresentação para definir outro título.

Observe que depois de definir o nome para exibição, você não poderá limpar o campo.

Definir a Ordem de Classificação Padrão de uma Entidade

Você pode especificar uma ordem de classificação padrão para a habilidade usar sempre que a declaração do usuário não especificar uma. Para definir o padrão, vá para a guia Geral da entidade, clique em Adicionar Ordem de Atributo, selecione um atributo e selecione sua ordem (Crescente ou Decrescente). Você pode continuar clicando em Adicionar Ordem de Atributo para adicionar mais atributos à ordem de classificação.

Definir os Atributos a Serem Incluídos Quando Não Especificados pela Declaração

Se a declaração não nomear atributos, você provavelmente desejará que os resultados incluam alguns campos essenciais. Você pode usar Atributos Padrão na guia Apresentação da entidade para especificar esses campos. Por exemplo, para uma entidade invoices, talvez você queira exibir invoice_num, invoice_date e invoice_amount quando nenhum atributo for nomeado.

Observe que você não pode adicionar atributos do tipo entidade de consulta à lista de atributos padrão.

Definir Quais Atributos Sempre Incluir nos Resultados

Quando uma declaração identifica atributos específicos, talvez você queira que o resultado inclua não apenas os atributos solicitados, mas também algum contexto. Por exemplo, se alguém informar "mostrar valores da fatura", os dados não farão sentido se mostrarem apenas os valores invoice_amount e não algum contexto de identificação como invoice_num. Use Atributos Mínimos na guia Apresentação da entidade para identificar os atributos mínimos.

Não é possível adicionar atributos do tipo entidade de consulta à lista de atributos mínimos.

Configurar o Tamanho da Página de Resultados

Use o Número máximo de linhas por página na guia Apresentação da entidade para definir quantas linhas serão exibidas de uma só vez.

O usuário pode clicar em botões para navegar pelos resultados.

Adicionar Botões e Vínculos aos Resultados

Você pode adicionar botões e links aos resultados de uma entidade de consulta no nível global e no nível de linha. Uma ação de linha aparece em cada linha e uma ação global aparece abaixo dos resultados.

Por exemplo, para uma entidade de funcionário, você pode adicionar uma ação global que vincule à página de pesquisa de funcionário da empresa. No nível da linha, você pode adicionar uma ação para uma consulta de acompanhamento comum, como uma consulta sobre o departamento do funcionário.

Você adiciona ações na guia Apresentação da entidade. Se houver mais de uma ação, você poderá indicar a sequência na qual as ações serão exibidas. Para tipos de ação QUERY, você precisará fornecer uma consulta OMRQL. Para tipos de ação de URL, você precisará definir o URL.

Para ações de acompanhamento no nível da linha, você pode usar ${row.attributeName} para fazer referência aos valores de atributo de cada linha. Por exemplo, select * from Emp WHERE dept.loc = "${row.loc}". No tempo de execução, o botão de cada linha terá um valor diferente para a consulta. Esta sintaxe só está disponível para ações no nível da linha.

Opcionalmente, é possível restringir quando a ação é exibida. Por exemplo, você pode ter uma ação de linha para mostrar as subordinações diretas de um funcionário, que deve aparecer somente se o cargo do funcionário for gerente. Para fazer isso, alterne Expressão de Visibilidade para Ativado e forneça uma expressão FreeMarker, como ${row.job = 'MANAGER'}.

Observação

As ações de linha aparecem como botões ou links em cada linha em um formulário ou layout de formulário de tabela. No entanto, eles não aparecem nos layouts de tabela.

Adicionar um Atributo Personalizado

Você pode adicionar seus próprios atributos personalizados para exibir informações adicionais, como valores derivados ou calculados.

  1. Na guia Atributos da página de entidade, clique em + Adicionar Atributo e forneça um nome e um tipo canônicos.

  2. Na guia Idioma Natural, forneça um nome principal e, opcionalmente, adicione sinônimos.

  3. Na guia Mapeamento de Backend, selecione Expressão SQL e adicione a expressão.

Se a expressão fizer referência a uma coluna, use o nome da coluna do modelo físico (esquema de banco de dados) e anexe ${alias}. Por exemplo, para uma entidade invoices, você pode adicionar um atributo amount_to_pay com a expressão ${alias}invoice_amount + ${alias}discount_taken em que:

  • invoice_amount e discount_taken são nomes de colunas físicas existentes na tabela invoices.
  • A nova coluna derivada amount_to_pay é a soma dos valores das colunas físicas invoice_amount e discount_taken.

Você pode usar esta tabela para determinar que tipo usar para o atributo:

Tipo Quando usar Exemplos
Número Os valores são apenas numéricos e não estão restritos a uma lista definida. ID numérico do funcionário, valor da fatura
Data O valor é uma data sem uma hora. Data de admissão
Data/hora O valor pode ter uma data e uma hora. Data e hora de partida
Entidade O atributo está associado a uma entidade de lista de valores. Observe que, se a lista de valores enumerar todos os valores válidos (ou seja, uma lista fechada) e os valores raramente forem usados em declarações de linguagem natural, você deverá adicionar sinônimos para os valores na lista. status (fechado), nomes de fornecedores (aberto)
String Use para texto que possa conter números e caracteres nos quais não faça sentido associar a uma lista de valores. Número alfanumérico da fatura, descrição do produto
Entidade de consulta Só use quando precisar vincular a outra entidade de consulta. Sem exemplos
Booleano Não usar. Não aplicável

Configurar Apresentação Dinamicamente Usando Processadores de Eventos

Se quiser que a habilidade altere dinamicamente a maneira como a habilidade apresenta os resultados da consulta SQL, você poderá adicionar handlers de eventos de consulta de dados a um pacote de componentes personalizados, adicionar o pacote à habilidade como um serviço de componente personalizado e, em seguida, associar suas entidades a seus handlers específicos nas guias Apresentação da entidade. A habilidade aciona o evento de consulta de dados de uma entidade quando essa entidade de consulta é a primeira entidade nomeada na cláusula FROM (a entidade raiz).

Por exemplo, você pode adicionar dinamicamente uma contagem de linhas ao texto do cabeçalho, adicionar uma linha à tabela para mostrar uma soma ou determinar quando mostrar ou ocultar um atributo.

Para saber como criar handlers de eventos de consulta de dados, consulte Gravando Handlers de Eventos de Consulta SQL.

Definir Regras de Consulta

Veja como usar as definições de uma entidade na página Entidades para controlar as maneiras pelas quais os usuários finais podem perguntar sobre os dados e como avaliar os resultados.

Você pode testar suas alterações clicando em Visualizar para abrir o testador de conversas e informar uma declaração para recuperar os dados apropriados.

Dica:

Algumas das alterações que você fizer exigirão um novo treinamento do analisador de linguagem natural (PNL). Ao testar suas alterações, se o ícone Treinar tiver um selo vermelho (ícone de trem com crachá), primeiro você precisará clicar em Treinar e concluir o processo de treinamento.
  • Identificar Qual Atributo Usar para Medição ou Comparação: Se a declaração solicitar a comparação de itens de entidade com um número ou solicitar a classificação das entidades usando um superlativo como maior ou menor, qual atributo mensurável, se houver, a habilidade deve usar para executar a comparação? Digamos, por exemplo, que os usuários perguntem sobre o maior fornecedor; talvez você queira que a habilidade use o atributo rating para comparações. Para especificar qual atributo usar para medir ou comparar, vá para a guia Geral da entidade e selecione o atributo na lista suspensa Medir por. Se a classificação for oposta à ordem numérica, como 5 sendo melhor que 1, você também deverá definir a Inverter Comparação do atributo como verdadeira em sua guia Informações Gerais.

  • Especificar Como Comparar Atributos Mensuráveis: Por padrão, os valores de atributos mensuráveis são comparados usando a ordem numérica, em que 1 é menor que 5. No entanto, às vezes é mais apropriado inverter a comparação onde 1 é melhor do que 5. Por exemplo, ao observar os resultados da corrida, os 5 melhores horários são os valores mais baixos nos resultados. Para inverter comparações de um atributo, defina a Inverter Comparação do atributo como verdadeira em sua guia Informações Gerais. Observe que essa configuração também afeta a ordem de classificação do atributo.

  • Permitir Correspondência Parcial para Strings: Se você espera que os usuários deixem frequentemente caracteres ou valores à esquerda ou à direita, como "gerente" em vez de "gerenciador de departamento", considere ativar a correspondência parcial. Quando a correspondência parcial está ativada, a "cláusula where" do SQL gerada usa upper (<column-name>) LIKE UPPER(%<string>%) em vez de = <string>. Você pode ativar a correspondência parcial na guia Informações Gerais do atributo. Observe que o comportamento de correspondência parcial para atributos de entidade é diferente do comportamento de correspondência difusa para listas de valores.

  • Especifique como resolver datas e horas ambíguas: Para atributos do tipo data ou data/hora, você pode especificar se valores ambíguos, como "Quarta-feira", devem ser resolvidos para o passado, o futuro ou a data ou hora mais próxima. Você pode definir isso usando a Preferência Temporal na guia Informações Gerais do atributo.

    ADVERTÊNCIA:

    Lembre-se de que definir a Preferência Temporal como a data ou hora mais próxima só funciona para entrada de datas e horas fixas, como "Quarta-feira". Se um usuário informar um valor de duração, como "dois dias", a consulta não será resolvida, pois um valor de duração é o mesmo para passado e futuro. A menos que você tenha certeza absoluta de que um usuário nunca informará um valor de duração, defina apenas a Preferência temporal como passada ou futura.

    Dica:

    Se um atributo às vezes puder ser padronizado para o passado e às vezes para o futuro, dependendo do contexto, considere a criação de atributos personalizados com diferentes preferências temporais. Por exemplo, para um atributo due_date, você pode adicionar um atributo due com uma preferência futura e um atributo overdue com uma preferência anterior.

Ativar Consultas de Linguagem Natural para Colunas Desnormalizadas

Se você tiver um atributo desnormalizado com um nome que use um padrão para identificar os atributos que a coluna representa, como PTD_LBR_CST, poderá tornar o atributo desnormalizado compreensível para o modelo de linguagem natural mapeando uma entidade normalizada para ela por meio do uso de um mapeamento de backend de expansão de coluna.

Por exemplo, digamos que você tenha uma entidade de consulta costToSales com os atributos PTD_LBR_CST, QTD_LBR_CST, YTD_LBR_CST, PTD_SUB_CST, QTD_SUB_CST, YTD_SUB_CST.

Para permitir que a habilidade associe consultas de linguagem natural a esses atributos, crie uma entidade de consulta de Custo que contenha os atributos de identificação exclusiva, como project_num, mais período, tipo e custo. Os atributos de período e tipo são do tipo entidade e fazem referência às listas de valores de período (PTD, QTD, YTD) e tipo (LBR, SUB). O mapeamento de backend do atributo de custo é uma expansão de coluna com a expressão "${period}_${type}_CST". A etapa final é adicionar o atributo de custo à entidade costToSales, que faz referência à entidade de consulta Custo para vincular as duas entidades.

Quando a consulta é "quais são meus custos de mão de obra YTD", o mapeamento de expansão da coluna de backend informa a habilidade para recuperar o valor do atributo YTD_LBR_CST, que está na entidade costToSales (supondo que os nomes principais e sinônimos necessários estejam definidos).

Teste e Reparo

À medida que define e adiciona dados de treinamento a suas entidades e atributos por meio de nomes, sinônimos, listas de valores e dados de treinamento no conjunto de dados de entidades de consulta, você vai querer testar como os dados de treinamento ajudam o analisador de linguagem natural a traduzir as declarações do usuário final em consultas SQL.

Dica:

Se o ícone Treinar tiver um selo vermelho (ícone de trem com crachá), você precisará clicar em Treinar e concluir o processo de treinamento para poder testar as declarações.

A página Entidades tem um link Testar Consultas, que abre o testador de consulta para testar suas declarações de caso de uso. No testador, você pode informar sua declaração de teste e revisar a consulta OMRQL gerada pela habilidade.



Se o testador converter a declaração em uma consulta, revise a consulta OMRQL para verificar se ela produzirá os resultados desejados. Se a consulta OMRQL não estiver correta, você precisará reparar a habilidade usando a correção apropriada:

Dica:

Considere usar Salvar como Caso de Teste para salvar algumas de suas consultas válidas no testador de batch, que você pode usar para garantir que as alterações feitas não afetem negativamente outras áreas. Consulte Monitorar com Teste em Batch de Entidade de Consulta.

Observe que algumas declarações podem não ser traduzidas corretamente devido a limitações no recurso Diálogos SQL. Em alguns casos, você pode solucionar essas limitações adicionando dados de treinamento personalizados. Consulte Solucionando Problemas de Consultas SQL.

Se o testador de consulta relatar que há dados de treinamento insuficientes, você poderá clicar em Exibir JSON para obter informações sobre como ele analisou a declaração. O valor translatable indica se o modelo suporta a consulta. O confusionSpanText pode fornecer uma pista sobre qual parte da consulta não é suportada.


Veja a seguir a descrição da consulta-tester-json.png
Descrição da ilustração query-tester-json.png

Para declarações que não podem ser traduzidas, primeiro verifique se você introduziu um erro de digitação, se sua consulta é muito vaga ou se ela está fora do escopo do modelo. Esses problemas não podem ser resolvidos pelo treinamento. Caso contrário, você poderá resolver dados de treinamento insuficientes adicionando um sinônimo ou adicionando a declaração aos dados de treinamento personalizados no conjunto de dados das entidades de consulta. Aqui estão alguns exemplos dos tipos de problemas de dados de treinamento insuficientes que você pode ser capaz de resolver adicionando dados de treinamento personalizados.

  • Confusão de atributo: Por exemplo, o status se refere ao status do pagamento ou do status de aprovação.

  • Confusão de atributo-valor: Por exemplo, "quantos gerentes existem" (ele se refere ao valor do atributo manager ou ao valor do cargo do funcionário?).

  • Valores de pesquisa que também são palavras-chave ou operadores: Por exemplo, distinguindo o sinônimo "total" do operador SUM.

Se o OMRQL for válido, você poderá testar como a habilidade converte o OMRQL em SQL clicando em Clique para testar isso no testador de conversas. O Testador de Conversas é exibido junto com os resultados.

No testador de conversas, você pode ver as instruções OMRQL e SQL na guia Caixas de Diálogo SQL. Quando não consegue traduzir a consulta, ela indica que a consulta não é traduzível e mostra qual texto causou a confusão.



Diagnóstico e Solução de Problemas de Consultas SQL

Quando uma consulta não é resolvida como você espera, pode ser porque o modelo não tem informações suficientes ou a declaração está fora do escopo. Isso também pode ser devido às limitações do SQL Dialogs.

Para casos em que o modelo não tem informações suficientes, consulte Testar e Reparar para saber como resolver os problemas. Há limitações de Diálogos SQL slso que podem impedir que o analisador de linguagem natural traduza a declaração para OMRQL corretamente. Esta seção fornece informações sobre essas limitações e maneiras de contorná-las, sempre que possível.

Limitações Gerais em Caixas de Diálogo SQL

A tabela abaixo descreve as limitações gerais em Diálogos SQL das quais você deve estar ciente. Essas limitações não têm soluções alternativas.

Categoria Limitação Exemplos de Consultas Não Suportadas
Número de entidades e atributos suportados O modelo lógico pode ter um total de 50 atributos mais entidades. Esse limite inclui quaisquer atributos virtuais e entidades criadas.  
Consulta fora do inglês Qualquer consulta em um idioma diferente do inglês. numero total de empleadas
Uso de pronomes Usando pronomes como "I", "me" e "meu" em uma declaração.
  • qual é o meu salário?
  • De quem sou eu?
  • funcionários contratados antes de mim
Perguntas Sim e Não Qualquer pergunta para a qual a resposta seja sim ou não. As Diálogos SQL só suportam consultas para as quais a resposta é um conjunto de resultados de uma consulta de tabela de dados.
  • John é um funcionário?
  • Temos algum analista no departamento de contabilidade?
  • temos menos de 30 funcionários no departamento de vendas?
Negação

Declarações que contêm palavras de negação, como "não" e "não", ou consultas para valores que indicam negação ou valores nulos.

  • quais funcionários não estão no departamento contábil?
  • quais funcionários recebem uma comissão (as consultas para comissão não são nulas)
  • Quais faturas não são pagas?
  • NFFs para fornecedor não federal (consultas para um valor contendo negação)
Operadores SQL complexos As caixas de diálogo SQL não suportam as consultas mais complexas que envolvem subconsultas, operadores SET (INTERSECT, UNION, EXCEPT e NONE), consultas que exigem operadores aritméticos e as palavras-chave EXISTS e NOT.

Embora, em uma ocasião rara, você possa encontrar uma consulta complexa que seja resolvida corretamente, para garantir resultados consistentes, considere o uso de views de banco de dados ou a criação de atributos virtuais, conforme descrito em Adicionar um Atributo Personalizado.

  • mostrar funcionários cujos salários são maiores do que o salário mais alto do departamento de vendas
  • Qual é a remuneração total obtida por cada funcionário?
  • mostrar empregos que empregam funcionários masculinos e femininos
    • selecionar cargo de emp. onde sexo = M INTERSECT selecionar cargo de emp. onde sexo = F
Operadores SQL implícitos

As Caixas de Diálogo SQL não suportam funções da cláusula SQL que não são solicitadas explicitamente. Por exemplo :

  • Implícito distinto: implicando que os resultados retornados precisam ser distintos.
  • Agregações implícitas: implicando uma operação de agregação.
  • Ordem implícita por: implicando uma ordenação dos resultados. Considere definir a Expressão de Ordem Padrão na guia Geral da entidade.

Distinto:

  • mostrar as cidades de todos os funcionários (retorna várias linhas com cidades repetidas)
  • mostrar os nomes dos departamentos em que todos os funcionários ganham mais de 10000 (retorna várias linhas com o mesmo nome de departamento, um acima de cada funcionário que ganha mais de 10.000)

Agregação:

  • quanto pagamos a todos os funcionários do departamento contábil (implica uma solicitação do salário total de todos os funcionários na contabilidade)
  • mostrar salário por departamento (implica soma)

Order by

  • mostrar todos os nomes de funcionários (o usuário pode querer classificá-los alfabeticamente, mas a ordem de classificação não está explicitamente implícita)
  • mostrar funcionários em ordem crescente (o atributo para classificação está implícito)
Suporte limitado para perguntas de acompanhamento Diálogos SQL não suportam perguntas de acompanhamento prontas para uso. Ou seja, os usuários não podem emitir uma nova pergunta de acompanhamento para atualizar a resposta.

Dica:

Você pode adicionar ações rápidas aos resultados na forma de links ou botões que executam consultas de acompanhamento comuns. Consulte Adicionar Botões e Links aos Resultados.
Aqui estão exemplos de consultas de acompanhamento para a declaração original "mostrar todos os funcionários em Seattle"
  • mostrar somente os funcionários
  • agora mostrar os gerentes
  • Qual deles ganha acima de 3000?
Nesses casos, os usuários têm que inserir a pergunta completa, como "mostrar todos os funcionários em Seattle que trabalham como funcionário".

Solução de Problemas de Consulta Básica

Categoria Descrição do Problema Exemplos de Consultas Não Suportadas Solução alternativa
Selecionar atributo Selecionando mais de 3 atributos Exiba o nome, o cargo, o salário e a comissão de todos os funcionários Adicionar dados de treinamento personalizados. Os dados de treinamento podem incluir exemplos que abrangem diferentes entidades e alguns conjuntos diferentes de 4 (ou mais) atributos.
Selecionar entidade Solicitando mais de uma entidade
  • mostrar todos os funcionários e seus departamentos
  • mostrar fornecedor e local do fornecedor para todas as NFFs
Use dados de treinamento personalizados para ensinar a entidade a gerar um atributo da segunda entidade. Por exemplo, para "mostrar o fornecedor de cada fatura", você pode adicionar dados de treinamento que mapeiam a consulta para o OMRQL: select invoiceid, vendor.vendor_name from invoices
Onde Três ou mais condições na cláusula where mostrar os funcionários que foram contratados após 2000 e trabalham no departamento de Finanças como analista Adicione dados de treinamento com exemplos que contenham várias condições
Order by Ordenando por mais de um único atributo ou entidade mostrar funcionários classificados por título e nome do cargo Adicione dados de treinamento com exemplos que contenham ordenação por 2 ou mais atributos
Group By Agrupar por mais de um único atributo ou entidade mostrar salário médio por cargo e local do departamento Adicione dados de treinamento com exemplos que contenham agrupamento por mais 2 atributos ou entidades
Agrupar por + Ter Mais de uma condição na cláusula having mostrar cargos com pelo menos 20 funcionários e salário médio superior a 30000 Adicione dados de treinamento com exemplos que contenham mais de uma condição na cláusula having
Autojunções Se uma entidade tiver um link para si mesma, esse cálculo pode não ser possível para o modelo fazer, mesmo com dados de treinamento personalizados. Aqui, as consultas estão solicitando dados do funcionário vinculados aos dados do funcionário.
  • mostrar o nome e o salário do gerente de John
  • Quais funcionários se reportam ao Chris?
Não há solução alternativa verificada.

Solução de problemas de data e hora

Categoria Descrição do Problema Exemplos de Consultas Não Suportadas Solução alternativa
Valores implícitos de data e data/hora Ao filtrar por uma data ou data/hora, você deve fornecer explicitamente o contexto para a cláusula where.

Por exemplo, em vez de dizer "quais faturas estão vencidas", você deve dizer algo como "quais faturas têm uma data de vencimento antes de hoje".

  • qual é o próximo evento?
  • quais faturas estão vencidas?
Crie um atributo virtual (por exemplo, para indicar se um evento está por vir) e, em seguida, use o treinamento personalizado para ensinar ao modelo o comportamento esperado.
Referência implícita passada ou futura Para atributos de data e data/hora, use a Preferência Temporal do atributo na guia Informações Gerais do atributo para especificar como resolver datas ou data/hora ambíguas.

As declarações que implicam que um valor ambíguo deve ser resolvido como uma data ou data/hora passada ou futura são ignoradas e a Preferência Temporal é usada.

funcionários que serão contratados na quarta-feira
    • Se a preferência temporal padrão for passada, ela será resolvida para uma data passada, mesmo que o contexto seja implicitamente futuro
Talvez você consiga criar 2 atributos derivados para resolver esse problema no cenário.
Contexto "passado" com operadores < e > As Caixas de Diálogo SQL não suportam o uso dos operadores < e > em datas ou data/hora anteriores que contêm uma duração.
  • funcionários contratados há mais de 2 dias
  • NFFs vencidas em menos de 2 dias
Nenhuma solução alternativa confiável. Tentar ensinar algo assim com treinamento personalizado pode fazer com que o modelo comece a prever incorretamente isso em outros casos.
Hora sem uma data O SQL Dialogs não suporta consultas que têm horas, mas não datas. pedidos que são entregues a 3 pm Nenhuma solução alternativa conhecida.
Datas repetitivas As Caixas de Diálogo SQL não suportam datas que especificam um valor repetido em um intervalo específico. Qual reunião acontece na primeira segunda-feira de cada mês? Nenhuma solução alternativa conhecida

Solucionando Problemas de Seleção de Atributo

Categoria Descrição do Problema Exemplos de Consultas Não Suportadas Solução alternativa
Desempenho limitado para sinônimos de entidade/atributo específicos do domínio Para sinônimos técnicos ou específicos do domínio, não comumente usados como sinônimos, o modelo pode ter dificuldade para mapeá-lo para o atributo correto

Atributo: ip_address

Sinônimo: dispositivos

Adicionar dados de treinamento personalizados. Inclua exemplos usando os sinônimos do atributo e outro conjunto de exemplos com o nome principal para garantir que o modelo não esqueça a funcionalidade existente
Atributo de identificação para entidades Implicar um atributo referindo-se apenas à entidade Mostrar documentos fiscais contendo 1234
  • Importa filtrar por número da NFF
Adicionar dados de treinamento personalizados.
  • Crie dados com exemplos usando =, LIKE, starts with e ends with (por exemplo, "mostrar todas as faturas contendo 1234")
  • Certifique-se de que os dados de treinamento tenham alguns exemplos em que o nome da entidade seja usado para se referir à própria entidade (por exemplo, "mostrar todas as faturas")
Desambiguação Em casos ambíguos com múltiplas possibilidades, o modelo não pode desambiguar. Mostrar valor para todas as faturas
  • não está claro se "valor" refere-se a "valor da fatura" ou "valor bruto"
Adicionar dados de treinamento personalizados.
  • Inclua exemplos que mapeiam o nome ambíguo para o atributo pretendido.
  • Inclua alguns exemplos usando os nomes completos (não ambíguos) das opções para esse uso ambíguo específico.
Referência de atributo implícita para valores que não estão na entidade da lista de valores Se nos referirmos a um atributo apenas por valor e esse valor não estiver presente na lista de valores (valor/sinônimo canônico)
  • Mostrar salário de todos os funcionários no ODA
    • Onde "ODA" não é um valor na lista de valores para nomes de departamentos
  • Mostrar departamentos localizados nos EUA
    • Onde "EUA" não é sinônimo de "Estados Unidos" na lista de valores do local
É possível adicionar dados de treinamento personalizados, mas eles não serão confiáveis em todos os casos. Por exemplo, o modelo pode aprender que "faturas emitidas por VALUE" devem ser mapeadas para o atributo de nome do fornecedor. Mas o modelo não pode aprender "NFFs para VALOR" ou "NFFs por valor" porque as palavras para, por, dentro etc. são muito gerais e podem ser usadas em uma ampla variedade de contextos.
Ordem do valor e nome do atributo O odel é menos robusto quando o valor é mencionado antes do nome do atributo na declaração. (Isso é mais um problema quando os valores não estão na lista de valores e para valores com várias palavras). mostrar NFFs aprovadas Adicionar dados de treinamento personalizados.
  • Crie exemplos com o valor antes do atributo nas condições, bem como alguns exemplos com atributos antes dos valores.

Solução de Problemas Agrupar por Problemas

Categoria Descrição do Problema Exemplos de Consultas Não Suportadas Solução
Agrupar por entre mais de 2 entidades Agrupamento em várias entidades com agregações
  • mostrar número de parcelas de cada fornecedor
    • onde há três entidades envolvidas: fornecedores, faturas, parcelas
  • valor total restante para cada fornecedor
    • em que o valor restante está na entidade de prestações
Você pode tentar adicionar dados de treinamento personalizados. No entanto, tentar solucionar esse problema é arriscado e exigiria muitos dados de treinamento personalizados.
Agrupar por + Ordenar por + Mín. ou Máx. Classificando entidades com base nos valores mínimo ou máximo do atributo após o agrupamento por essa entidade.
  • Mostrar todos os departamentos classificados com base no salário mais alto dos funcionários
  • mostrar todos os cargos por ordem do salário mínimo pago aos funcionários nesse cargo
Adicionar dados de treinamento personalizados.
Agrupar por + Ordenar por + Mín/Máx + Limite 1 ou Limite N Primeiro agrupe pelo atributo ou entidade, classifique pelo mínimo ou máximo de um atributo numérico e selecione a primeira linha qual departamento tem o salário mínimo mais alto Adicionar dados de treinamento personalizados.
As cláusulas Selecionar e Ter têm agregações diferentes A cláusula Select e Having tem agregações diferentes mostrar o salário médio de cada departamento que tem, pelo menos, 10 funcionários
  • a cláusula SELECT deve ter avg(invoices.amount), e a cláusula HAVING deve ter count(invoice)
Adicionar dados de treinamento personalizados.
As cláusulas Selecionar e Ordenar por têm agregações diferentes As cláusulas Selecionar e Ordenar por têm agregações diferentes mostrar o nome e a média da fatura de cada fornecedor e classificar os fornecedores em ordem alfabética com o nome do fornecedor
  • Aqui, a cláusula SELECT deve ter avg(invoices.amount), e a cláusula ORDER BY deve ter vendor_name
Adicionar dados de treinamento personalizados.
Várias agregações na cláusula Select As Caixas de Diálogo SQL suportam Cláusulas Select com uma única agregação, média mais soma e mínimo mais máximo.

Ele não suporta outras combinações, como média mais minuto, média mais soma mais máximo e contagem mais soma.

  • mostrar a média e o salário mínimo por departamento
  • mostrar a contagem e a média salarial de cada cargo
Adicionar dados de treinamento personalizados.
Cláusulas Having + Where Agrupar por consulta com uma cláusula Having e Where quais fornecedores do tipo LEGAL têm mais de 6 faturas? Adicionar dados de treinamento personalizados.

Solucionando Problemas de Entidade

Categoria Descrição do Problema Exemplos de Consultas Não Suportadas Solução alternativa
Erros de digitação  
  • Funcionários no departamento contábil
    • A contabilização de valor tem um erro de digitação
  • Departamento de emlpoyee nme John Doe
    • O atributo emlpoyee nme tem um erro de digitação
Nenhuma alternativa. Os valores de digitação não funcionarão mesmo com treinamento personalizado.
Entidades diferentes de listas de valores e expressões regulares Associando quaisquer atributos a qualquer tipo de entidade diferente da lista de valores (por exemplo: entidades de ML personalizadas)   Nenhuma alternativa.
Correspondência difusa Para correspondência difusa, apenas a haste é suportada. Faturas da Amazon
  • Onde não há contexto, e a lista de valores tem "Amazon LLC"
Adicione sinônimos na lista de valores.
Correspondência difusa A correspondência difusa não funcionará para os caracteres _ e ? NFFs pagas usando TEF DBX
  • Onde não há contexto e a lista de valores tem "DBX_EFT"
Adicione sinônimos na lista de valores.
Números em forma não numérica O SQL Dialogs suporta uma lista limitada de números que podem ser representados em outras formas (0-10, 20 e 50). Todos os outros números, se referenciados em qualquer formato que não seja numérico, não são suportados
  • mostrar faturas em que o valor devido é menor que trinta
  • mostrar faturas em que o valor devido é menor que 1 mil
  • Mostrar NFFs em que o valor devido é inferior a 1 mil
  • Mostrar NFFs em que o valor devido é menor que 1.000
Nenhuma alternativa.

Solucionando Outros Problemas

Categoria Descrição do Problema Exemplos de Consultas Não Suportadas Solução alternativa
2 ou mais filtros numéricos Duas cláusulas Where com números (se este é o mesmo atributo ou um atributo diferente)
  • Funcionários cujo salário seja superior a 10000 e comissão seja pelo menos 2000
  • Funcionários cujo salário seja inferior a 2000 ou igual a pelo menos 5000
Adicionar dados de treinamento personalizados.
Ordem dos superlativos

Pedindo as N entidades superior ou inferior.

Observação

O modelo é mais robusto com a parte superior do que a parte inferior
Mostrar o melhor funcionário
  • O OMRQL ideal é "SELECT * FROM Emp ORDER BY * DESC LIMIT 1"
  • No entanto, o modelo tem problemas com order by *
Adicionar dados de treinamento personalizados.
Atributos nos quais as agregações são pré-calculadas Se o esquema tiver agregações pré-calculadas, como total_amount, que já armazena a soma ou total_servers, que armazena a contagem total de servidores, o modelo poderá ficar confuso entre a necessidade de usar a função SUM/COUNT ou o atributo com a agregação pré-calculada. Mostrar o valor total do documento fiscal 1234
  • Em que total_amount é um atributo derivado, mas o modelo pode prever SUM(amount)
Adicionar dados de treinamento personalizados.
Selecionar padrão O modelo, às vezes, prevê o nome ou o id da entidade, em vez de selecionar *.

Esse é um erro raro e o impacto não é crítico, pois o usuário vê o atributo mínimo em vez dos atributos padrão da entidade.

Mostre as NFFs que foram aprovadas.
  • O OMRQL ideal é "SELECT * de faturas em que approval_status = 'aprovado'"
  • No entanto, o modelo prevê "select invoice_num"
Adicione dados de treinamento personalizados, se isso for realmente um problema

Monitore e melhore

À medida que cria e testa sua habilidade, você pode usar Insights e testes em lote para monitorar o quão bem a habilidade está atingindo seus objetivos e expor áreas que precisam de melhorias. À medida que você entrar na fase de teste e, eventualmente, liberar a habilidade para o público, continuará a executar monitoramento e teste periódicos.

Monitorar Usando Insights

A página Insights da habilidade fornece várias métricas que você pode usar para medir o desempenho da sua habilidade de Caixa de Diálogo SQL e determinar onde fazer melhorias.

Como analista de negócios, talvez você esteja interessado nessas métricas de consulta de dados na guia Visão Geral:

  • Desempenho: Tendência de Conversas por Status (Linha) mostra o número de conversas em um determinado período e se o tráfego está tendendo para cima, para baixo ou para os lados.

  • A proporção entre Consultas Corretas e Consultas Incorretas indica o nível de satisfação dos usuários do bot com a precisão de converter declarações em consultas SQL.

  • A proporção entre conversas Concluídas e Incompletas mostra até que ponto os problemas técnicos afetam as experiências dos usuários.

  • A proporção entre Total de Conversas e Consultas Não Resolvidas (OOD/OOS) ajuda a medir até que ponto a habilidade atende às expectativas dos usuários finais.

  • A Tendência de Conversas por Tipo e a proporção entre Total de Conversas e Conversas de Consultas de Dados mostram a proporção de declarações que são consultas SQL.

  • As Entidades de Consulta de Dados mostram quais entidades são mais consultadas.

Como um treinador de IA, você pode examinar as mensagens do usuário na guia Conversas para descobrir áreas de melhoria. Por exemplo, você pode revisar estas mensagens do usuário:

  • As mensagens do usuário Tipo: Intenção, Resultado: Incompleto indicam problemas com a conversão da declaração em uma consulta SQL. Geralmente, você pode corrigir esses problemas adicionando sinônimos ou, para consultas mais complexas, adicionando declarações mapeadas ao conjunto de dados de entidades de consulta. Observe que você também pode ver essas mensagens selecionando Erros Tratados pelo Sistema na lista drop-down Erros.

  • Tipo: Intenção, Intenção: As mensagens do usuário unresolvedIntent indicam declarações e declarações fora do escopo que a habilidade não reconhece como uma declaração de consulta de dados. Para as declarações que são consultas de dados válidas, mas a habilidade não reconhece como tal, geralmente você pode corrigir os problemas adicionando sinônimos ou mapeando as declarações para OMRQL no conjunto de dados da consulta.

  • Tipo: Consulta de Dados, Entidades mostra as mensagens do usuário por entidade de consulta.

  • Tipo: Consulta de Dados, Resultado: Incorreto mostra as mensagens que os usuários consideraram que retornaram resultados incorretos. Verifique se os resultados estão incorretos e, em caso afirmativo, adicione sinônimos, listas de valores e entradas de conjunto de dados de consulta, conforme apropriado.

Monitorar com Teste em Batch de Entidade de Consulta

Como um treinador de IA, é uma boa prática criar testes em lote para garantir que a melhoria de uma área não impacte negativamente outra. Você também pode usar testes em batch para garantir que as alterações no modelo lógico não tenham efeitos adversos no treinamento personalizado ou no roteamento para conversas SQL.

Assim como no teste em batch para declarações de intenção, talvez você queira reservar cerca de 20% das consultas do mundo real que você reuniu para usar no teste em batch de consulta. Você pode executar o teste em batch periodicamente e depois de fazer alterações no modelo lógico, no treinamento personalizado ou nos dados de roteamento.

Cada caso de teste deve pertencer a uma suíte de teste; por isso, antes de criar um caso de teste, você pode primeiro criar uma suíte de teste que reflita algum aspecto do teste de consulta, como teste de falha, teste no domínio ou teste fora do domínio. Fornecemos um conjunto chamado Conjunto de Testes Padrão. Você poderá designar casos de teste a essa suíte de teste se ainda não tiver criado qualquer outro.

Você pode adicionar um caso de teste a um teste em batch de duas maneiras:

  • Depois de testar uma declaração no Testador de Consulta, você pode selecionar uma suíte de teste na lista drop-down Salvar como Caso de Teste para salvá-la nessa suíte.

  • Você pode clicar em + Caso de Teste na guia Suítes de Teste no testador de batch.

Para acessar o testador de batch:

  1. Na página Entidades, clique em Testar Consultas.

    O Testador de Consulta é aberto.

  2. Clique em Ir para Casos de Teste.

    Na guia Suítes de Teste, selecione um conjunto de testes e execute todos os casos de teste ou selecione e execute casos específicos. Os resultados são mostrados na página Resultados do Teste. Demora algum tempo para que os testes sejam concluídos. Você sabe que a execução foi concluída quando Em Andamento mostra 0.

Referência OMRQL

Estas são as palavras-chave que você pode usar ao definir consultas OMRQL para as declarações adicionadas ao conjunto de dados de entidades de consulta. Observe que você usa nomes canônicos, e não nomes primários e sinônimos

Componente Palavras-chave OMRQL Exemplo OMRQL Constraints
Componentes Básicos
  • SELECIONAR
  • *
  • FROM
SELECT * FROM Func O OMRQL não pode nomear atributos que não são referenciados na declaração.
Filtragem WHERE Funcionário WHERE salário > 100000 Nenhum.
Vinculando Entidades

Consulte Atributos de Link para obter uma explicação de como isso funciona.

. (ponto). SELECT * FROM Funcionário WHERE Departments.location = 'NYC' Nenhum.
Ordenando
  • CLASSIFICAR POR
  • LIMIT
  • ASC
  • Descrição
SELECT nome FROM Funcionário ORDER BY salário DESC LIMIT 10 O OMRQL só poderá ordenar dados usando ORDER BY <ATTR> [LIMIT N] se a declaração incluir a ordem da palavra ou seus sinônimos de linguagem natural, como classificados, ordenados, mais altos e menores.
Ordenação sem um Atributo Específico

O asterisco (*) é usado em conjunto com ORDER BY quando um usuário solicita o pedido de algo sem especificar por que solicitar. Por exemplo, "mostre os 10 principais funcionários" (desmarque por qual atributo precisamos ordenar). Em seguida, o backend substitui o * por um atributo padrão pré-especificado (measure_by).

ORDENAR POR * SELECT nome FROM Employee ORDER BY * DESC LIMIT 10 ORDER BY * só funciona de ponta a ponta quando o valor "measure_by" é definido para a entidade na IU
Funções Agregadas
  • COUNT
  • DIFERENTE
  • AVG
  • SUM
  • Mínimo
  • MAX
SELECT AVG(sal) do Funcionário O OMRQL só poderá conter DISTINCT se a declaração contiver essa palavra ou um sinônimo de linguagem natural, como diferente ou exclusivo.
Agrupamento
  • GROUP BY
SELECT local, AVG(Employees.salary) FROM Departamento GROUP BY local A cláusula FROM deve conter a entidade à qual o atributo group by pertence
Agrupamento por Entidade GROUP BY * SELECT *, MAX(Employees.salary) FROM Departamento GROUP BY *

Observação: Isso agrupa pela entidade na cláusula from (O backend converte Agrupar por * em Agrupar por a chave primária da entidade raiz)

 
Agrupando e Filtrando COM SELECT local FROM Departamento GROUP BY local HAVING AVG(Employees.salary) < 4000  
Operadores de Comparação
  • =
  • !=
  • <>
  • >
  • >=
  • <
  • <=
  • COMO
  • NÃO É DIFERENTE
  • ENTRE
  • IN
  • NOT IN
SELECT * do Departamento WHERE nome IN ('Vendas', 'HR') Para os operadores >, >=, < e <=, a declaração deve conter um sinônimo de linguagem natural equivalente, como maior que, pelo menos, menor que e no máximo.

Se a declaração não contiver um sinônimo de operador, o OMRQL deverá conter =.

O OMRQL só pode conter LIKE se a declaração contiver essa palavra ou um sinônimo de linguagem natural, como inclui, contém ou substring.

A OMRQL só poderá conter BETWEEN se a declaração contiver essa palavra ou um sinônimo de linguagem natural, como no intervalo de

Operadores Lógicos
  • AND
  • ou
  • NOT
SELECT nome FROM Funcionário WHERE salário > 10000 AND função = 'VP' Nenhum.

Todos os valores na instrução OMRQL devem corresponder exatamente ao valor e ao formato do banco de dados. Tome, por exemplo, a declaração "quem é o funcionário cujo nome é Jones". Se os valores do banco de dados para o atributo name tiverem todas as letras em maiúsculas, o valor name também deverá ter todas as letras em maiúsculas. Isso é "SELECT * FROM Emp WHERE name = 'JONES'".

Quando a declaração que você está mapeando usa um sinônimo para o valor real do banco de dados, esse sinônimo deve ser definido para o valor na lista de valores e o OMRQL deve usar o valor real do banco de dados. Por exemplo, se a declaração for "mostrar o departamento cujo local é o big apple", "big apple" deverá ser definido na lista de valores dept_loc como sinônimo do valor "NEW YORK" e o OMRQL deverá ser "SELECT * FROM Dept WHERE loc = 'NEW YORK'".

Veja alguns exemplos de como escrever OMRQL para suas declarações:

Declaração SQL OMRQL Comentários
Mostre-me todos os funcionários que trabalham como funcionário SELECT * FROM Fun WHERE cargo = 'CLERK' SELECT * FROM Fun WHERE cargo = 'CLERK' OMRQL é idêntico ao SQL.
Mostre o número de funcionários que trabalham no departamento de vendas SELECT COUNT(*) FROM Fun AS T1 JOIN Depto AS T2 ON T1.deptno = T2.deptno WHERE T2.dname = 'SALES' SELECT COUNT(*) FROM Fun WHERE dept.dname = 'VENDAS' Em vez de uma JOIN, use "link_attribute.attribute_name" para fazer referência a um atributo de outra entidade.
Adams é membro de qual departamento? SELECT * FROM Depto AS T1 JOIN Emp AS T2 ON T1.deptno = T2.deptno WHERE T2.ename = 'Adams' SELECT * FROM Depto WHERE emp.ename = 'ADAMS' Em vez de uma JOIN, use "link_attribute.attribute_name" para fazer referência a um atributo de outra entidade.
Qual é o local do departamento e a função do funcionário Adams SELECIONE T1. LOCAL, T2. JOB DO DEPARTAMENTO T1 JUNTE-SE AO EMP T2 EM T1. NO DO DEPARTAMENTO = T2. DEPTNO ONDE T2. ENAME = 'ADAMS' SELECT loc, emp.job FROM Depto WHERE emp.ename = 'ADAMS' Observe como o OMRQL é mais simples de gravar do que o SQL.
Quantos funcionários existem para cada função? SELECT COUNT(*), cargo FROM Fun GROUP BY cargo SELECT COUNT(*), cargo FROM Fun GROUP BY cargo OMRQL é idêntico ao SQL.
Qual funcionário tem o salário mais alto? SELECT * FROM Emp ORDER BY salário DESC LIMIT 1 SELECT * FROM Emp ORDER BY salário DESC LIMIT 1 OMRQL é idêntico ao SQL.
Exiba o nome do funcionário e o nome do departamento ordenados pelo salário em ordem crescente SELECT T1.ename, T2.dname FROM Emp AS T1 JOIN Depto AS T2 ON T1.deptno = T2.deptno ORDER BY T1.sal ASC SELECT nome, dept.dname FROM Emp ORDER BY salário ASC Observe como o OMRQL é mais simples de gravar do que o SQL.
Número de funcionários em cada local SELECT COUNT(*), loc FROM Emp AS T1 JOIN Depto AS T2 ON T1.deptno = T2.deptno GROUP BY T2.loc SELECT loc, COUNT(emp) de Depto GROUP BY loc Com GROUP BY, quando estamos contando uma entidade vinculada, usamos uma nova sintaxe COUNT(LINK) em vez de COUNT(*). Isso torna OMRQL mais legível do que o SQL.
Exibir os locais com salário médio de pelo menos 40000 SELECT T2.nome FROM Emp AS T1 JOIN Depto AS T2 ON T1.no Depto = T2.no Depto GROUP BY T2.nome HAVING AVG(T1.sal) >= 40000 SELECT loc de Dept GROUP BY loc HAVING AVG(emp.sal) <= 40000 Um exemplo de GROUP BY com a cláusula HAVING.
Salário médio de funcionários em cada departamento SELECT AVG(T1.sal), T2.dno FROM Emp AS T1 JOIN Depto AS T2 ON T1.deptno = T2.deptno GROUP BY T2.dno SELECT *, AVG(sal) de Dept GROUP BY * A meta aqui é agrupar por um atributo exclusivo na entidade "departamento". A chave primária é o candidato mais adequado, mas a exibição da chave primária pode nem sempre ser útil.

No OMRL, agrupamos por *. O backend agrupará pela chave primária e também exibirá os atributos mínimos da entidade para tornar o resultado mais amigável ao usuário

Mostre o local e o salário mínimo dos funcionários de cada departamento SELECT T2.dno, T2.loc, MIN(T1.sal) FROM Emp AS T1 JOIN Depto AS T2 ON T1.deptno = T2.deptno GROUP BY T2.dno, T2.loc SELECT *, loc, MIN(sal) de Dept GROUP BY *, loc Aqui, ainda queremos agrupar pela entidade de departamento, mas a declaração também está solicitando especificamente a exibição do local dos departamentos. Observe como as cláusulas SELECT e GROUP BY têm um * e os atributos de exibição solicitados.
Exiba o nome e o local do departamento com a média salarial mais alta SELECT T2.name, T2.loc FROM Emp AS T1 JOIN Depto AS T2 ON T1.deptno = T2.deptno GROUP BY T2.name ORDER BY AVG(T1.sal) LIMIT 1 SELECT *, name, loc from Dept GROUP BY *, name, loc ORDER BY AVG(emp.sal) LIMIT 1 Outro exemplo de agrupamento por uma entidade e exibição dos atributos solicitados, desta vez com ORDER BY LIMIT 1
Mostrar os 10 principais funcionários SELECT * de Emp ORDER BY classificação LIMIT 10 SELECT * de Emp ORDER BY * LIMIT 10 Supondo que "melhores funcionários" impliquem ordenados por sua classificação, a classificação será definida como o atributo "measure_by" para a entidade Emp

Atributos do Link

Com exceção da vinculação de entidades, os componentes OMRQL são semelhantes ao SQL. Em vez de uma SQL JOIN, você usa um par de atributos de link para vincular uma entidade a outra. O atributo de link tem nomes primários e sinônimos que definem o relacionamento entre as entidades. Por exemplo, um link de atributo de funcionário/departamento com um relacionamento de 1 a 1 pode ter um nome principal "departamento" e os sinônimos "funciona em", "pertence a" e "equipe". Um link de atributo de departamento/funcionários com um relacionamento de 1-muitos pode ter o nome principal "employees" e os sinônimos "members" e "workers".

Além dos atributos típicos de link de chave primária/chave estrangeira, você também pode ter estes tipos de atributos de link:

  • Vários atributos de link de uma entidade para outra que definem vários relacionamentos semânticos.
  • Um atributo de link de uma entidade para ela mesma que implica uma autojunção.
  • Um atributo de link para uma tabela de interseção em decorrência de uma junção muitos para muitos