

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Interagir com o SQL generativo do Amazon Q
<a name="query-editor-v2-generative-ai"></a>

**nota**  
No momento, o SQL generativo do Amazon Q é oferecido somente nas seguintes Regiões da AWS:  
Região Leste dos EUA (Norte da Virgínia) (us-east-1)
Região Leste dos EUA (Ohio) (us-east-2)
Região Oeste dos EUA (Oregon) (us-west-2)
Região Ásia-Pacífico (Mumbai) (ap-south-1)
Região da Ásia-Pacífico (Seul) (ap-northeast-2)
Região da Ásia-Pacífico (Singapura) (ap-southeast-1)
Região da Ásia-Pacífico (Sydney) (ap-southeast-2)
Região da Ásia-Pacífico (Tóquio) (ap-northeast-1)
Região do Canadá (Central) (ca-central-1)
Região da Europa (Frankfurt) (eu-central-1)
Região da Europa (Irlanda) (eu-west-1)
Região da Europa (Londres) (eu-west-2)
Região da Europa (Paris) (eu-west-3)
Região da América do Sul (São Paulo) (sa-east-1)
Para ter informações sobre onde seus dados são processados, consulte [Cross region inference in Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/cross-region-inference.html) no *Guia do usuário do Amazon Q Developer*.

É possível interagir com o recurso SQL generativo do Amazon Q no editor de consultas do Amazon Redshift v2. Trata-se de um assistente de codificação que gera instruções SQL com base nos prompts e no esquema do banco de dados. Esse assistente de codificação está disponível enquanto você cria um notebook no editor de consultas v2. O SQL gerado destina-se ao banco de dados ao qual seu caderno está conectado.

Ao interagir com o SQL generativo do Amazon Q, faça perguntas específicas, itere quando tiver solicitações complexas e verifique se as respostas estão corretas. 

Ao fornecer solicitações de análise em linguagem natural, tente usar o máximo de especificidade para ajudar o assistente de codificação a compreender exatamente aquilo de que você precisa. Em vez de perguntar "encontre os espaços que mais venderam ingressos", dê mais detalhes como "encontre nomes/IDs dos três espaços que mais venderam ingressos em 2008". Use nomes consistentes e específicos de objeto no banco de dados quando os conhecer. Como nomes de esquema, tabela e coluna, conforme definido no banco de dados, em vez de se referir ao mesmo objeto de maneiras diferentes, o que pode confundir o assistente.

Divida solicitações complexas em várias declarações simples que sejam mais fáceis do assistente interpretar. Faça perguntas de acompanhamento de maneira iterativa para obter uma análise mais detalhada do assistente. Por exemplo, pergunte primeiro "qual estado tem mais espaços?" Em seguida, com base na resposta, pergunte "qual é o espaço mais conhecido desse estado?". 

Revise o SQL gerado antes de executá-lo para garantir a precisão. Se a consulta SQL gerada tiver erros ou não corresponder à intenção, dê instruções ao assistente sobre como corrigi-la, em vez de reformular a solicitação inteira. Por exemplo, se a consulta não tiver uma cláusula de predicado no ano, peça "Dê locais do ano de 2008".

Envie o texto dos erros que você recebe ao executar o SQL gerado de volta como prompts para o SQL generativo do Amazon Q. Ele aprende com esses erros para produzir um SQL melhor.

Adicione o esquema ao caminho de pesquisa SQL para sinalizar que o esquema deve ser usado. Por exemplo, adicione o esquema tickit quando os dados estiverem no esquema tickit em vez de no esquema público.

```
set search_path to '$user', tickit;
```

## Considerações ao interagir com o SQL generativo do Amazon Q
<a name="query-editor-v2-generative-ai-considerations"></a>

Considere o seguinte ao trabalhar no painel de chat:
+ O administrador do editor de consultas v2 da conta deve ter ativado o recurso de chat na página **Configurações do SQL generativo**.
+ Para usar o SQL generativo do Amazon Q, você precisa da permissão `sqlworkbench:GetQSqlRecommendations` na política do IAM, além de outras permissões especificadas na política gerenciada pela AWS do Editor de Consultas V2. Para obter mais informações sobre políticas gerenciadas pela AWS, consulte [Acessar o editor de consultas v2](query-editor-v2-getting-started.md#query-editor-v2-configure).
+ As perguntas devem ser escritas em inglês.
+ As perguntas devem fazer referência ao banco de dados conectado no cluster ou no grupo de trabalho. Para evitar erros de estado vazio, deve haver pelo menos uma tabela e alguns dados no banco de dados.
+ As perguntas devem fazer referência aos dados armazenados no banco de dados conectado. Eles não podem fazer referência a um esquema externo. Para obter mais informações sobre os esquemas compatíveis, consulte [Create schema](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) no *Guia do desenvolvedor de banco de dados do Amazon Redshift*.
+ Qualquer dúvida que resulte em um SQL que altere o banco de dados conectado pode resultar em um aviso.
+ A tecnologia de IA generativa é nova e pode haver erros, às vezes chamados de alucinações, nas respostas. Teste e analise todo o código em busca de erros e vulnerabilidades antes de usá-lo no ambiente ou no workload.
+ Você pode melhorar as recomendações compartilhando as consultas SQL executadas por outros usuários na conta. O administrador da conta pode executar os seguintes comandos SQL para permitir o acesso ao histórico de consultas da conta.

  ```
  GRANT ROLE SYS:MONITOR to "IAMR:role-name";
  GRANT ROLE SYS:MONITOR to "IAM:user-name";
  GRANT ROLE SYS:MONITOR to "database-username";
  ```

  Para obter mais informações sobre `SYS:MONITOR`, consulte [Amazon Redshift system-defined roles](https://docs.aws.amazon.com/redshift/latest/dg/r_roles-default.html) no *Guia do desenvolvedor de banco de dados do Amazon Redshift*.
+ Os dados são seguros e privados. Os dados não são compartilhados entre contas. As consultas, os dados e os esquemas de banco de dados não são usados para treinar um modelo de base (FM) de IA generativa. A entrada é usada como solicitações contextuais para o FM responder apenas às consultas.

# Uso do SQL generativo
<a name="query-editor-v2-generative-ai-interact"></a>

Depois que as permissões corretas forem configuradas, ao trabalhar com um notebook no editor de consultas v2, você poderá escolher um ícone para iniciar uma conversa.

**Como interagir com o chat do SQL generativo do Amazon Q para gerar SQL**

1. Na guia **Editor** do editor de consultas v2, abra um noteook.

1. Escolha o ícone de SQL generativo ![\[Generative SQL panel\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/images/qev2-amazon-q.png) e siga as instruções para fazer as perguntas ao SQL generativo do editor de consultas do Amazon Redshift v2 no painel de chat.

   Você faz perguntas em um campo de prompt, e o SQL generativo do Amazon Q responde com o SQL sugerido. Todos os erros encontrados são retornados para você no painel de chat.

1. Escolha **Adicionar ao notebook** para adicionar uma célula Markdown com o prompt e uma célula SQL com o SQL sugerido ao notebook.

1. (Opcional) Forneça feedback sobre o SQL gerado escolhendo o ícone de feedback útil ![\[Helpful feedback\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/images/qev2-thumbs-up.png) ou o ícone de feedback não útil ![\[Not helpful feedback\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/images/qev2-thumbs-down.png). Você pode categorizar o feedback não útil como `Incorrect tables/columns`, `Incorrect predicates/literals/group bys`, `Incorrect SQL structure` ou `Other`. Além disso, é possível fornecer um texto em formato livre com seu feedback sobre a precisão do SQL.

1. (Opcional) Escolha **Regenerar SQL** para gerar outra resposta para o mesmo prompt. É possível optar por **Regenerar SQL** uma vez para o prompt atual.

1. (Opcional) No painel de chat do SQL generativo, escolha o ícone ![\[More\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/images/qev2-vmore.png) **Mais** e **Atualizar banco de dados** para atualizar os metadados que descrevem o banco de dados conectado. Esses metadados incluem as definições de esquemas, tabelas e colunas no banco de dados.

# Atualização de configurações do SQL generativo como administrador
<a name="query-editor-v2-generative-ai-settings"></a>

Um usuário com as permissões do IAM corretas pode exibir e alterar **Configurações do SQL generativo** de outros usuários na mesma Conta da AWS. Esse administrador deve ter permissão `sqlworkbench:UpdateAccountQSqlSettings` na política do IAM, além de outras permissões especificadas na política gerenciada pelo AWS para o editor de consultas v2. Para obter mais informações sobre políticas gerenciadas, consulte [Permissões necessárias para usar o editor de consultas v2](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2).

**Para um administrador ativar o chat SQL generativo para todos os usuários da conta**

1. Um ícone ![\[Settings\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/images/qev2-cog.png) **Configurações** para mostrar um menu das telas de configurações diferentes.

1. Em seguida, escolha o ícone ![\[Generative SQL settings\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/images/qev2-amazon-q.png) de configurações do SQL generativo para mostrar a página **Configurações do SQL generativo do Q**.

1. Selecione **Configurações do SQL generativo do Q** a fim de ativar o recurso de SQL generativo para usuários na conta.

   Depois de ativar o SQL generativo do Amazon Q, você pode visualizar o número de prompts restantes na sua alocação. O administrador do Editor de Consultas V2 pode permitir que os usuários na conta usem o nível Amazon Q Developer Pro. Para usar o nível Pro, configure os usuários com o Centro de Identidade do IAM e inscreva cada um no nível Amazon Q Developer Pro. Para ter informações sobre como configurar o Centro de Identidade do IAM com o Amazon Redshift, consulte [Conectar o Redshift ao Centro de Identidade do AWS IAM para oferecer uma experiência de autenticação única](redshift-iam-access-control-idp-connect.md). Para ter informações sobre os preços do Amazon Q Developer, consulte [Preços do Amazon Q Developer](https://aws.amazon.com/q/developer/pricing/).

   Ao usar o nível gratuito do Amazon Q Developer, o número total de prompts de todos os usuários de uma Conta da AWS é limitado a mil por mês. Ao usar o nível Amazon Q Developer Pro, o número total de prompts que qualquer usuário individual pode enviar é limitado a mil por mês. Você pode ver o número de prompts disponíveis na página **Configurações**. Para ter informações sobre os preços do Amazon Q Developer, consulte [Preços do Amazon Q Developer](https://aws.amazon.com/q/developer/pricing/).

## Contexto personalizado
<a name="query-editor-v2-generative-custom-context"></a>

O administrador do Editor de Consultas V2 pode especificar um *contexto personalizado* para adaptar o SQL gerado ao seu ambiente. Um contexto personalizado fornece conhecimentos de domínio e preferências para oferecer controle refinado sobre a geração de SQL. Ele é definido em um arquivo JSON que pode ser carregado pelo administrador do Editor de Consultas V2 no SQL generativo do Amazon Q.

As chaves JSON usadas para personalizar o SQL gerado para um data warehouse são apresentadas a seguir.

Todas as referências de tabela precisam seguir a notação de três partes `database.schema.table`.

**Recursos**  
Um recurso especifica o escopo ou a parte de um ativo de dados ao qual o contexto personalizado é aplicado.

**ResourceId**  
Especifica um identificador único do recurso. Para um cluster do Amazon Redshift, especifique o `cluster id`. Para um grupo de trabalho do Redshift sem servidor, especifique o `workgroup name`.

**ResourceType**  
Valor válido: `REDSHIFT_WAREHOUSE`.

**TablesToInclude**  
Especifica um conjunto de tabelas que são consideradas para geração de SQL. Esse campo é essencial quando você quer limitar o escopo das consultas SQL a um subconjunto definido de tabelas disponíveis. Ele pode ajudar a otimizar o processo de geração reduzindo as referências de tabela desnecessárias. Você pode combinar esse campo com `TablesToExclude` para obter um controle mais preciso sobre a geração de consultas.

**TablesToExclude**  
Especifica o conjunto de tabelas que são excluídas da geração de SQL. Use-o quando determinadas tabelas forem irrelevantes ou não precisarem ser consideradas no processo de geração de consultas. 

**TableAnnotations**  
Fornece metadados ou informações complementares sobre as tabelas em uso. Essas anotações podem incluir descrições de tabela, notas de uso ou quaisquer outros atributos que ajudem o SQL generativo do Amazon Q a entender melhor o contexto ou a estrutura da tabela. Isso é importante para aumentar a precisão da geração de SQL por meio de definições de tabela mais claras.

**ColumnsToInclude**  
Define quais colunas das tabelas especificadas são incluídas ao gerar consultas SQL. Esse campo ajuda o SQL generativo do Amazon Q a se concentrar nas colunas relevantes e melhora o desempenho ao restringir o escopo da recuperação de dados. Ele garante que o SQL generativo do Amazon Q extraia apenas os dados necessários ao contexto de consulta específico.

**ColumnsToExclude**  
Especifica as colunas que não são consideradas na geração de SQL. Isso pode ser usado quando determinadas colunas contêm dados irrelevantes ou redundantes que não devem ser considerados pelo SQL generativo do Amazon Q. Ao gerenciar a inclusão e exclusão de colunas, é possível refinar os resultados e manter o controle sobre os dados recuperados.

**ColumnAnnotations**  
Semelhante a `TableAnnotations`, esse campo fornece anotações ou metadados específicos para colunas individuais. Essas anotações podem oferecer informações sobre as definições de coluna ou instruções especiais sobre como usá-las. Essas informações são úteis para orientar o processo de geração de SQL e garantir que as colunas sejam usadas adequadamente nas consultas.

**CuratedQueries**  
Um conjunto de exemplos de perguntas e respostas predefinidas, em que a pergunta é escrita em linguagem natural (NLQ) e a resposta é a consulta SQL correspondente. Esses exemplos ajudam o SQL generativo do Amazon Q a entender os tipos de consulta que se espera que ele gere. Eles servem como pontos de referência para melhorar a precisão e a relevância das saídas do SQL generativo do Amazon Q.

**CustomDocuments**  
Informações ou dicas adicionais fornecidas ao SQL generativo do Amazon Q, como definições, conhecimentos de um domínio específico ou explicações. Por exemplo, se sua unidade de negócios usa uma forma exclusiva para calcular um valor (por ex., “na divisão de fabricação, o total de vendas é preço \$1 receita”), isso pode ser documentado neste campo. Por fornecerem contexto adicional, esses documentos ajudam o SQL generativo do Amazon Q a interpretar melhor as entradas em linguagem natural.

**AdditionalTables**  
Especifica todas as tabelas adicionais que devem ser consideradas para geração de SQL e que não fazem parte dos dados armazenados no data warehouse. Isso permite que o SQL generativo do Amazon Q integre fontes de dados externas à sua lógica de geração de SQL, ampliando sua capacidade de lidar com ambientes de dados complexos.

**AppendToPrompt**  
Instruções ou diretrizes adicionais fornecidas ao SQL generativo do Amazon Q para orientar o processo de geração de SQL. Isso pode incluir diretivas específicas sobre como estruturar a consulta, preferências por determinados constructos de SQL ou qualquer outra instrução abrangente que melhore a qualidade da saída do SQL generativo do Amazon Q.

O exemplo de contexto personalizado apresentado abaixo mostra o formato do arquivo JSON e define o seguinte:
+ Um contexto personalizado para o data warehouse do Amazon Redshift referente ao cluster `mycluster`.
+ Tabelas e colunas específicas a serem incluídas e excluídas para ajudar a otimizar o processo de geração de SQL.
+ Anotações para as tabelas e colunas solicitadas para inclusão.
+ Exemplos de consultas com curadoria para uso do SQL generativo do Amazon Q.
+ Documentos e barreiras de proteção personalizados a serem usados ao gerar SQL.
+ A linguagem de definição de dados (DDL) para tabelas adicionais usarem ao gerar SQL.

```
{
    "resources": [
        {
            "ResourceId": "mycluster",
            "ResourceType": "REDSHIFT_WAREHOUSE",
            "TablesToInclude": [
                "database.schema.table1",
                "database.schema.table2"
            ],
            "TablesToExclude": [
                "database.schema.table3",
                "database.schema.table4"
            ],
            "ColumnsToInclude": {
                "database.schema.table1": [
                    "col1",
                    "col2"
                ],
                "database.schema.table2": [
                    "col1",
                    "col2"
                ]
            },
            "ColumnsToExclude": {
                "database.schema.table5": [
                    "col1",
                    "col2"
                ],
                "database.schema.table6": [
                    "col1",
                    "col2"
                ]
            },
            "TableAnnotations": {
                "database.schema.table1": "table1 refers to Q3 sales",
                "database.schema.table2": "table2 refers to Q4 sales"
            },
            "ColumnAnnotations": {
                "database.schema.table1": {
                    "col1": "col1 refers to Q3 sale total",
                    "col2": "col2 refers to sale location"
                },
                "database.schema.table2": {
                    "col1": "col2 refers to Q4 sale total",
                    "col2": "col2 refers to sale location"
                }
            },
            "CuratedQueries": [
                {
                    "Question": "what is the sales data for Q3",
                    "Answer": "SELECT * FROM table1"
                },
                {
                    "Question": "what is the sales data for Q4",
                    "Answer": "SELECT * FROM table2"
                }
            ],
            "CustomDocuments": [
                "in manufacturing division total sales is price * revenue",
                "in research division total sales is price * revenue"
            ],
            "AdditionalTables": {
                "database.schema.table8": "create table database.schema.table8(col1 int)",
                "database.schema.table9": "create table database.schema.table9(col1 int)"
            },
            "AppendToPrompt": "Apply these guardrails: Queries should never return the secretId field of a user."
        }
    ]
}
```

# Tutorial: como usar o recurso SQL generativo do Amazon Q com os dados TICKIT
<a name="query-editor-v2-generative-ai-example"></a>

Para criar solicitações eficientes a fim de gerar SQL, você deve aprender mais sobre o esquema do banco de dados e os dados. Os dados TICKIT consistem em sete tabelas: duas de fatos e cinco de dimensões. Os dados de exemplo contêm registros sobre vendas a participantes de eventos do entretenimento ocorridos em 2008. Para obter informações sobre o esquema de dados TICKIT, consulte [Sample database](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html) no *Guia de desenvolvedor de banco de dados do Amazon Redshift*. É possível carregar os dados do TICKIT em um banco de dados por vários métodos no console do Amazon Redshift e no editor de consultas v2. O editor de consultas v2 oferece um método para carregar dados TICKIT no banco de dados `sample_data_dev`. Para mais informações, consulte [Carregar dados em um banco de dados](query-editor-v2-loading.md). O editor de consultas v2 também oferece solicitações de exemplo para os dados do TICKIT. O cenário a seguir descreve uma conversa com SQL generativo para gerar SQL sobre os dados de exemplo do TICKIT. Nesse cenário, os dados de exemplo do TICKIT já foram criados em um banco de dados `dev` em um cluster do Amazon Redshift. 

**nota**  
Este exemplo serve para ilustrar uma conversa. As respostas do SQL generativo talvez não correspondam aos resultados usando as mesmas solicitações.

**Conversa de exemplo com o SQL generativo do Amazon Q**

1. No **Editor**, conecte-se a um cluster ou a um grupo de trabalho que contenha os dados de exemplo do TICKIT.

1. Crie um notebook vazio e escolha o ícone ![\[Generative SQL\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/images/qev2-amazon-q.png) de SQL generativo para abrir o painel de chat.

1. Insira a seguinte solicitação a fim de gerar SQL para verificar o número de registros na tabela `VENUE`:

   ```
   How many venues are there?
   ```

   ```
   SELECT
     COUNT(*) AS num_venues
   FROM
     tickit.venue
   ```

   Escolha **Adicionar ao notebook** para adicionar duas células ao notebook aberto. Uma célula Markdown "Existem quantos espaços?" e uma contendo o SQL gerado.

   Na célula SQL, escolha **Executar** para receber o resultado:

   ```
   count
   ------
   202
   ```

1. Para solicitar outra versão do SQL, escolha **Regenerar SQL** e receba a seguinte resposta:

   ```
   SELECT
     venuestate,
     COUNT(*) AS num_venues
   FROM
     tickit.venue
   GROUP BY
     venuestate
   ```

   Escolha **Adicionar ao notebook** para adicionar mais duas células ao notebook aberto. Uma célula Markdown "Existem quantos espaços?" e uma contendo o SQL gerado.

   Na célula SQL, escolha **Executar** para receber o resultado listando os estados do espaço por número:

   ```
   venuestate num_venues
   ----------------------
   MA         4	
   OH         8	
   MI         5	
   ...
   ```

1. O assistente de SQL generativo pode fazer suposições sobre o que você está perguntando. Embora não haja widgets no banco de dados, você ainda pode perguntar. Nesse caso, ele exibe uma mensagem de que não foi possível gerar SQL.

   ```
   How many widgets are there?
   ```

   ```
   I was not able to generate any SQL
   ```

1. À medida que aprende mais sobre o banco de dados, você pode fazer perguntas mais específicas para gerar SQL. Por exemplo, você sabe que o banco de dados contém dados de vendas referentes a diversos meses em 2008. Insira a seguinte solicitação a fim de gerar SQL para encontrar o número de vendas em novembro de 2008:

   ```
   How many sales were there in November 2008?
   ```

   ```
   SELECT
     COUNT(*) AS num_sales
   FROM
     tickit.sales s
     JOIN tickit.date d ON s.dateid = d.dateid
   WHERE
     d.month = 'November'
     AND d.year = 2008
   ```

   Escolha **Adicionar ao notebook** para adicionar duas células ao notebook aberto. Uma célula Markdown "Quantas vendas houve em novembro de 2008?" e uma contendo o SQL gerado.

   Na célula SQL, escolha **Executar** para receber o resultado:

   ```
   num_sales
   -----
   0
   ```

   Você percebe que não se trata do resultado que estava esperando.

1. Você percebe que o predicado `date.month='November'` espera que o mês na tabela DATE seja representado por uma abreviação do nome do mês. Você altera o predicado para `d.month='NOV'` e reexecuta o SQL.

   ```
   SELECT
     COUNT(*)
   FROM
     sales
     JOIN date ON sales.dateid = date.dateid
   WHERE
     date.month = 'NOV'
     AND date.year = 2008
   ```

   Na célula SQL, escolha **Executar** para obter novos resultados.

   ```
   count
   -----
   14261
   ```

1. Se você fizer uma pergunta que tente alterar o banco de dados conectado, uma mensagem de aviso será retornada com qualquer SQL recomendado. Insira a seguinte solicitação a fim de gerar SQL para inserir dados em uma tabela:

   ```
   Insert 1 into the venue table.
   ```

   ```
   INSERT
   ,
   UPDATE
     OR delete data
   FROM
     the database AS that could potentially change the data.Please provide a query that ONLY selects data
   ```

   ```
   I was not able to generate the correct SQL code. I generated SQL, but you'll have to edit it to work with your database.
   ```

   Se você escolher **Adicionar ao notebook** para adicionar duas células ao notebook aberto e executar o SQL, haverá falha no SQL.

   ```
   ERROR: syntax error at or near "," Position: 132 [ErrorId: 1-6546764a-011df2691778846219ce6ec2]
   ```

Esse cenário mostrou apenas algumas maneiras básicas de interagir com o SQL generativo do Amazon Q. É possível experimentar ainda mais usando essa tecnologia de IA generativa a fim de ajudar você a começar a criar SQL para consultar o banco de dados.