

# Usar o reconhecimento de contexto com o Amazon Q Data Integration no AWS Glue
<a name="q-context-awareness"></a>

 Agora você pode criar trabalhos de processamento de dados com mais eficiência com a geração de código PySpark DataFrame baseada em consultas e com reconhecimento de contexto no Amazon Q Data Integration. Por exemplo, é possível usar esse prompt para gerar o código PySpark: "crie um trabalho para carregar dados de vendas da tabela 'analytics.salesorder' do Redshift usando a conexão 'erp\_conn', filtre o valor do pedido abaixo de 50 dólares e salve no Amazon S3 em formato parquet". 

 O Amazon Q gerará o script com base em seu prompt e configurará o fluxo de trabalho de integração de dados com os detalhes fornecidos pela sua pergunta, como configurações de conexão, detalhes do esquema, nomes de bancos de dados/tabelas e especificações de colunas para transformações. Informações confidenciais, como senhas de opções de conexão, continuam a ser editadas. 

 Se as informações necessárias não forem fornecidas no seu prompt, o Amazon Q colocará espaços reservados nos quais você precisará atualizar o código gerado com os valores apropriados antes de executá-lo. 

 Veja a seguir exemplos de como usar o reconhecimento de contexto. 

## Exemplo: interações
<a name="q-context-awareness-examples"></a>

### Ler um arquivo do Amazon S3 e gravar em um bucket do Amazon S3
<a name="q-context-awareness-examples-generated-script-1"></a>

 Prompt: `Create an AWS Glue spark job that reads a file s3://amzn-s3-demo-bucket-input-bucket-name/input-filename.csv and saves it into the parquet file under directory s3://amzn-s3-demo-bucket-output-bucket-name/output-s3-prefix/` 

```
import sys
from awsglue.transforms import *
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

sc = SparkContext.getOrCreate()
spark = SparkSession.builder.getOrCreate()

# Script generated for node S3DataSource
S3DataSource_dsource1 = spark.read.format("csv").load(
    "s3://amzn-s3-demo-bucket-input-bucket-name/input-filename.csv"
)

# Script generated for node S3DataSink
S3DataSource_dsource1.write.format("parquet").mode("append").save(
    "s3://amzn-s3-demo-bucket-output-bucket-name/output-s3-prefix/"
)
```

![Um exemplo de solicitação de integração de dados do Amazon Q no AWS Glue para um script de ETL gerado.](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/context-awareness-lakehouse-example.gif)


### Obter dados do Lakehouse e gravar no banco de dados
<a name="q-context-awareness-examples-generated-script-2"></a>

 Prompt: `write an ETL script to read from a Lakehouse table my-table in database my-database and write it to a RDS MySQL table my-target-table` 

 Para campos em que você não forneceu informações (por exemplo, o connectionName obrigatório destina-se ao coletor de dados do MySQL e o padrão é um espaço reservado <connection-name> no código gerado), um espaço reservado é mantido para você preencher as informações necessárias antes de executar o script. 

 Script gerado: 

```
import sys
from awsglue.transforms import *
from pyspark.context import SparkContext
from pyspark.sql import SparkSession
from connectivity.adapter import CatalogConnectionHelper

sc = SparkContext.getOrCreate()
spark = SparkSession.builder.getOrCreate()

# Script generated for node S3DataSource
S3DataSource_dsource1 = spark.read.format("parquet").load(
    "s3://amzn-lakehouse-demo-bucket/my-database/my-table"
)

# Script generated for node ConnectionV2DataSink
ConnectionV2DataSink_dsink1_additional_options = {"dbtable": "my-target-table"}
CatalogConnectionHelper(spark).write(
    S3DataSource_dsource1,
    "mysql",
    "<connection-name>",
    ConnectionV2DataSink_dsink1_additional_options,
)
```

![Um exemplo de solicitação de integração de dados do Amazon Q no AWS Glue para um script de ETL gerado.](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/context-awareness-example-interactions.gif)


### Exemplo: fluxo de trabalho de ETL completo
<a name="q-context-awareness-complex-example"></a>

 O exemplo a seguir demonstra como você pode pedir ao AWS Glue que crie um script do AWS Glue para concluir um fluxo de trabalho de ETL completo com o seguinte prompt: `Create a AWS Glue ETL Script read from two AWS Glue Data Catalog tables venue and event in my database glue_db_4fthqih3vvk1if, join the results on the field venueid, filter on venue state with condition as venuestate=='DC' after joining the results and write output to an Amazon S3 S3 location s3://amz-s3-demo-bucket/output/ in CSV format`. 

 O fluxo de trabalho contém a leitura de diferentes fontes de dados (duas tabelas do Catálogo de Dados do AWS Glue) e algumas transformações após a leitura por meio da junção do resultado de duas leituras, filtragem com base em alguma condição e gravação da saída transformada em um destino do Amazon S3 no formato CSV. 

 O trabalho gerado preencherá as informações detalhadas da fonte de dados, da transformação e da operação de sink com as informações correspondentes extraídas da pergunta do usuário, conforme mostrado a seguir. 

```
import sys
from awsglue.transforms import *
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

sc = SparkContext.getOrCreate()
spark = SparkSession.builder.getOrCreate()

# Script generated for node CatalogDataSource
CatalogDataSource_dsource1 = spark.sql("select * from `glue_db_4fthqih3vvk1if`.`venue`")

# Script generated for node CatalogDataSource
CatalogDataSource_dsource2 = spark.sql("select * from `glue_db_4fthqih3vvk1if`.`event`")

# Script generated for node JoinTransform
JoinTransform_transform1 = CatalogDataSource_dsource1.join(
    CatalogDataSource_dsource2,
    (CatalogDataSource_dsource1["venueid"] == CatalogDataSource_dsource2["venueid"]),
    "inner",
)

# Script generated for node FilterTransform
FilterTransform_transform2 = JoinTransform_transform1.filter("venuestate=='DC'")

# Script generated for node S3DataSink
FilterTransform_transform2.write.format("csv").mode("append").save(
    "s3://amz-s3-demo-bucket/output//output/"
)
```

![Um exemplo de solicitação de integração de dados do Amazon Q no AWS Glue para um script de ETL gerado.](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/context-awareness-complex-example.gif)


## Limitações
<a name="q-context-awareness-limitations"></a>
+  Transferência de contexto: 
  +  O recurso de reconhecimento de contexto só transfere o contexto da consulta anterior do usuário na mesma conversa. Ele não retém o contexto além da consulta imediatamente anterior. 
+  Suporte a configurações de nós: 
  +  Atualmente, o reconhecimento de contexto só oferece suporte a um subconjunto das configurações necessárias para vários nós. 
  +  O suporte para campos opcionais está planejado para as próximas versões. 
+  Disponibilidade: 
  +  Reconhecimento de contexto e suporte ao DataFrame estão disponíveis nos cadernos do Q Chat e do SageMaker Unified Studio. No entanto, esses recursos ainda não estão disponíveis nos cadernos do AWS Glue Studio. 