

# Criar trabalhos de ETL visuais
<a name="author-job-glue"></a>

## Criar trabalhos de ETL visuais com o AWS Glue Studio
<a name="build-etl-jobs-glue-studio"></a>

 O AWS Glue Studio oferece uma interface visual para criar, executar e monitorar trabalhos de Extração/Transformação/Carga (ETL) no AWS Glue. Um trabalho no AWS Glue consiste na lógica de negócios que realiza o trabalho de extração, transformação e carregamento (ETL). Com o AWS Glue Studio, é possível compor visualmente fluxos de trabalho de transformação de dados e executá-los perfeitamente no mecanismo de ETL sem servidor baseado em Apache Spark do AWS Glue. É possível criar trabalhos que movem e transformam dados entre vários armazenamentos e fluxos de dados usando uma interface de arrastar e soltar sem precisar aprender Spark ou escrever código. 

Um trabalho do AWS Glue encapsula um script que se conecta aos dados de origem, os processa e, depois, os grava no destino de dados. Normalmente, um trabalho executa scripts de extração, transformação e carga (ETL). Os trabalhos podem executar scripts desenhados para os ambientes de runtime do Apache Spark e do Ray. Os trabalhos também podem executar scripts Python de uso geral (trabalhos em shell do Python). Os acionadores do AWS Glue podem iniciar trabalhos com base em uma programação ou um evento, ou ainda sob demanda. É possível monitorar trabalhos para entender as métricas do runtime, status de conclusão, duração e hora de início.

Você pode usar scripts gerados pelo AWS Glue ou fornecer os seus próprios scripts. Com um esquema de fonte e um local de destino ou esquema, o gerador de códigos do AWS Glue Studio pode criar automaticamente um script da API Apache Spark (PySpark). Você pode usar esse script como ponto de partida e editá-lo para atingir seus objetivos.

O AWS Glue pode gravar arquivos de saída em vários formatos de dados. Cada tipo de trabalho pode ser compatível com diferentes formatos de saída. Para alguns formatos de dados, é possível gravar formatos de compressão comuns. 

### Gerenciar trabalhos do AWS Glue no Console da AWS
<a name="console-jobs"></a>

Para visualizar trabalhos existentes, faça login no Console de gerenciamento da AWS e abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). Em seguida, escolha a guia **Jobs** no AWS Glue. A lista **Jobs** exibe o local do script associado a cada trabalho, a hora em que o trabalho foi modificado pela última vez e a opção atual do marcador de trabalho. 

 Você pode criar trabalhos na seção **ETL** do console do AWS Glue. Ao criar um novo trabalho, ou depois de ter salvo seu trabalho, você pode usar o AWS Glue Studio para modificar seus trabalhos de ETL. Você pode fazer isso editando os nós no editor visual ou editando o script de trabalho no modo de desenvolvedor. Você também pode adicionar e remover nós no editor visual para criar trabalhos de ETL mais complicados. 

### Próximas etapas para criar um trabalho no AWS Glue Studio
<a name="create-jobs-next"></a>

Use o editor de trabalhos visual para configurar nós para seu trabalho. Cada nó representa uma ação, como ler dados do local de origem ou aplicar uma transformação aos dados. Cada nó adicionado ao trabalho tem propriedades que fornecem informações sobre o local dos dados ou a transformação.

As próximas etapas para criar e gerenciar seus trabalhos são:
+ [Iniciar trabalhos de ETL visual no AWS Glue Studio](edit-nodes-chapter.md)
+ [Visualizar o script de trabalho](managing-jobs-chapter.md#view-job-script)
+ [Modificar as propriedades do trabalho](managing-jobs-chapter.md#edit-jobs-properties)
+ [Salvar o trabalho](managing-jobs-chapter.md#save-job)
+ [Iniciar uma execução de trabalho](managing-jobs-chapter.md#start-jobs)
+ [Exibir informações para execuções de trabalho recentes](managing-jobs-chapter.md#view-job-run-details)
+ [Acessar o painel de monitoramento de trabalhos](view-job-runs.md#monitoring-accessing-dashboard)

## Criar fluxos visuais de ETL com o Amazon SageMaker
<a name="build-etl-jobs-smus"></a>

 Com um fluxo de trabalho do Estúdio Unificado Amazon SageMaker, é possível configurar e executar uma série de tarefas no Estúdio Unificado Amazon SageMaker. Os fluxos de trabalho do Estúdio Unificado Amazon SageMaker usam o Apache Airflow para modelar procedimentos de processamento de dados e orquestrar seus artefatos de código do Estúdio Unificado Amazon SageMaker. Para obter mais informações, consulte [Usar fluxos de trabalho no Estúdio Unificado Amazon SageMaker](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/workflow-orchestration.html). 

# Iniciar trabalhos de ETL visual no AWS Glue Studio
<a name="edit-nodes-chapter"></a>

Você pode usar a interface visual simples no AWS Glue Studio para criar seus trabalhos de ETL. Você pode usar a página **Jobs** (Trabalhos) para criar novos trabalhos. Você também pode usar um editor de scripts ou bloco e anotações para trabalhar diretamente com código no script de trabalho de ETL do AWS Glue Studio.

Na página **Jobs** (Trabalhos), você também pode ver todos os trabalhos que criou com o AWS Glue Studio ou o AWS Glue. Você pode exibir, gerenciar e executar seus trabalhos nessa página. 

 Veja também o [tutorial do blog](https://aws.amazon.com/blogs/big-data/making-etl-easier-with-aws-glue-studio/) em outro exemplo de como criar trabalhos de ETL com o AWS Glue Studio. 

## Iniciar trabalhos no AWS Glue Studio
<a name="create-jobs-start"></a>

 O AWS Glue permite criar um trabalho por meio de uma interface visual, um caderno de código interativo ou com um editor de scripts. Você pode iniciar um trabalho clicando em qualquer uma das opções ou criar um novo trabalho com base em um trabalho de exemplo. 

 Exemplos de trabalhos de criação de trabalho com a ferramenta de sua escolha. Por exemplo, exemplos de trabalhos permitem que você crie um trabalho ETL visual que une arquivos CSV em uma tabela de catálogo, crie um trabalho em um caderno de código interativo com o AWS Glue para Ray ou AWS Glue para Spark ao trabalhar com pandas ou crie uma tarefa em um caderno de código interativo com o SparkSQL. 

### Criando um trabalho no AWS Glue Studio do zero
<a name="create-jobs-start-from-scratch"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Glue Studio em [https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/).

1.  No painel de navegação, escolha **Trabalhos**. 

1.  Na seção **Criar trabalho**, escolha uma opção de configuração para o seu trabalho.   
![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/sample-jobs.png)

    Opções para criar um trabalho do zero: 
   +  **Visual ETL**: criar em uma interface visual focada no fluxo de dados 
   +  **Criar usando um caderno de código interativo**: criar trabalhos interativamente em uma interface de caderno baseada em cadernos Jupyter 

      Quando seleciona esta opção, você deve fornecer informações adicionais antes de criar uma sessão de criação de caderno. Para obter mais informações sobre como especificar essas informações, consulte [Conceitos básicos de cadernos no AWS Glue Studio](notebook-getting-started.md). 
   + **Editor de scripts Spark**: para aqueles familiarizados com programação e escrita de scripts de ETL, escolha essa opção para criar um novo trabalho de ETL do Spark. Escolha o mecanismo (Python shell, Ray, Spark (Python) ou Spark (Scala). Em seguida, escolha **Começar do zero** ou **Carregar script**. Carregar um script existente a partir de um arquivo local. Se você optar por usar o editor de scripts, não será possível usar o editor de trabalhos visual para criar ou editar seu trabalho. 

     Um trabalho do Spark é executado em um ambiente Apache Spark gerenciado pelo AWS Glue. Por padrão, novos scripts são codificados em Python. Para escrever um novo script em Scala, consulte [Criar e editar scripts em Scala no AWS Glue Studio](edit-nodes-script.md#edit-job-scala-script).

### Criar um trabalho no AWS Glue Studio partir de um trabalho de exemplo
<a name="create-jobs-start-from-example-job"></a>

 Você pode optar por criar um trabalho a partir de um trabalho de exemplo. Na seção **Trabalhos de exemplo**, escolha um trabalho de exemplo e, em seguida, escolha **Criar trabalho de exemplo**. A criação de um trabalho de exemplo a partir de uma das opções fornece um modelo rápido com o qual você pode trabalhar. 

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Glue Studio em [https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/).

1.  No painel de navegação, escolha **Trabalhos**. 

1.  Selecione uma opção para criar um trabalho a partir de um trabalho de exemplo: 
   +  **Trabalho de ETL visual para unir várias fontes**: ler três arquivos CSV, combinar os dados, alterar os tipos de dados e, em seguida, gravar os dados no Amazon S3 e catalogá-los para consulta posterior. 
   +  **Notebook Spark usando Pandas**: explorar e visualizar dados usando a popular estrutura do Panda combinada com o Spark. 
   +  **Caderno Spark usando SQL**: usar SQL para começar a usar rapidamente o Apache Spark. Acessar dados por meio do catálogo de dados do AWS Glue e transformá-los usando comandos familiares. 

1. Escolha **Criar trabalho de exemplo**.

# Recursos do editor de trabalhos
<a name="job-editor-features"></a>

O editor de trabalhos fornece os seguintes recursos para criar e editar trabalhos.
+ Um diagrama visual do seu trabalho, com um nó para cada tarefa de trabalho: nós de origem de dados para lê-los, transformar nós para modificá-los, nós de destino de dados para gravá-los.

  Você pode exibir e configurar as propriedades de cada nó no diagrama de trabalho. Você também pode exibir os dados de esquema e de exemplo de cada nó no diagrama de trabalho. Esses recursos ajudam você a verificar se seu trabalho está modificando e transformando os dados da maneira correta, sem ter que executar o trabalho.
+ Uma guia de exibição e edição de scripts, onde você pode modificar o código gerado para seu trabalho.
+ Uma guia de detalhes do trabalho, onde você pode configurar uma variedade de configurações para personalizar o ambiente no qual seu trabalho de ETL do AWS Glue é executado.
+ Uma guia de execuções, onde você pode exibir as execuções atuais e anteriores do trabalho, visualizar o status da execução do trabalho e acessar os logs da execução do trabalho.
+ Uma guia Qualidade de dados, na qual você pode aplicar regras de qualidade de dados ao seu trabalho.
+ Uma guia de programações, na qual você pode configurar o momento de início de seu trabalho ou configurar execuções recorrentes de um trabalho.
+ Uma guia Controle de versão, na qual você pode configurar um serviço Git para usar com seu trabalho.

## Usar previsualizações de esquema no editor de trabalhos visual
<a name="schema-previews"></a>

Ao criar ou editar seu trabalho, você pode usar a guia **Output schema** (Esquema de saída) para exibir o esquema dos dados. 

Antes que você possa ver o esquema, o editor de trabalhos precisa de permissões para acessar a origem dos dados. Você pode especificar uma função do IAM para um nó na guia Job details (Detalhes do trabalho) do editor ou na guia **Output schema** (Esquema de saída). Se a função do IAM tiver todas as permissões necessárias para acessar a origem dos dados, você poderá visualizar o esquema na guia **Output schema** (Esquema de saída) de um nó.

## Usar previsualizações de dados no editor de trabalhos visual
<a name="data-previews"></a>



[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/EqmljEWlp0c/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/EqmljEWlp0c)




As pré-visualizações de dados ajudam você a criar e testar seu trabalho usando um exemplo dos seus dados sem precisar executá-lo repetidamente. Ao usar a pré-visualização de dados, você pode:
+ Testar um perfil do IAM para garantir que ele tenha acesso a suas fontes ou destinos de dados.
+ Verificar se a transformação está modificando os dados da maneira pretendida. Por exemplo, se você usar uma transformação de filtro, pode certificar-se de que o filtro está selecionando o subconjunto correto de dados.
+ Verifique seus dados. Se o conjunto de dados contiver colunas com valores de vários tipos, a visualização de dados mostrará uma lista de tuplas para elas. Cada tupla contém o tipo de dado e seu valor.

**nota**  
 Se você usar uma sessão de visualização de dados e um SQL personalizado ou um nó de código personalizado, a sessão de visualização de dados executará o SQL ou o bloco de código no estado em que se encontra para todo o conjunto de dados. 

 Ao criar ou editar seu trabalho, você pode usar a guia **Visualização de dados** abaixo da tela do trabalho para visualizar uma amostra dos seus dados. Uma nova sessão de pré-visualização de dados será iniciada automaticamente quando o perfil já estiver configurado no trabalho ou um perfil do IAM padrão tiver sido configurado na conta. Se um perfil não tiver sido configurado anteriormente, você poderá iniciar uma sessão selecionando o perfil. 

**nota**  
 O perfil que você escolher para a sessão de pré-visualização de dados também será usado para o trabalho. 



 É possível ver o status e o progresso da sua sessão, bem como os detalhes da sessão, clicando no ícone de informações. 

 Quando a sessão estiver pronta, o AWS Glue Studio carregará os dados para o nó selecionado. É possível visualizar o **% concluído** à medida que a sessão avança. 

![\[A captura de tela mostra a guia Pré-visualização de dados de um nó iniciado.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preview-progress.png)


 À medida que você criar seu trabalho visual, o AWS Glue Studio atualizará automaticamente o esquema do nó selecionado quando você alternar **Inferir esquema da sessão** na guia **Esquema de saída**. 

![\[A captura de tela mostra a guia Pré-visualização de dados de um nó iniciado.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preview-output-schema.png)


 Para configurar suas preferências de pré-visualização de dados: 

Escolha o ícone de configurações (um símbolo de engrenagem) para configurar suas preferências de previsualizações de dados. Essas configurações se aplicam a todos os nós no diagrama de trabalho. É possível: 
+ Optar por quebrar o texto de uma linha para a próxima. Essa opção é habilitada por padrão
+ Alterar o número de linhas (o padrão é 200) 
+ Escolher ou, se necessário, criar um perfil do IAM
+ Optar por iniciar automaticamente uma nova sessão ao criar um trabalho. Isso fornece uma nova sessão interativa ao criar trabalhos. **Essa configuração é aplicável no nível da conta.** Uma vez definida, a configuração será aplicada a todos os usuários da sua conta ao editar qualquer trabalho.
+ Escolher inferir automaticamente o esquema. Os esquemas de saída serão automaticamente inferidos para o nó selecionado
+ Optar por importar automaticamente bibliotecas do AWS Glue. Isso é útil porque evitará que a pré-visualização de dados reinicie novas sessões ao adicionar novas transformações que exijam a reinicialização da sessão

 Os recursos adicionais incluem a capacidade de: 
+ Selecione o botão **Previewing x of y fields** (Previsualização de x de y campos) para selecionar quais colunas (campos) serão previsualizadas. Quando você previsualiza seus dados usando as configurações padrão, o editor de trabalhos mostra as cinco primeiras colunas do seu conjunto de dados. Você pode alterar essa opção para mostrar todas ou nenhuma (não recomendado). 
+ Role pela janela de pré-visualização de dados, tanto na horizontal quanto na vertical. 
+ Use o botão maximizar para expandir a guia Visualização de dados para sobrepor o gráfico do trabalho e visualizar melhor os dados e as estruturas de dados. Da mesma forma, use o botão minimizar para minimizar a guia Visualização de dados. Você também pode pegar o painel da alça e arrastar para cima para expandir a guia **Visualização de dados**.  
![\[A captura de tela mostra o painel de visualização de dados com os botões minimizar e maximizar destacados, bem como o painel de controle que você pode usar para estender o painel de visualização de dados verticalmente.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preview-maximize-handle.png)
+ Use **Encerrar sessão** para interromper a visualização dos dados. Ao interromper a sessão, você pode escolher um novo perfil do IAM e definir configurações adicionais (como ativar ou desativar configurações) para iniciar automaticamente uma nova sessão, inferir um esquema ou importar AWS Glue bibliotecas e iniciar a sessão novamente.

## Restrições ao usar previsualizações de dados
<a name="data-preview-limits"></a>

Ao usar previsualizações de dados, você pode encontrar as seguintes restrições ou limitações. 
+ Na primeira vez que você escolhe a guia Data preview (Previsualização de dados), deve escolher uma função do IAM. Essa função deve ter as permissões exigidas para acessar os dados e outros recursos necessários para criar as previsualizações de dados.
+ Depois de fornecer uma função do IAM, leva um tempo até que os dados estejam disponíveis para visualização. Para conjuntos de dados com menos de 1 GB de dados, pode levar até um minuto. Se você tiver um conjunto de dados grande, deverá usar partições para melhorar o tempo de carregamento. Carregar dados diretamente no Amazon S3 apresenta a melhor performance.
+ Se você tiver um conjunto de dados muito grande e levar mais de 15 minutos para consultar os dados para a previsualização, a solicitação excederá o tempo limite. As pré-visualizações de dados têm um tempo limite de inatividade de 30 minutos. Para aliviar isso, reduza o tamanho do conjunto de dados para usar previsualizações de dados.
+ Por padrão, você vê as 50 primeiras colunas na guia Data preview (Previsualização de dados). Se as colunas não tiverem valores de dados, você receberá uma mensagem informando que não há dados para exibir. Você pode aumentar o número de linhas de amostra ou de colunas diferentes selecionadas para ver os valores dos dados.
+ No momento, as previsualizações de dados não são suportadas para origens de dados de transmissão ou para origens de dados que usam conectores personalizados.
+ Erros em um nó afetam todo o trabalho. Se qualquer nó tiver um erro nas previsualizações de dados, ele aparecerá em todos os nós até que você o corrija.
+ Se você alterar uma origem de dados para o trabalho, os nós filhos dessa origem de dados talvez precisem ser atualizados para corresponder ao novo esquema. Por exemplo, se você tiver um nó ApplyMapping que modifica uma coluna e ela não existir na origem de dados de substituição, será necessário atualizar o nó de transformação ApplyMapping.
+ Se você exibir a guia Data preview (Previsualização de dados) para um nó de transformação de consulta SQL e tal consulta usar um nome de campo incorreto, a guia Data preview (Previsualização de dados) exibirá um erro. 

## Geração de código de script
<a name="code-gen"></a>

Quando você usa o editor visual para criar um trabalho, o código ETL é gerado automaticamente para você. O AWS Glue Studio cria um script de trabalho funcional e completo e o salva em um local do Amazon S3.

Existem duas formas de código geradas pelo AWS Glue Studio: a versão original, ou clássica, e uma versão mais nova e racionalizada. Por padrão, o novo gerador de código é usado para criar o script de trabalho. Você pode gerar um script de trabalho usando o gerador de código clássico na guia **Script** escolhendo o botão **Generate classic script** (Gerar script clássico).

Algumas das diferenças na nova versão do código gerado incluem:
+ Blocos de comentários grandes não são mais adicionados ao script
+ As estruturas de saída no código usam o nome do nó especificado no editor visual. No script clássico, as estruturas de saída são simplesmente nomeadas `DataSource0`, `DataSource1`, `Transform0`, `Transform1`, `DataSink0`, `DataSink1` e assim por diante.
+ Comandos longos são divididos em várias linhas para eliminar a necessidade de rolar pela página para ver o comando inteiro.

Novos recursos no AWS Glue Studio exigem a nova versão da geração de código e não funcionarão com o script de código clássico. Você será solicitado a atualizar esses trabalhos ao tentar executá-los.

# Transformar dados com transformações gerenciadas do AWS Glue
<a name="edit-jobs-transforms"></a>

 AWS Glue StudioO fornece dois tipos de transformação: 
+  **Transformações nativas do AWS Glue**, disponíveis para todos os usuários e gerenciadas pelo AWS Glue. 
+  **Transformações visuais personalizadas**, permitem que você carregue suas próprias transformações para usar no AWS Glue Studio 

## Nós de transformação de dados gerenciados pelo AWS Glue
<a name="edit-jobs-transforms-glue-managed"></a>

AWS Glue StudioO fornece um conjunto de transformações integradas que você pode usar para processar seus dados. Seus dados passam de um nó no diagrama de trabalho para outro em uma estrutura de dados chamada `DynamicFrame`, que é uma extensão para um `DataFrame` do Apache Spark SQL.

No diagrama previamente preenchido de um trabalho, entre os nós de fonte de dados e de destino de dados está o nó de transformação **Change Schema**. Você pode configurar esse nó de transformação para modificar seus dados ou pode usar transformações adicionais. 

As transformações integradas a seguir estão disponíveis no AWS Glue Studio:
+ **[ChangeSchema](transforms-configure-applymapping.md)**: mapear chaves de propriedade de dados na fonte de dados para chaves de propriedade de dados no destino dos dados. Você pode renomear chaves, modificar os tipos de dados para chaves e escolher quais chaves remover do conjunto de dados.
+ **[SelectFields](transforms-configure-select-fields.md)** (Selecionar campos): escolha as chaves de propriedade de dados que você deseja manter.
+ **[DropFields](transforms-configure-drop-fields.md)** (Descartar campos): escolha as chaves de propriedade de dados que você deseja descartar.
+ **[RenameField](transforms-configure-rename-field.md)** (Renomear campo): renomeie uma única chave de propriedade de dados.
+ **[Spigot](transforms-configure-spigot.md)** (Torneira): grave amostras dos dados em um bucket do Amazon S3.
+ **[Join](transforms-configure-join.md)** (Unir): una dois conjuntos de dados em um só, usando uma frase de comparação nas chaves de propriedade de dados especificadas. Você pode usar junção inner (interna), outer (externa), left (à esquerda), right (à direita), left semi (semi à esquerda) e left anti (anti à esquerda).
+ **[Union](transforms-configure-union.md)**: combinar linhas de mais de uma fonte de dados que tenham o mesmo esquema.
+ **[SplitFields](transforms-configure-split-fields.md)** (Dividir campos): divida chaves de propriedade de dados em dois `DynamicFrames`. A saída é uma coleção de `DynamicFrames`: um com chaves de propriedade de dados selecionadas e outro com as chaves de propriedade de dados restantes. 
+ **[SelectFromCollection](transforms-selectfromcollection-overview.md)** (Selecionar na coleção): escolha um `DynamicFrame` a partir de uma coleção de `DynamicFrames`. A saída é o selecionado. `DynamicFrame`.
+ **[FillMissingValues](transforms-configure-fmv.md)** (Preencher valores ausentes): localize registros no conjunto de dados que têm valores ausentes e adicione um novo campo com um valor determinado por imputação.
+ **[Filter](transforms-filter.md)** (Filtro): divida um conjunto de dados em dois, com base em uma condição de filtro.
+  **[Drop Null Fields](transforms-dropnull-fields.md)** (Descartar campos nulos): remove colunas do conjunto de dados se todos os valores na coluna forem "null" (nulo). 
+  ** [Drop Duplicates](transforms-drop-duplicates.md)** (Eliminar duplicatas): remove linhas da sua fonte de dados escolhendo combinar linhas inteiras ou especificar chaves. 
+ **[SQL](transforms-sql.md)**: insira o código SparkSQL em um campo de entrada de texto para usar uma consulta SQL para transformar os dados. A saída é um único `DynamicFrame`. 
+  **[Agregar](transforms-aggregate-fields.md)**: executa um cálculo (como média, soma, mínimo, máximo) em campos e linhas selecionados, e cria um novo campo com os valores recém-calculados. 
+ **[Nivelar](transforms-flatten.md)**: extraia campos dentro de structs para campos de nível superior.
+ **[UUID](transforms-uuid.md)**: adicione uma coluna com um identificador universal exclusivo para cada linha.
+ **[Identificador](transforms-identifier.md)**: adicione uma coluna com um identificador numérico para cada linha.
+ **[Em timestamp](transforms-to-timestamp.md)**: converta uma coluna em tipo timestamp.
+ **[Formatar timestamp](transforms-format-timestamp.md)**: converta uma coluna de timestamp em uma string formatada.
+ **[Transformação de roteador condicional](transforms-conditional-router.md)**: aplique várias condições aos dados de entrada. Cada linha dos dados de entrada avaliada por uma condição de filtro de grupo e processada no grupo correspondente. 
+  **[Transformação Concatenate Columns](transforms-concatenate-columns.md)**: Criar uma nova coluna de strings usando os valores de outras colunas com um espaçador opcional. 
+  **[Transformação Split String](transforms-split-string.md)**: permite que você divida uma string em uma matriz de tokens usando uma expressão regular para definir como a divisão é feita. 
+  **[Transformação Array To Columns](transforms-array-to-columns.md)**: extrair alguns ou todos os elementos de uma coluna do tipo matriz para novas colunas. 
+  **[Transformação Add Current Timestamp](transforms-add-current-timestamp.md)**: permite marcar as linhas com a hora em que os dados foram processados. Isso é útil para fins de auditoria ou para rastrear a latência no pipeline de dados. 
+  **[Transformação Pivot Rows to Columns](transforms-pivot-rows-to-columns.md)**: agregar uma coluna numérica girando valores únicos nas colunas selecionadas que se tornam novas colunas. Se várias colunas forem selecionadas, os valores serão concatenados para nomear as novas colunas. 
+  **[Transformação Unpivot Columns To Rows](transforms-unpivot-columns-to-rows.md)**: converter colunas em valores de novas colunas, gerando uma linha para cada valor único. 
+  **[Transformação Autobalance Processing](transforms-autobalance-processing.md)**: redistribuir os dados entre os operadores para melhorar a performance. Isso ajuda nos casos em que os dados estão desbalanceados ou, como vêm da fonte, não permitem processamento paralelo suficiente. 
+  **[Transformação Derived Column](transforms-derived-column.md)**: definir uma nova coluna com base em uma fórmula matemática ou expressão SQL na qual você pode usar outras colunas nos dados, além de constantes e literais. 
+  **[Transformação Lookup](transforms-lookup.md)**: adicionar colunas de uma tabela de catálogo definida quando as chaves correspondem às colunas de pesquisa nos dados. 
+  **[Transformação Explode Array Map Into Rows](transforms-explode-array.md)**: extrair valores de uma estrutura aninhada em linhas individuais que são mais fáceis de manipular. 
+  **[Transformação Record matching](transforms-record-matching.md)**: invocar uma transformação de classificação de dados de machine learning Record Matching existente. 
+  **[Transformação Remove null rows](transforms-remove-null-rows.md)**: remover do conjunto de dados as linhas que têm todas as colunas nulas ou vazias. 
+  **[Transformação Parse JSON comumn](transforms-parse-json-column.md)**: analisar uma coluna de strings contendo dados JSON e a converter em uma estrutura ou coluna de matriz, dependendo se o JSON for um objeto ou uma matriz, respectivamente. 
+  **[Transformação Extract JSON path](transforms-extract-json-path.md)**: extrair novas colunas de uma coluna de strings JSON. 
+  Essa**[Transformação Extract stringtransformaçãofragmentsextraifrom a regular expression](transforms-regex-extractor.md)**: extrair fragmentos de string usando uma expressão regular e criacriar uma nova coluna a partir dela, ou várias colunas se estiver usando grupos regex. 
+ **[Custom transform](transforms-custom.md)** (Transformação personalizada): insira o código em um campo de entrada de texto para usar transformações personalizadas. A saída é uma coleção de `DynamicFrames`. 

# Usando uma fórmula de preparação de dados no AWS Glue Studio
<a name="glue-studio-data-preparation"></a>

 A transformação da **fórmula de preparação de dados** permite que você crie uma fórmula de preparação de dados do zero usando uma interface de criação interativa em estilo de grade. Também permite que você importe uma fórmula disponível do AWS Glue DataBrew e depois a edite no AWS Glue Studio. 

 O nó **Fórmula de preparação de dados** está disponível no painel Recursos. Você pode conectar o nó **Fórmula de preparação de dados** a outro nó no fluxo de trabalho visual, seja ele um nó de fonte de dados ou outro nó de transformação. Depois de escolher uma fórmula e uma versão do AWS Glue DataBrew, as etapas aplicadas na fórmula ficam visíveis na guia de propriedades do nó. 

## Pré-requisitos
<a name="glue-studio-databrew-prerequisites"></a>
+  Ao importar uma fórmula do AWS Glue DataBrew, você tem as permissões necessárias do IAM, conforme descrito em [Importar uma fórmula do AWS Glue DataBrew no AWS Glue Studio](glue-studio-data-preparation-import-recipe.md). 
+  Uma sessão de pré-visualização de dados deve ser criada. 

## Limitações
<a name="glue-studio-databrew-limitations"></a>
+  As fórmulas do AWS Glue DataBrew são apenas compatíveis em [regiões comerciais do DataBrew](https://docs.aws.amazon.com/general/latest/gr/databrew.html). 
+  Nem todas as fórmulas do AWS Glue DataBrew são compatíveis com o AWS Glue. Algumas fórmulas não poderão ser executadas no AWS Glue Studio. 
  +  Fórmulas com transformações `UNION` e `JOIN` não são compatíveis, no entanto, o AWS Glue Studio já possui nós de transformação “Join” e “Union” que podem ser usados antes ou depois de um nó de **Fórmula de preparação de dados**. 
+  Os nós de **Data Preparation Recipe** são compatíveis com trabalhos a partir do AWS Glue versão 4.0. Essa versão será selecionada automaticamente depois que um nó de **Data Preparation Recipe** for adicionado ao trabalho. 
+  Nós **Data Preparation Recipe** exigem o Python. Isso é definido automaticamente quando o nó **Data Preparation Recipe** é adicionado ao trabalho. 
+  Adicionar um novo nó de **Fórmula de preparação de dados** ao gráfico visual reiniciará automaticamente sua sessão de pré-visualização de dados com as bibliotecas corretas para usar o nó de **Fórmula de preparação de dados**. 
+  As seguintes transformações não são compatíveis para importação ou edição em um nó de **Fórmula de preparação de dados**: `GROUP_BY`, `PIVOT`, `UNPIVOT` e `TRANSPOSE`. 

## Recursos adicionais
<a name="glue-studio-data-preparation-recipe-transform-features"></a>

 Depois de selecionar a transformação da **Fórmula de preparação de dados**, será possível executar ações adicionais depois de escolher **Criar fórmula**. 
+  Adicionar etapa: você pode adicionar etapas adicionais a uma fórmula, conforme necessário, escolhendo o ícone de adicionar etapa, ou pode usar a barra de ferramentas no painel de pré-visualização e escolher uma ação.   
![\[A captura de tela mostra o ícone de adicionar fórmula.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/add-recipe-icon.png)  
![\[A captura de tela mostra o ícone de adicionar fórmula.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/author-recipe-toolbar.png)
+  Importar fórmula: escolha **Mais** e depois **Importar fórmula** para usar em seu trabalho do AWS Glue Studio.   
![\[A captura de tela mostra o ícone de mais.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preparation-recipe-node-more-icon.png)  
![\[A captura de tela mostra o ícone de mais.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preparation-recipe-node-more-features.png)
+  Baixar como YAML: escolha **Mais** e depois **Baixar como YAML** para baixar sua fórmula e salvá-la fora do AWS Glue Studio. 
+  Baixar como JSON: escolha **Mais** e depois **Baixar como JSON** para baixar sua fórmula e salvá-la fora do AWS Glue Studio. 
+  Desfazer e refazer etapas da fórmula: você pode desfazer e refazer etapas da fórmula no painel Pré-visualizar ao trabalhar com dados na grade.   
![\[A captura de tela mostra o ícone de mais.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/author-recipe-toolbar-undo-redo.png)

# Criar e executar fórmulas de preparação de dados em um trabalho visual de ETL do AWS Glue
<a name="glue-studio-data-preparation-recipe-transform-tutorial"></a>

 Nesse cenário, você pode criar fórmulas de preparação de dados sem precisar primeiro criá-las no DataBrew. Antes de começar a criar fórmulas, você deve: 
+  Ter uma sessão ativa de pré-visualização de dados em execução. Quando a sessão de pré-visualização de dados estiver PRONTA, a **Fórmula do autor** ficará ativa e você poderá começar a criá-la ou editá-la.   
![\[A captura de tela mostra a sessão de pré-visualização de dados como concluída.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preparation-recipe-data-preview-complete.png)
+  Certifique-se de que a opção **Importar bibliotecas do Glue automaticamente** esteja ativada.   
![\[A captura de tela mostra a opção Importar bibliotecas do Glue automaticamente ativada.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preparation-recipe-automatically-import-glue-libraries.png)

   Você pode fazer isso escolhendo o ícone de engrenagem no painel Pré-visualização de dados.   
![\[A captura de tela mostra a opção Importar bibliotecas do Glue automaticamente ativada.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preview-preferences.png)

**Para criar uma fórmula de preparação de dados no AWS Glue Studio:**

1.  Adicione a transformação da **Fórmula de preparação de dados** à sua tela de trabalho. Sua transformação deve estar conectada a um nó principal da fonte de dados. Ao adicionar o nó da **Fórmula de preparação de dados**, ele será reiniciado com as bibliotecas apropriadas e você verá o dataframe sendo preparado.   
![\[A captura de tela mostra o carregamento do dataframe após a adição da fórmula de preparação de dados.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preparation-preparing-dataframe.png)

1.  Quando a sessão de pré-visualização de dados estiver pronta, os dados com todas as etapas aplicadas anteriormente aparecerão na parte inferior da tela. 

1.  Escolha **Criar fórmula**. Essa opção permitirá que você inicie uma nova fórmula no AWS Glue Studio.   
![\[A captura de tela mostra o painel Transformação com os campos principais de Nome e Nó, bem como a opção Criar fórmula.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data-preparation-recipe-transform-tab-new.png)

1.  No painel **Transformar** à direita da tela de trabalho, insira um nome para sua fórmula de preparação de dados. 

1.  No lado esquerdo, a tela será substituída por uma visualização em grade dos seus dados. À direita, o painel **Transformar** mudará para mostrar as etapas da fórmula. Escolha **Adicionar etapa** para adicionar a primeira etapa em sua fórmula.   
![\[A captura de tela mostra o painel Transformar após escolher Adicionar etapa. Quando você escolhe uma coluna, as opções mudam dinamicamente. Você pode escolher classificar, executar uma ação na coluna e filtrar valores.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/author-recipe-preview-data-transform-panel.png)

1.  No painel **Transformar**, escolha classificar, executar uma ação na coluna e filtrar valores. Por exemplo, escolha **Renomear coluna**.   
![\[A captura de tela mostra o painel Transformar após escolher Adicionar etapa. Quando você escolhe uma coluna, as opções mudam dinamicamente. Você pode escolher classificar, executar uma ação na coluna e filtrar valores.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/author-recipe-add-step.png)

1.  No painel Transformar no lado direito, as opções para renomear uma coluna permitem que você escolha a coluna de origem a ser renomeada e insira o novo nome da coluna. Depois de executar essa ação, escolha **Aplicar**. 

    Você pode pré-visualizar cada etapa, desfazer uma etapa, reordenar etapas e usar qualquer um dos ícones de ação, como Filtrar, Classificar, Dividir, Mesclar etc. Quando você executa ações na grade de dados, as etapas são adicionadas à fórmula no painel Transformar.   
![\[A captura de tela mostra a grade de pré-visualização de dados com a barra de ferramentas destacada. Você pode aplicar uma ação usando qualquer uma das ferramentas, e ela será adicionada à fórmula no painel Transformar à direita.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/author-recipe-preview-data-grid.png)

    Caso precise fazer uma alteração, você poderá fazê-lo no painel Pré-visualizar ao pré-visualizar o resultado de cada etapa, desfazer uma etapa e reordenar as etapas. Por exemplo: 
   +  Etapa de desfazer/refazer: desfaça uma etapa escolhendo o ícone de **desfazer**. Você pode repetir uma etapa escolhendo o ícone de **refazer**.   
![\[A captura de tela mostra o ícone de mais.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/author-recipe-toolbar-undo-redo.png)
   +  Etapa de reordenação: quando você reordena uma etapa, o AWS Glue Studio valida cada etapa e informa se a etapa é inválida. 

1.  Depois de aplicar uma etapa, o painel Transformar mostrará todas as etapas da sua fórmula. Você pode limpar todas as etapas para recomeçar, adicionar mais etapas escolhendo o ícone de adicionar ou escolher **Criação de fórmula concluída**.   
![\[A captura de tela mostra o painel Transformar com etapas adicionadas à fórmula. Quando concluir, escolha Criação da fórmula concluída, ou escolha o ícone de adicionar para adicionar mais etapas à fórmula.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/author-recipe-done-authoring-recipe.png)

1.  Escolha **Salvar** no canto superior direito da tela. As etapas da fórmula não serão salvas até você salvar seu trabalho. 

# Importar uma fórmula do AWS Glue DataBrew no AWS Glue Studio
<a name="glue-studio-data-preparation-import-recipe"></a>

 No AWS Glue DataBrew, uma fórmula é um conjunto de etapas de transformação de dados. As fórmulas do AWS Glue DataBrew estabelecem como transformar dados que já foram lidos, mas não descrevem onde e como ler dados nem como e onde gravá-los. Isso é configurado nos nós de origem e de destino no AWS Glue Studio. Para obter mais informações sobre fórmulas, consulte [Creating and using AWS Glue DataBrew recipes](https://docs.aws.amazon.com/databrew/latest/dg/recipes.html). 

 Para usar fórmulas do AWS Glue DataBrew no AWS Glue Studio, comece criando fórmulas no AWS Glue DataBrew. Se você já tiver fórmulas que deseja usar, pule esta etapa. 

## Permissões do IAM para o AWS Glue DataBrew
<a name="glue-studio-databrew-permissions"></a>

 Este tópico fornece informações para ajudar você a entender as ações e os recursos que você, um administrador de IAM pode usar em uma política do AWS Identity and Access Management (IAM) para a transformação Data Preparation Recipe. 

 Para obter mais informações sobre segurança no AWS Glue, consulte [Access Management](https://docs.aws.amazon.com/glue/latest/dg/security.html). 

**nota**  
 A tabela a seguir lista as permissões de que um usuário precisa para importar uma fórmula disponível do AWS Glue DataBrew. 


**Ações de transformação da fórmula de preparação de dados**  

| Ação | Descrição | 
| --- | --- | 
| databrew:ListRecipes | Concede permissão para recuperar fórmulas do AWS Glue DataBrew. | 
| databrew:ListRecipeVersions | Concede permissão para recuperar versões de fórmulas do AWS Glue DataBrew. | 
| databrew:DescribeRecipe | Concede permissão para recuperar descrição de fórmula do AWS Glue DataBrew. | 



 O perfil que você está usando para acessar essa funcionalidade deve ter uma política que permita várias ações AWS Glue DataBrew. Você pode fazer isso usando uma política `AWSGlueConsoleFullAccess` que inclua as ações necessárias ou adicionar a seguinte política em linha ao seu perfil: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "databrew:ListRecipes",
        "databrew:ListRecipeVersions",
        "databrew:DescribeRecipe"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------



 Para usar a transformação Data Preparation Recipe, você deve adicionar a ação `IAM:PassRole` à política de permissões. 


**Permissões adicionais necessárias**  

| Ação | Descrição | 
| --- | --- | 
| iam:PassRole | Concede permissão ao IAM para permitir que o usuário passe os perfis aprovados. | 

Sem essas permissões, ocorre o seguinte erro:

```
"errorCode": "AccessDenied"
"errorMessage": "User: arn:aws:sts::account_id:assumed-role/AWSGlueServiceRole is not 
authorized to perform: iam:PassRole on resource: arn:aws:iam::account_id:role/service-role/AWSGlueServiceRole 
because no identity-based policy allows the iam:PassRole action"
```



## Importar uma fórmula do AWS Glue DataBrew
<a name="glue-studio-databrew-import-steps"></a>

**Para importar uma fórmula do AWS Glue DataBrew e usá-la no AWS Glue Studio:**

 Caso tenha um nó de **Fórmula de preparação de dados** disponível e queira editar as etapas da fórmula diretamente noAWS Glue Studio, você precisará importar as etapas da fórmula para o seu trabalho do AWS Glue Studio. 

1.  Comece um trabalho do AWS Glue no AWS Glue Studio com uma origem de dados. 

1.  Adicione o nó **Fórmula de preparação de dados** à sua tela de trabalho.   
![\[A captura de tela mostra o modal Adicionar nó com a fórmula de preparação de dados disponível para seleção.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/glue-add-node-data-preparation-recipe.png)

1.  No painel Transformar, insira um nome para a fórmula. 

1.  Escolha um ou mais nós principais selecionando os nós disponíveis na tela na lista suspensa. 

1.  Escolha **Criar fórmula**. Se a **Fórmula do autor** estiver cinza, ela não estará disponível até que os pais do nó sejam selecionados e uma sessão de visualização de dados seja concluída.   
![\[Author Data Preparation Recipe form with name field and node parents selection dropdown.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/glue-author-data-preparation-recipe.png)

1.  O quadro de dados carrega e mostra informações detalhadas sobre os dados de origem. 

    Selecione o ícone de **mais ações** e escolha **Importar fórmula**.   
![\[Data preparation interface showing "Build your Recipe" with an "Add step" button.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/glue-dataframe-import-recipe.png)

1.  Use o assistente de importação de fórmulas para concluir as etapas. Na etapa 1, pesquise sua fórmula, selecione-a e escolha **Avançar**.   
![\[Import recipe interface showing two recipes, with one selected for import.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/import-recipe-step-1.png)

1.  Na etapa 2, escolha as opções de importação. É possível optar por acrescentar uma nova fórmula a uma já existente ou substituir uma fórmula existente. Escolha **Próximo**.   
![\[Import recipe interface showing selected recipe, version, and two imported steps.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/import-recipe-step-2.png)

1.  Na etapa 3, valide as etapas da fórmula. Depois de importar sua fórmula do AWS Glue DataBrew, você poderá editá-la diretamente no AWS Glue Studio.   
![\[Recipe import interface showing two steps and a validation progress indicator.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/import-recipe-step-3.png)  
![\[Import recipe interface showing validated steps for sorting and formatting data.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/import-recipe-step-3-validated-2.png)

1.  Depois disso, as etapas serão importadas como parte do seu trabalho do AWS Glue. Faça as alterações de configuração necessárias na guia **Detalhes do trabalho**, como nomear seu trabalho e ajustar a capacidade alocada, conforme necessário. Escolha **Salvar** para salvar seu trabalho e a fórmula. 
**nota**  
 JOIN, UNION, GROUP\$1BY, PIVOT, UNPIVOT, TRANSPOSE não são compatíveis com a importação de fórmulas nem estarão disponíveis no modo de criação de fórmulas. 

1.  Opcionalmente, você pode concluir a criação do trabalho adicionando outros nós de transformações, conforme necessário, e adicionar nós de destino de dados. 

    Se você reordenar as etapas depois de importar uma fórmula, o AWS Glue executará a validação dessas etapas. Por exemplo, se você renomeou e depois excluiu uma coluna, e se moveu a etapa de exclusão para cima, a etapa de renomeação ficará inválida. Você pode então editar as etapas para corrigir o erro de validação. 

# Migração do AWS Glue DataBrew para o AWS Glue Studio
<a name="databrew-migration-to-glue-studio"></a>

 Se você tiver fórmulas no AWS Glue DataBrew, use a lista de verificação a seguir para migrá-las para o AWS Glue Studio. 


| Se você deseja… | Então faça isso | 
| --- | --- | 
|  Permita que os usuários recuperem fórmulas do AWS Glue DataBrew, versões e descrições de fórmulas.  |  Adicione permissões do IAM a uma política que permite que sua função acesse as ações necessárias. Consulte [Permissões do IAM para o AWS Glue DataBrew](glue-studio-data-preparation-import-recipe.md#glue-studio-databrew-permissions).  | 
|  Importe uma fórmula do AWS Glue DataBrew existente para o AWS Glue Studio.  |  Siga as etapas em [Importar uma fórmula do AWS Glue DataBrew](glue-studio-data-preparation-import-recipe.md#glue-studio-databrew-import-steps).  | 
|  Importe uma fórmula com JOIN e UNION.  |  Fórmulas com transformações UNION e JOIN não são suportadas. Use as transformações Join and Union no AWS Glue Studio antes ou depois de um nó de fórmula de preparação de dados.  | 

# Usando Alterar esquema para remapear as chaves de propriedade de dados
<a name="transforms-configure-applymapping"></a>

Uma transformação *Alterar esquema* remapeia as chaves de propriedade de dados de origem como as chaves desejadas configuradas para os dados de destino. Em um nó de transformação Alterar esquema, você pode:
+ Alterar o nome de várias chaves de propriedade de dados.
+ Alterar o tipo de dados das chaves de propriedade de dados, se o novo tipo de dados for suportado e houver um caminho de transformação entre os dois tipos de dados.
+ Escolher um subconjunto de chaves de propriedade de dados indicando quais chaves de propriedade de dados você deseja descartar.

Conforme necessário, é possível adicionar mais nós *Alterar esquema* ao diagrama de trabalho, por exemplo, para modificar fontes de dados adicionais ou logo após uma transformação *Join*. 

## Usar Change Schema com tipo de dado decimal
<a name="transforms-configure-applymapping-decimal-datatype"></a>

 Ao usar a transformação **Alterar esquema** com tipo de dado decimal, a transformação **Alterar esquema** modifica a precisão para o valor padrão de (10,2). Para modificar isso e definir a precisão do seu caso de uso, use a transformação de **consulta do SQL** e converta as colunas com uma precisão específica. 

 Por exemplo, se tiver uma coluna de entrada chamada "DecimalCol" do tipo Decimal e quiser remapeá-la para uma coluna de saída chamada "OutputDecimalCol" com uma precisão específica de (18,6), será preciso: 

1.  Adicionar uma transformação subsequente de **consult do SQL** após a transformação **Alterar esquema**. 

1.  Na transformação de **consulta do SQL**, use uma consulta do SQL para converter a coluna remapeada na precisão desejada. A consulta do SQL deve ser semelhante a esta: 

   ```
   SELECT col1, col2, CAST(DecimalCol AS DECIMAL(18,6)) AS OutputDecimalCol
   FROM __THIS__
   ```

    Na consulta do SQL acima: 
   +  "col1" e "col2" são outras colunas em seus dados que você deseja passar sem modificação. 
   +  "DecimalCol" é o nome original da coluna dos dados de entrada. 
   +  "CAST(DecimalCol AS DECIMAL (18,6))" converte o "DecimalCol" em um tipo Decimal com uma precisão de 18 dígitos e 6 casas decimais. 
   +  "AS OutputDecimalCol" renomeia a coluna convertida para "OutputDecimalCol". 

 Usando a transformação de **consulta do SQL**, você pode substituir a precisão padrão definida pela transformação **Alterar esquema** e converter explicitamente as colunas decimais com a precisão desejada. **Essa abordagem permite aproveitar a transformação **Alterar esquema** para renomear e reestruturar seus dados e, ao mesmo tempo, lidar com os requisitos de precisão das colunas decimais por meio da transformação subsequente de consulta do SQL.** 

## Adicionar uma transformação Alterar esquema ao seu trabalho
<a name="transforms-configure-applymapping-add-to-job"></a>

**nota**  
A transformação **Alterar esquema** não diferencia maiúsculas de minúsculas.

**Para adicionar um nó de transformação Alterar esquema ao diagrama de trabalho**

1. (Opcional) abra o painel Recurso e escolha **Alterar esquema** para adicionar uma nova transformação ao diagrama de trabalho, se necessário. 

1. Na guia Propriedades do nó, insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Escolha a guia **Transformar** no painel de detalhes do nó.

1. Modifique o esquema de entrada:
   + Para renomear uma chave de propriedade de dados, insira o novo nome da chave no campo **Target key** (Chave de destino).
   + Para alterar o tipo de dados de uma chave de propriedade de dados, escolha o novo tipo de dados para a chave na lista **Data type** (Tipo de dados).
   + Para remover uma chave de propriedade de dados do esquema de destino, marque a caixa de seleção **Drop** (Descartar) da chave correspondente.

1. (Opcional) depois de configurar as propriedades do nó de transformação, você pode visualizar o esquema modificado dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

# Usando Drop Duplicates
<a name="transforms-drop-duplicates"></a>

 A transformação Drop Duplicates remove linhas da sua fonte de dados, oferecendo duas opções. Você pode optar por remover a linha duplicada que é completamente igual ou escolher os campos a serem correspondentes e remover somente as linhas com base nos campos escolhidos. 

 Por exemplo, nesse conjunto de dados, você tem linhas duplicadas em que todos os valores em algumas linhas são exatamente iguais aos de outra linha e alguns dos valores nas linhas são iguais ou diferentes. 


| Linha | Name | E-mail | Idade | Estado | Observação | 
| --- | --- | --- | --- | --- | --- | 
| 1 | Joy | joy@gmail | 33 | NY |  | 
| 2 | Tim | tim@gmail | 45 | OH |  | 
| 3 | Rose | rose@gmail | 23 | NJ |  | 
| 4 | Tim | tim@gmail | 42 | OH |  | 
| 5 | Rose | rose@gmail | 23 | NJ |  | 
| 6 | Tim | tim@gmail | 42 | OH | esta é uma linha duplicada e corresponde completamente a todos os valores da linha \$14 | 
| 7 | Rose | rose@gmail | 23 | NJ | Esta é uma linha duplicada e corresponde completamente a todos os valores da linha \$15 | 

 Se você optar por combinar linhas inteiras, as linhas 6 e 7 serão removidas do conjunto de dados. O conjunto de dados agora é: 


| Linha | Name | E-mail | Idade | Estado | 
| --- | --- | --- | --- | --- | 
| 1 | Joy | joy@gmail | 33 | NY | 
| 2 | Tim | tim@gmail | 45 | OH | 
| 3 | Rose | rose@gmail | 23 | NJ | 
| 4 | Tim | tim@gmail | 42 | OH | 
| 5 | Rose | rose@gmail | 23 | NJ | 

 Se você optar por especificar as chaves, poderá optar por remover as linhas que coincidem em 'nome' e 'e-mail'. Isso oferece um controle mais preciso do que é uma “linha duplicada” para seu conjunto de dados. Ao especificar 'nome' e 'e-mail', o conjunto de dados agora é: 


| Linha | Name | E-mail | Idade | Estado | 
| --- | --- | --- | --- | --- | 
| 1 | Joy | joy@gmail | 33 | NY | 
| 2 | Tim | tim@gmail | 45 | OH | 
| 3 | Rose | rose@gmail | 23 | NJ | 



 Tenha em mente que: 
+  Para que as linhas sejam reconhecidas como duplicadas, os valores diferenciam maiúsculas de minúsculas. Todos os valores nas linhas precisam ter a mesma letra maiúscula e minúscula - isso se aplica a qualquer opção escolhida (Combinar linhas inteiras ou Especificar chaves). 
+  Todos os valores são lidos como cadeias de caracteres. 
+  A transformação **Drop Duplicates** utiliza o comando dropDuplicates do Spark. 
+  Ao usar a transformação **Drop Duplicates**, a primeira linha é mantida e as outras linhas são descartadas. 
+  A transformação **Drop Duplicates** não altera o esquema do dataframe. Se você optar por especificar as chaves, todos os campos serão mantidos no dataframe resultante. 

# Usar SelectFields (Selecionar campos) para remover a maioria das chaves de propriedade de dados
<a name="transforms-configure-select-fields"></a>

Você pode criar um subconjunto de chaves de propriedade de dados a partir do conjunto de dados usando a transformação *SelectFields* (Selecionar campos). Você indica quais chaves de propriedade de dados deseja manter e o restante é removido do conjunto de dados.

**nota**  
A transformação *SelectFields* (Selecionar campos) diferencia maiúsculas de minúsculas. Use *ApplyMapping* (Aplicar mapeamentos) se você precisar de uma maneira de selecionar campos que não diferencie maiúsculas de minúsculas.

**Para adicionar um nó de transformação SelectFields ao diagrama de tarefas**

1. (Opcional) abra o painel Recurso e escolha **SelectFields**) para adicionar uma nova transformação ao diagrama de trabalho, se necessário. 

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Escolha a guia **Transform** (Transformação) no painel de detalhes do nó.

1. No cabeçalho **SelectFields** (Selecionar campos), escolha as chaves de propriedade de dados no conjunto de dados que você deseja manter. Quaisquer chaves de propriedade de dados não selecionadas são descartadas do conjunto de dados.

   Você também pode marcar a caixa de seleção ao lado do cabeçalho de coluna **Field** (Campo) para escolher automaticamente todas as chaves de propriedade de dados do conjunto de dados. Em seguida, você pode desmarcar chaves de propriedade de dados individuais para removê-las do conjunto de dados.

1. (Opcional) depois de configurar as propriedades do nó de transformação, você pode visualizar o esquema modificado dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

# Usar DropFields (Descartar campos) para manter a maioria das chaves de propriedade de dados
<a name="transforms-configure-drop-fields"></a>

Você pode criar um subconjunto de chaves de propriedade de dados a partir do conjunto de dados usando a transformação *DropFields* (Descartar campos). Você indica quais chaves de propriedade de dados deseja remover e o restante é mantido no conjunto de dados.

**nota**  
A transformação *DropFields* (Descartar campos) diferencia maiúsculas de minúsculas. Use *ApplyMapping* se você precisar de uma maneira de selecionar campos que não diferencie maiúsculas de minúsculas.

**Para adicionar um nó de transformação DropFields (Descartar campos) ao diagrama de trabalho**

1. (Opcional) abra o painel Recurso e escolha **DropFields**) para adicionar uma nova transformação ao diagrama de trabalho, se necessário. 

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Escolha a guia **Transform** (Transformação) no painel de detalhes do nó.

1. No cabeçalho **DropFields** (Descartar campos), escolha as chaves de propriedade de dados a serem descartadas da origem dos dados.

   Você também pode marcar a caixa de seleção ao lado do cabeçalho de coluna **Field** (Campo) para escolher automaticamente todas as chaves de propriedade de dados do conjunto de dados. Em seguida, você pode cancelar a seleção de chaves de propriedade de dados individuais para que elas sejam mantidas no conjunto de dados.

1. (Opcional) depois de configurar as propriedades do nó de transformação, você pode visualizar o esquema modificado dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

# Renomear um campo no conjunto de dados
<a name="transforms-configure-rename-field"></a>

Você pode usar a transformação *RenameField* (Renomear campo) para alterar o nome de uma chave de propriedade individual no conjunto de dados. 

**nota**  
A transformação *RenameField* (Renomear campo) diferencia maiúsculas de minúsculas. Use *ApplyMapping* (Aplicar mapeamento), se você precisar de uma transformação sem distinção entre maiúsculas e minúsculas.

**dica**  
Se você usar a transformação *ApplyMapping*, poderá renomear várias chaves de propriedade de dados no conjunto de dados com uma única transformação.

**Para adicionar um nó de transformação RenameField (Renomear campo) ao diagrama de trabalho**

1. (Opcional) abra o painel Recurso e escolha **RenameField** para adicionar uma nova transformação ao diagrama de trabalho, se necessário. 

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Escolha a guia **Transform** (Transformação).

1. No cabeçalho **Data field** (Campo de dados), escolha uma chave de propriedade nos dados de origem e, em seguida, insira um novo nome no campo **New name field** (Novo nome de campo). 

1. (Opcional) depois de configurar as propriedades do nó de transformação, você pode visualizar o esquema modificado dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

# Usar Spigot (Torneira) para fazer uma amostra de seu conjunto de dados
<a name="transforms-configure-spigot"></a>

Para testar as transformações executadas pelo trabalho, convém obter uma amostra dos dados para verificar se a transformação funciona como pretendido. A transformação *Spigot* (Torneira) grava um subconjunto de registros do conjunto de dados em um arquivo JSON, em um bucket do Amazon S3. O método de amostragem de dados pode ser um número especificado de registros desde o início do arquivo ou um fator de probabilidade usado para selecionar registros.

**Para adicionar um nó de transformação Spigot (Torneira) ao diagrama de trabalho**

1. (Opcional) abra o painel Recurso e escolha **Spigot** para adicionar uma nova transformação ao diagrama de trabalho, se necessário. 

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Escolha a guia **Transform** (Transformação) no painel de detalhes do nó.

1. Insira um caminho do Amazon S3 ou escolha **Browse S3** (Procurar no S3) para escolher um local no Amazon S3. Esse é o local onde o trabalho grava o arquivo JSON que contém a amostra de dados.

1. Insira informações para o método de amostragem. É possível especificar um valor em **Number of records** (Número de registros) para gravar a partir do início do conjunto de dados e um **Probability threshold** (Limite de probabilidade, inserido como um valor decimal com um valor máximo de 1) de escolher qualquer registro dado. 

   Por exemplo, para gravar os primeiros 50 registros do conjunto de dados, você definiria **Number of records** (Número de registros) como 50 e **Probability threshold** (Limite de probabilidade) como 1 (100%).

# Unir conjuntos de dados
<a name="transforms-configure-join"></a>

A transformação *Join* (Unir) permite combinar dois conjuntos de dados em um. Você especifica os nomes das chaves no esquema de cada conjunto de dados a ser comparado. O `DynamicFrame` de saída contém linhas em que as chaves atendem à condição de união. As linhas em cada conjunto de dados que atendem à condição de união são combinadas em uma única linha no `DynamicFrame` de saída que contém todas as colunas encontradas em qualquer um dos conjuntos de dados.

**Para adicionar um nó de transformação Join (Unir) ao diagrama de trabalho**

1. Se houver apenas uma fonte de dados disponível, você deverá adicionar um novo nó de origem dos dados ao diagrama de trabalho.

1. Escolha um dos nós de origem para a união. Abra o painel Recurso e escolha **Unir** para adicionar uma nova transformação ao diagrama do trabalho.

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho.

1. Na guia **Node properties** (Propriedades do nó), no cabeçalho **Node parents** (Nós pais), adicione um nó pai para que haja dois conjuntos de dados fornecendo entradas para a união. O pai pode ser um nó de origem dos dados ou um nó de transformação. 
**nota**  
Uma união pode ter apenas dois nós pais.

1. Escolha a guia **Transform** (Transformação).

   Se você vir uma mensagem indicando que existem nomes de chaves conflitantes, você pode:
   + Escolher **Resolve it** (Resolver) para adicionar automaticamente um nó de transformação *ApplyMapping* (Aplicar mapeamento) em seu diagrama de trabalho. O nó ApplyMapping (Aplicar mapeamento) adiciona um prefixo a todas as chaves no conjunto de dados que tenham o mesmo nome de uma chave do outro conjunto de dados. Por exemplo, se você usar o valor padrão **right**, todas as chaves no conjunto de dados direito que tenham o mesmo nome de uma chave do conjunto de dados esquerdo serão renomeadas para `(right)key name`.
   + Adicionar manualmente um nó de transformação anteriormente no diagrama de trabalho para remover ou renomear as chaves conflitantes.

1. Escolha o tipo de junção na lista **Join type** (Tipo de união). 
   + **Inner join** (União interna): retorna uma linha com colunas de ambos os conjuntos de dados para cada correspondência com base na condição de união. As linhas que não satisfazem a condição de união não são retornadas.
   + **Left join** (União à esquerda): todas as linhas do conjunto de dados esquerdo e somente as linhas do conjunto de dados direito que satisfazem a condição de união. 
   + **Right join** (União à direita): todas as linhas do conjunto de dados direito e somente as linhas do conjunto de dados esquerdo que satisfazem a condição de união.
   + **Outer join** (União externa): todas as linhas de ambos os conjuntos de dados.
   + **Left semi join** (semi à esquerda): todas as linhas do conjunto de dados esquerdo que têm uma correspondência no conjunto de dados direito com base na condição de união. 
   + **Left anti join** (anti à esquerda): todas as linhas do conjunto de dados esquerdo que não têm uma correspondência no conjunto de dados direito com base na condição de união. 

1. Na guia **Transform** (Transformação), no cabeçalho **Join conditions** (Condições de união), escolha **Add condition** (Adicionar condição). Escolha uma chave de propriedade de cada conjunto de dados para comparar. As chaves de propriedade no lado esquerdo do operador de comparação são referidas como o conjunto de dados esquerdo e as chaves de propriedade à direita são referidas como o conjunto de dados direito. 

   Para condições de união mais complexas, você pode adicionar chaves correspondentes adicionais escolhendo **Add condition** (Adicionar condição) mais de uma vez. Se você adicionar uma condição acidentalmente, pode escolher o ícone de exclusão (![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/delete-icon-black.png)) para removê-la.

1. (Opcional) depois de configurar as propriedades do nó de transformação, você pode visualizar o esquema modificado dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

Para obter um exemplo de esquema de saída de união, considere uma união entre dois conjuntos de dados com as seguintes chaves de propriedade:

```
Left: {id, dept, hire_date, salary, employment_status}
Right: {id, first_name, last_name, hire_date, title}
```

A união está configurada para corresponder nas chaves `id` e `hire_date` usando o operador de comparação `=`. 

Como ambos os conjuntos de dados contêm as chaves `id` e `hire_date`, você escolhe **Resolve it** (Resolver) para adicionar automaticamente o prefixo **right** às chaves no conjunto de dados direito. 

As chaves no esquema de saída seriam:

```
{id, dept, hire_date, salary, employment_status, 
(right)id, first_name, last_name, (right)hire_date, title}
```

# Usando Union para combinar linhas
<a name="transforms-configure-union"></a>

 Você usa o nó de transformação Union quando deseja combinar linhas de mais de uma fonte de dados que tenham o mesmo esquema. 

 Existem dois tipos de transformações Union: 

1. ALL - ao aplicar ALL, a união resultante não remove linhas duplicadas.

1. DISTINCT: ao aplicar DISTINCT, a união resultante remove as linhas duplicadas.

 **Unions versus Joins** 

 Você usa Union para combinar linhas. Você usa Join para combinar colunas. 

**Usando a transformação Union na tela Visual ETL**

1.  Adicione mais de uma fonte de dados para realizar uma transformação de união. Para adicionar uma fonte de dados, abra o painel Recurso e escolha a fonte de dados na guia Fontes. Antes de usar a transformação Union, você deve garantir que todas as fontes de dados envolvidas na união tenham o mesmo esquema e estrutura. 

1.  Quando você tem pelo menos duas fontes de dados que deseja combinar usando a transformação Union, crie a transformação Union adicionando-a à tela. Abra o painel Recurso na tela e pesquise “Union”. Você também pode escolher a guia Transformações no painel Recursos e rolar para baixo até encontrar a transformação Union e, em seguida, escolher **Union**. 

1. Selecione o nó Union na tela de trabalho. Na janela Propriedades do nó, escolha os nós principais para se conectar à transformação Union.

1. O AWS Glue verifica a compatibilidade para garantir que a transformação Union possa ser aplicada a todas as fontes de dados. Se o esquema das fontes de dados for o mesmo, a operação será permitida. Se as fontes de dados não tiverem o mesmo esquema, uma mensagem de erro de inválido será exibida: “Os esquemas de entrada dessa união não são os mesmos. Considere usar o ApplyMapping para combinar os esquemas.” Para corrigir isso, escolha usar **ApplyMapping**. 

1. Escolha o tipo de união.

   1. All: por padrão, o tipo de Union All é selecionado; isso resultará em linhas duplicadas, se houver alguma na combinação de dados.

   1. Distinct: escolha Distinct se quiser que as linhas duplicadas sejam removidas da combinação de dados resultante.

# Usar SplitFields (Dividir campos) para dividir um conjunto de dados em dois
<a name="transforms-configure-split-fields"></a>

A transformação *SplitFields* (Dividir campos) permite que você escolha algumas das chaves de propriedade de dados no conjunto de dados de entrada, colocando-as em um conjunto de dados e as chaves não selecionadas em um conjunto de dados separado. A saída dessa transformação é uma coleção de `DynamicFrames`.

**nota**  
Você deve usar uma transformação *SelectFromCollection* (Selecionar da coleção) para converter a coleção de `DynamicFrames` em um único `DynamicFrame` antes que você possa enviar a saída para um local de destino.

A transformação *SplitFields* (Dividir campos) diferencia maiúsculas de minúsculas. Adicione uma transformação *ApplyMapping* (Aplicar mapeamento) como um nó pai, se você precisar de nomes de chave de propriedade sem distinção entre maiúsculas e minúsculas.

**Para adicionar um nó de transformação SplitFields (Dividir campos) ao diagrama de trabalho**

1. (Opcional) abra o painel Recurso e escolha **Dividir campos** para adicionar uma nova transformação ao diagrama de trabalho, se necessário. 

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Escolha a guia **Transform** (Transformação).

1. Escolha quais chaves de propriedade você deseja colocar no primeiro conjunto de dados. As chaves que você não escolher serão colocadas no segundo conjunto de dados.

1. (Opcional) depois de configurar as propriedades do nó de transformação, você pode visualizar o esquema modificado dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

1. Configure um nó de transformação *SelectFromCollection* (Selecionar da coleção) para processar os conjuntos de dados resultantes.

# Visão geral da transformação *SelectFromCollection*
<a name="transforms-selectfromcollection-overview"></a>

Determinadas transformações têm vários conjuntos de dados como saída, em vez de um único conjunto de dados, por exemplo, *SplitFields* (Dividir campos). A transformação *SelectFromCollection* (Selecionar da coleção) seleciona um conjunto de dados (`DynamicFrame`) em uma coleção de conjuntos de dados (uma matriz de `DynamicFrames`). A saída da transformação é o selecionado `DynamicFrame`. 

Você deve usá-la após usar uma transformação que cria uma coleção de `DynamicFrames`, tais como:
+ Transformações de código personalizado
+ *SplitFields*

Se você não adicionar um nó de transformação *SelectFromCollection* (Selecionar da coleção) em seu diagrama de trabalho após qualquer uma dessas transformações, você receberá um erro em seu trabalho. 

O nó pai para essa transformação deve ser um nó que retorna uma coleção de `DynamicFrames`. Se você escolher um pai para esse nó de transformação que retorne um único `DynamicFrame`, como uma transformação *Join* (Unir), seu trabalho retornará um erro. 

Da mesma forma, se você usar um nó *SelectFromCollection* (Selecionar da coleção) em seu diagrama de trabalho como pai para uma transformação que espera um único `DynamicFrame` como entrada, o trabalho retornará um erro.

![\[A captura de tela mostra o campo Node parents (Nós pais) na guia Node properties (Propriedades do nó) do painel de detalhes do nó. O nó pai selecionado é SplitFields e a mensagem de erro exibida diz “Parent node Split Fields outputs a collection, but node Drop Fields does not accept a collection” (O nó pai “Dividir campos” produz uma coleção, mas o nó “Descartar campos” não aceita coleções).\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/screenshot-edit-splitfields-wrong-parent.png)


# Usar SelectFromCollection (Selecionar da coleção) para escolher qual conjunto de dados manter
<a name="transforms-configure-select-collection"></a>

Use a transformação *SelectFromCollection* (Selecionar da coleção) para converter uma coleção de `DynamicFrames` em um único `DynamicFrame`.

**Para adicionar um nó de transformação SelectFromCollection (Selecionar da coleção) ao diagrama de tarefas**

1. (Opcional) Abra o painel Recurso e escolha **SelectFromCollection**) para adicionar uma nova transformação ao diagrama de trabalho, se necessário. 

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Escolha a guia **Transform** (Transformação).

1. No cabeçalho **Frame index** (Índice de quadros), escolha o número do índice da matriz que corresponde ao `DynamicFrame` que deseja selecionar na coleção de `DynamicFrames`.

   Por exemplo, se o nó pai para essa transformação for uma transformação *SplitFields* (Dividir campos), na guia **Output schema** (Esquema de saída) desse nó, você pode ver o esquema de cada `DynamicFrame`. Se quiser manter o `DynamicFrame` associado ao esquema de **Output 2**, você pode selecionar **1** para o valor de **Frame index** (Índice de quadros), que é o segundo valor na lista.

   Somente o `DynamicFrame` que você escolher será incluído na saída.

1. (Opcional) depois de configurar as propriedades do nó de transformação, você pode visualizar o esquema modificado dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

# Localizar e preencher valores ausentes em um conjunto de dados
<a name="transforms-configure-fmv"></a>

Você pode usar a transformação *FillMissingValues* (Preencher valores ausentes) para localizar registros no conjunto de dados que têm valores ausentes e adicionar um novo campo com um valor determinado por imputação. O conjunto de dados de entrada é usado para treinar o modelo de machine learning (ML) que determina qual deve ser o valor ausente. Se você usar conjuntos de dados incrementais, cada conjunto incremental será usado como dados de treinamento para o modelo de ML, portanto, os resultados podem não ser tão precisos.

**Para adicionar um nó de transformação FillMissingValues (Preencher valores ausentes) ao diagrama de trabalho**

1. (Opcional) abra o painel Recurso e escolha **FillMissingValues**) para adicionar uma nova transformação ao diagrama de trabalho, se necessário.

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação. 

1. Escolha a guia **Transform** (Transformação).

1. Em **Data field** (Campo de dados), escolha o nome da coluna ou do campo nos dados de origem que você deseja analisar quanto a valores ausentes.

1. (Opcional) no campo **New field name** (Nome do novo campo), insira um nome para o campo adicionado a cada registro que manterá o valor estimado de substituição para o campo analisado. Se o campo analisado não tiver um valor ausente, o valor no campo analisado será copiado para o novo campo. 

   Se você não especificar um nome para o novo campo, o nome padrão será o nome da coluna analisada seguido de `_filled`. Por exemplo, se você inserir **Age** em **Data field** (Campo de dados) e não especificar um valor para **New field name** (Nome do novo campo), um novo campo chamado **Age\$1filled** será adicionado a cada registro.

1. (Opcional) depois de configurar as propriedades do nó de transformação, você pode visualizar o esquema modificado dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

# Filtrar chaves dentro de um conjunto de dados
<a name="transforms-filter"></a>

Use a transformação *Filter* (Filtro) para criar um novo conjunto de dados filtrando registros do conjunto de dados de entrada com base em uma expressão regular. As linhas que não satisfaçam a condição do filtro são removidas da saída.
+ Para tipos de dados de string, você pode filtrar linhas em que o valor da chave corresponde a uma string especificada.
+ Para tipos de dados numéricos, você pode filtrar linhas comparando o valor da chave com um valor especificado usando os operadores de comparação `<`, `>`, `=`, `!=`, `<=` e `>=`.

Se você especificar várias condições de filtro, os resultados serão combinados usando um operador `AND` por padrão, mas você pode escolher `OR` em vez disso.

A transformação *Filter* (Filtro) diferencia maiúsculas de minúsculas. Adicione uma transformação *ApplyMapping* (Aplicar mapeamento) como um nó pai, se você precisar de nomes de chave de propriedade sem distinção entre maiúsculas e minúsculas.

**Para adicionar um nó de transformação Filter (Filtro) ao diagrama de trabalho**

1. (Opcional) Abra o painel Recurso e escolha **Filtro** para adicionar uma nova transformação ao diagrama de trabalho, se necessário. 

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Escolha a guia **Transform** (Transformação).

1. Escolha **Global AND** ou **Global OR**. Isso determina como várias condições de filtro são combinadas. Todas as condições são combinadas usando os operadores `AND` ou `OR`. Se você tiver apenas uma única condição de filtro, pode escolher qualquer uma.

1. Escolha o botão **Add condition** (Adicionar condição) na seção **Filter condition** (Condição de filtro) para adicionar uma condição de filtro. 

   No campo **Key** (Chave), escolha um nome de chave de propriedade do conjunto de dados. No campo **Operation** (Operação), escolha o operador de comparação. No campo **Value** (Valor), insira o valor de comparação. Estes são alguns exemplos de configurações de filtro:
   + `year >= 2018`
   + `State matches 'CA*'`

   Ao filtrar valores de string, certifique-se de que o valor de comparação usa um formato de expressão regular que corresponda à linguagem de script selecionada nas propriedades do trabalho (Python ou Scala).

1. Adicione mais condições de filtro, conforme necessário. 

1. (Opcional) depois de configurar as propriedades do nó de transformação, você pode visualizar o esquema modificado dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

# Usar DropNullFields para remover campos com valores nulos
<a name="transforms-dropnull-fields"></a>

 Use a transformação *DropNullFields* para remover campos do conjunto de dados se todos os valores no campo forem "null". Por padrão, o AWS Glue Studio reconhecerá objetos nulos, mas alguns valores como strings vazias, strings "null", inteiros -1 ou outros espaços reservados, como zeros, não são reconhecidos automaticamente como nulos. 

**Para usar DropNullFields**

1.  Adicione um nó DropNullFields ao diagrama do trabalho. 

1.  Na guia **Node properties** (Propriedades do nó), escolha valores adicionais que representem um valor nulo. Você pode optar por selecionar nenhum ou todos os valores:   
![\[A captura de tela mostra a guia Transform (Transformação) para o nó DropNullFields.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/DropNullFields-transform-tab.png)
   +  String vazia ("" ou ''): os campos que contiverem strings vazias serão removidos 
   +  "String null": os campos que contiverem a string com a palavra "null" serão removidos 
   +  Inteiro -1: os campos que contiverem um número inteiro -1 (menos um) serão removidos 

1.  Se necessário, você também poderá especificar valores nulos personalizados. Esses são valores nulos que podem ser exclusivos do seu conjunto de dados. Para adicionar um valor nulo personalizado, escolha **Add new value** (Adicionar novo valor). 

1.  Insira o valor nulo personalizado. Por exemplo, ele pode zero ou qualquer valor que esteja sendo usado para representar um nulo no conjunto de dados. 

1.  Escolha o tipo de dados no campo suspenso. Os tipos de dados podem ser String ou Integer. 
**nota**  
 Os valores nulos personalizados e seus tipos de dados devem corresponder exatamente para que os campos sejam reconhecidos como valores nulos e os campos removidos. Correspondências parciais em que apenas o valor nulo personalizado corresponde, mas o tipo de dados não resultará na remoção dos campos. 

# Usar uma consulta SQL para transformar dados
<a name="transforms-sql"></a>

Você pode usar uma transformação **SQL** para escrever sua própria transformação na forma de uma consulta SQL.

Um nó de transformação SQL pode ter vários conjuntos de dados como entradas, mas produz apenas um único conjunto de dados como saída. Ele contém um campo de texto, onde você insere a consulta do Apache SparkSQL. Você pode atribuir aliases a cada conjunto de dados usado como entrada, para ajudar a simplificar a consulta SQL. Para obter mais informações sobre a sintaxe SQL, consulte a [documentação do Spark SQL](https://spark.apache.org/docs/latest/sql-ref.html).

**nota**  
Se você usar uma transformação do Spark SQL com uma origem dos dados localizada em uma VPC, adicione um endpoint da VPC do AWS Glue à VPC que contém a origem dos dados. Para obter mais informações sobre como configurar endpoints de desenvolvimento, consulte [Adicionar um endpoint de desenvolvimento](https://docs.aws.amazon.com/glue/latest/dg/add-dev-endpoint.html), [Configurar seu ambiente para endpoints de desenvolvimento](https://docs.aws.amazon.com/glue/latest/dg/start-development-endpoint.html) e [Acessar o endpoint de desenvolvimento](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint-elastic-ip.html) no *Guia do desenvolvedor do AWS Glue*.

**Para usar um nó de transformação SQL no diagrama de trabalho**

1. (Opcional) adicione um nó de transformação ao diagrama de trabalho, se necessário. Escolha **Consulta SQL** para o tipo de nó.
**nota**  
 Se você usar uma sessão de visualização de dados e um SQL personalizado ou um nó de código personalizado, a sessão de visualização de dados executará o SQL ou o bloco de código no estado em que se encontra para todo o conjunto de dados. 

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se um nó pai ainda não estiver selecionado, ou se você quiser várias entradas para a transformação SQL, escolha um nó na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação. Adicione nós pais conforme necessário.

1. Escolha a guia **Transform** (Transformação) no painel de detalhes do nó. 

1. Os conjuntos de dados de origem para a consulta SQL são identificados pelos nomes especificados no campo **Name** (Nome) de cada nó. Se você não quiser usar esses nomes, ou se eles não forem adequados para uma consulta SQL, você pode associar um nome a cada conjunto de dados. O console fornece aliases padrão, como `MyDataSource`.

   Por exemplo, se um nó pai do nó de transformação SQL for nomeado como `Rename Org PK field`, você poderá associar o nome `org_table` com este conjunto de dados. Esse alias pode ser usado na consulta SQL no lugar do nome do nó. 

1. No campo de entrada de texto, no cabeçalho **Code block** (Bloco de código), cole ou insira a consulta SQL. O campo de texto exibe o realce da sintaxe SQL e sugestões de palavra-chave.

1. Com o nó de transformação SQL selecionado, escolha a guia **Output schema** (Esquema de saída) e, em seguida, escolha **Edit** (Editar). Forneça as colunas e os tipos de dados que descrevem os campos de saída da consulta SQL.

   Especifique o esquema usando as seguintes ações na seção **Output schema** (Esquema de saída) da página:
   + Para renomear uma coluna, coloque o cursor na caixa de texto **Key** (Chave) da coluna (também conhecida como *field* (campo) ou *property key* [chave de propriedade]) e insira o novo nome.
   + Para alterar o tipo de dados de uma coluna, selecione o novo tipo de dados para a coluna na lista suspensa.
   + Para adicionar uma nova coluna de nível superior ao esquema, escolha o botão Overflow (excedente, ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/edit-schema-actions-button.png)) e, em seguida, escolha **Add root key** (Adicionar chave raiz). Novas colunas são adicionadas na parte superior do esquema.
   + Para remover uma coluna do esquema, escolha o ícone de exclusão (![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/delete-icon-black.png)) à extrema direita do nome da chave. 

1. Quando terminar de especificar o esquema de saída, escolha **Apply** (Aplicar) para salvar suas alterações e saia do editor de esquema. Se não quiser salvar as alterações, escolha **Cancel** (Cancelar) para editar o editor de esquemas.

1. (Opcional) depois de configurar as propriedades do nó e da transformação, você pode previsualizar o conjunto de dados modificado escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

# Usar Aggregate para fazer cálculos resumidos em campos selecionados
<a name="transforms-aggregate-fields"></a>

**Para usar a transformação Aggregate**

1.  Adicione o nó Aggregate ao diagrama do trabalho. 

1.  Na guia **Node properties** (Propriedades de nó), escolha campos para agrupar selecionando o campo suspenso (opcional). Você pode selecionar mais de um campo por vez ou procurar um nome de campo digitando na barra de pesquisa. 

    Quando os campos são selecionados, o nome e o tipo de dados são mostrados. Para remover um campo, escolha "X" no campo.   
![\[A captura de tela mostra a guia Transform (Transformação) para o nó Aggregate.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/Aggregate-transform-tab.png)

1.  Selecione **Aggregate another column** (Agregar outra coluna). É necessário selecionar pelo menos um campo.   
![\[A captura de tela mostra os campos quando a opção Aggregate another column (Agregar outra coluna) é escolhida.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/Aggregate-fieldtoaggregate.png)

1.  Escolha um campo na lista suspensa **Field to aggregate** (Campo a ser agregado). 

1.  Escolha a função de agregação a ser aplicada ao campo escolhido: 
   +  avg: calcula a média 
   +  CountDistinct: calcula o número de valores não nulos exclusivos 
   +  count: calcula o número de valores não nulos 
   +  first: retorna o primeiro valor que satisfaz os critérios "agrupar por" 
   +  last: retorna o último valor que satisfaz os critérios "agrupar por" 
   +  kurtosis: calcula a nitidez do pico de uma curva de distribuição de frequência 
   +  max: retorna o maior valor que satisfaz os critérios "agrupar por" 
   +  min: retorna o menor valor que satisfaz os critérios "agrupar por" 
   +  skewness: medida da assimetria da distribuição de probabilidade de uma distribuição normal 
   +  stddev\$1pop: calcula o desvio padrão da população e retorna a raiz quadrada da variância da população 
   +  sum: a soma de todos os valores no grupo 
   +  sumDistinct: a soma dos valores distintos no grupo 
   +  var\$1samp: a variância da amostra do grupo (ignora nulos) 
   +  var\$1pop: a variância da população do grupo (ignora nulos) 

# Nivelar structs aninhados
<a name="transforms-flatten"></a>

*Nivele* os campos de structs aninhados nos dados para transformá-los em campos de nível superior. Os novos campos são nomeados usando o nome do campo prefixado com os nomes dos campos de struct para alcançá-lo, separados por pontos. 

Por exemplo, se os dados tiverem um campo do tipo Struct denominado “phone\$1numbers” que, entre outros campos, tenha um do tipo “Struct” denominado “home\$1phone” com dois campos: “country\$1code” e “number”. Depois de nivelados, esses dois campos se tornarão campos de nível superior denominados: “phone\$1numbers.home\$1phone.country\$1code” e “phone\$1numbers.home\$1phone.number”, respectivamente.

**Para adicionar um nó de transformação *Nivelar* ao diagrama do trabalho**

1. Abra o painel Recurso e escolha a guia **Transformações** e escolha **Nivelar** para adicionar uma nova transformação ao diagrama do trabalho. Você também pode usar a barra de pesquisa digitando 'Flatten' e clicando no nó Nivelar. O nó selecionado no momento da adição do nó será o nó superior.  
![\[A captura de tela mostra o Painel Recurso e a barra de pesquisa preenchida com a palavra 'Flatten'. O resultado da pesquisa mostra a transformação Flatten.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transform-flatten.png)

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. (Opcional) Na guia **Transformação**, você pode limitar o nível máximo de aninhamento máximo a ser nivelado. Por exemplo, definir esse valor como 1 significa que somente structs de nível superior serão nivelados. Definir o máximo como 2 nivela o nível superior e os structs diretamente abaixo dele.

# Adicionar uma coluna de UUID
<a name="transforms-uuid"></a>

Quando você adiciona uma coluna *UUID* (Universally Unique Identified), cada linha recebe uma string exclusiva de 36 caracteres.

**Para adicionar um nó de transformação *UUID* ao diagrama do trabalho**

1. Abra o painel Recurso e escolha **UUID** para adicionar uma nova transformação ao seu diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. (Opcional) Na guia **Transformação**, você pode personalizar o nome da nova coluna. Por padrão, ela será denominada "uuid".

# Adicionar uma coluna de identificadores
<a name="transforms-identifier"></a>

Atribua um *identificador* numérico a cada linha no conjunto de dados.

**Para adicionar um nó de transformação *identificador* ao diagrama do trabalho**

1. Abra o painel Recurso e escolha **Identificador** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. (Opcional) Na guia **Transformação**, você pode personalizar o nome da nova coluna. Por padrão, ela será denominada "id".

1. (Opcional) Se o trabalho processar e armazenar dados de forma incremental, será importante evitar que os mesmos IDs sejam reutilizados em diversas execuções do trabalho.

   Na guia **Transformação**, marque a opção **exclusivo** da caixa de seleção. Essa opção incluirá o timestamp do trabalho no identificador, tornando-o exclusivo entre as diversas execuções. Para permitir um número maior, a coluna em vez do tipo longo será um decimal.

# Converter uma coluna no tipo timestamp
<a name="transforms-to-timestamp"></a>

Você pode usar a transformação *Em timestamp* para alterar o tipo de dados de uma coluna de numérico ou string em timestamp, para que ela possa ser armazenada com esse tipo de dados ou aplicada a outras transformações que exijam um timestamp.

**Para adicionar um nó de transformação *Em timestamp* ao diagrama do trabalho**

1. Abra o painel Recurso e escolha Em **Para timestamp** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformação**, insira o nome da coluna a ser convertida.

1. Na guia **Transformação**, defina como analisar a coluna selecionada escolhendo o tipo.

   Se o valor for um número, ele poderá ser expresso em segundos (timestamp do Unix/Python), milissegundos ou microssegundos; escolha a opção correspondente.

   Se o valor for uma string formatada, escolha o tipo “iso”, e a string precisará estar conforme com uma das variantes do formato ISO, por exemplo: “2022-11-02T14:40:59.915Z“.

   Se não souber o tipo nesse momento ou se linhas diferentes usarem tipos diferentes, você poderá escolher ”detecção automática“ e o sistema fará sua melhor suposição, com um pequeno custo de desempenho.

1. (Opcional) Na guia **Transformação**, em vez de converter a coluna selecionada, você pode criar uma nova e manter a original inserindo um nome para a nova coluna.

# Converter uma coluna de timestamp em uma string formatada
<a name="transforms-format-timestamp"></a>

Formate uma coluna do tipo timestamp em uma do tipo string de acordo com um padrão. Você pode usar *Formatar timestamp* para obter a data e a hora como uma string com o formato desejado. Você pode definir o formato usando a [sintaxe de data do Spark](https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html), bem como a maioria dos [códigos de data do Python](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).

Por exemplo, se você quiser que a string de data seja formatada como “2023-01-01 00:00”, poderá definir esse formato usando a sintaxe do Spark como “aaaa-MM-dd HH:mm” ou os códigos de data equivalentes do Python como “%A-%m-%d %H: %M”

**Para adicionar um nó de transformação *Formatar timestamp* ao diagrama do trabalho**

1. Abra o painel Recurso e escolha **Formatar timestamp** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformação**, insira o nome da coluna a ser convertida.

1. Na guia **Transformação**, insira o padrão de **Formato de timestamp** a ser usado, expresso com a [sintaxe de data do Spark](https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html) ou os [códigos de data do Python](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).

1. (Opcional) Na guia **Transformação**, em vez de converter a coluna selecionada, você pode criar uma nova e manter a original inserindo um nome para a nova coluna.

# Criar uma transformação de roteador condicional
<a name="transforms-conditional-router"></a>

 A transformação de roteador condicional permite que você aplique várias condições aos dados de entrada. Cada linha dos dados de entrada avaliada por uma condição de filtro de grupo e processada no grupo correspondente. Se uma linha atender a mais de uma condição de filtro de grupo, a transformação passará a linha para vários grupos. Se uma linha não atender a nenhuma condição, poderá ser descartada ou roteada para um grupo de saída padrão. 

 Essa transformação é semelhante à transformação de filtro, mas é útil para usuários que desejem testar os mesmos dados de entrada em várias condições. 

**Para adicionar uma transformação condicional de roteador:**

1.  Escolha um nó onde você realizará a transformação de roteador condicional. Esse pode ser um nó de origem ou outra transformação. 

1.  Escolha **Ação** e use a barra de pesquisa para localizar e escolher “Roteador condicional”. Uma transformação de **roteador condicional** é adicionada junto com dois nós de saída. Um único nó de saída, "Grupo padrão", contém os registros que não atendem a nenhuma das condições definidas nos outros nós de saída. O grupo padrão não pode ser editado.   
![\[A captura de tela mostra o nó da transformação de roteador condicional conectado a um nó de origem. Os nós de saída são mostrados como ramificações do nó de roteador condicional.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transform-conditional-router-node.png)

    Você pode adicionar outros grupos de saída escolhendo **Adicionar grupo**. Para cada grupo de saída, você pode nomear o grupo e adicionar condições de filtro e um operador lógico.   
![\[A captura de tela mostra a guia de transformação de roteador condicional com opções para nomear o grupo de saída, o operador lógico e os filtros condicionais.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transform-conditional-router-tab.png)

1.  Dê outro nome ao grupo de saída inserindo um novo nome para o grupo. O AWS Glue Studio nomeará automaticamente os grupos para você (por exemplo, "output\$1group\$11"). 

1.  Escolha um operador lógico (**AND**, **OR**) e adicione uma **condição de filtro** especificando **Chave**, **Operação** e **Valor**. Os operadores lógicos permitem que você implemente mais de uma condição de filtro e aplique o operador lógico a cada condição de filtro especificada. 

    Ao especificar a chave, você pode escolher entre as chaves disponíveis em seu esquema. Em seguida, escolha a operação disponível de acordo com o tipo de chave selecionada. Por exemplo, se o tipo de chave for "string", a operação disponível para você escolher é "matches".   
![\[A captura de tela mostra a guia de transformação de roteador condicional com os campos de condição do filtro para chave, operação e valor.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transform-conditional-router-filter-condition.png)

1.  Insira o valor no campo **Valor**. Selecione **Adicionar condição** para adicionar mais condições. Para remover condições de filtro, selecione o ícone de lixeira. 

# Usando a transformação Concatenate Columns para acrescentar colunas
<a name="transforms-concatenate-columns"></a>

 A transformação Concatenate permite que você crie uma nova coluna de strings usando os valores de outras colunas com um espaçador opcional. Por exemplo, se definirmos uma coluna concatenada “data” como a concatenação de “ano”, “mês” e “dia” (nessa ordem) com “-” como espaçador, obteríamos: 


| dia | mês | ano | date | 
| --- | --- | --- | --- | 
| 01 | 01 | 2020 | 2020-01-01 | 
| 02 | 01 | 2020 | 2020-01-02 | 
| 03 | 01 | 2020 | 2020-01-03 | 
| 04 | 01 | 2020 | 2020-01-04 | 

**Para adicionar uma transformação Concatenate:**

1. Abra o painel Recurso. Em seguida, escolha **Concatenate Columns** para adicionar uma nova transformação ao diagrama de trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, insira o nome da coluna que conterá a string concatenada, bem como as colunas a serem concatenadas. A ordem na qual você marcar as colunas na lista suspensa será a ordem usada.  
![\[A captura de tela mostra a guia Transformar para a transformação Concatenate.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-concatenate-transform-tab.png)

1. **Espaçador - opcional** - Insira uma string para colocar entre os campos concatenados. Por padrão, não há espaçador.

1. **Valor nulo - opcional**: insira uma string a ser usada quando o valor de uma coluna for nulo. Por padrão, nos casos em que as colunas têm o valor 'NULL' ou 'NA', é usada uma string vazia.

# Usar a transformação Split String para dividir uma coluna de string
<a name="transforms-split-string"></a>

 A transformação Split String permite que você divida uma string em uma matriz de tokens usando uma expressão regular para definir como a divisão é feita. Em seguida, você pode manter a coluna como um tipo de matriz ou aplicar uma transformação **Array To Columns** após esta, para extrair os valores da matriz nos campos de nível superior, supondo que cada token tenha um significado que conhecemos de antemão. Além disso, se a ordem dos tokens for irrelevante (por exemplo, um conjunto de categorias), você poderá usar a transformação **Explode** para gerar uma linha separada para cada valor. 

 Por exemplo, você pode dividir a coluna “categories” usando uma vírgula como padrão para adicionar uma coluna “categories\$1arr”. 


| product\$1id | categories | categories\$1arr | 
| --- | --- | --- | 
| 1 | esportes, inverno | [esportes, inverno] | 
| 2 | jardim, ferramentas | [jardim, ferramentas] | 
| 3 | videogames | [videogames] | 
| 4 | jogo, jogo de tabuleiro, social | [jogo, jogo de tabuleiro, social] | 

**Para adicionar uma transformação Split String:**

1. Abra o painel Recurso e escolha Split String para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia Propriedades do nó, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, escolha a coluna a ser dividida e insira o padrão a ser usado para dividir a string. Na maioria dos casos, você pode simplesmente inserir o(s) caractere(s), a menos que tenha um significado especial como expressão regular e precise de escape. Os caracteres que precisam de escape são: `\.[]{}()<>*+-=!?^$|` adicionando uma barra invertida na frente do caractere. Por exemplo, se você quiser separar por um ponto ('.'), você precisa inserir `\.`. No entanto, uma vírgula não tem um significado especial e só pode ser especificada como está: `,`.  
![\[A captura de tela mostra a guia Transformar para a transformação Split String.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-split-string-transform-tab.png)

1. (Opcional) Se você quiser manter a coluna de string original, poderá inserir um nome para uma nova coluna de matriz, mantendo assim a coluna de string original e a nova coluna de matriz tokenizada.

# Usando a transformação Array To Columns para extrair os elementos de uma matriz para colunas de nível superior
<a name="transforms-array-to-columns"></a>

 A transformação Array To Columns permite extrair alguns ou todos os elementos de uma coluna do tipo matriz para novas colunas. A transformação preencherá as novas colunas o máximo possível se a matriz tiver valores suficientes para extrair, opcionalmente usando os elementos nas posições especificadas. 

 Por exemplo, se você tiver uma coluna de matriz “sub-rede”, que foi o resultado da aplicação da transformação “Split String” em uma sub-rede ip v4, você pode extrair a primeira e a quarta posições para as novas colunas “primeiro\$1octeto” e “quarto\$1octeto”. A saída da transformação neste exemplo seria (observe que as duas últimas linhas têm matrizes mais curtas do que o esperado): 


| sub-rede | primeiro\$1octeto | quarto\$1octeto | 
| --- | --- | --- | 
| [54, 240, 197, 238] | 54 | 238 | 
| [192, 168, 0, 1] | 192 | 1 | 
| [192, 168] | 192 |  | 
| [] |  |  | 

**Para adicionar uma transformação Array To Columns:**

1. Abra o painel Recurso e escolha **Array To Columns** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, escolha a coluna da matriz a ser extraída e insira a lista de novas colunas para os tokens extraídos.  
![\[A captura de tela mostra a guia Transformar para a transformação Array To Columns.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-array-to-columns-transform-tab.png)

1. (Opcional) Se não quiser usar os tokens da matriz para atribuir às colunas, você pode especificar os índices a serem obtidos, que serão atribuídos à lista de colunas na mesma ordem especificada. Por exemplo, se as colunas de saída forem “coluna1, coluna2, coluna3” e os índices “4, 1, 3”, o quarto elemento da matriz irá para a coluna1, o primeiro para a coluna2 e o terceiro para a coluna3 (se a matriz for menor que o número do índice, será atribuído um valor NULL).

# Usar a transformação Add Current Timestamp
<a name="transforms-add-current-timestamp"></a>

 A transformação **Add Current Timestamp** permite marcar as linhas com a hora em que os dados foram processados. Isso é útil para fins de auditoria ou para rastrear a latência no pipeline de dados. Você pode adicionar essa nova coluna como um tipo de dados de carimbo de data/hora ou como string formatada. 

**Para adicionar uma transformação Add Current Timestamp:**

1. Abra o painel Recurso e escolha **Add Current Timestamp** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior. 

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.  
![\[A captura de tela mostra a guia Transformar para a transformação Add Current Timestamp.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-add-current-timestamp-transform-tab.png)

1. (Opcional) Na guia **Transformar**, insira um nome personalizado para a nova coluna e um formato se você preferir que a coluna seja uma string de data formatada.

# Usar a transformação Pivot Rows to Columns
<a name="transforms-pivot-rows-to-columns"></a>

 A transformação **Pivot Rows to Columns** permite agregar uma coluna numérica girando valores exclusivos nas colunas selecionadas que se tornam novas colunas (se várias colunas forem selecionadas, os valores serão concatenados para nomear as novas colunas). Dessa forma, as linhas são consolidadas e têm mais colunas com agregações parciais para cada valor exclusivo. Por exemplo, se você tiver esse conjunto de dados de vendas por mês e país (classificado para ser mais fácil de ilustrar): 


| ano | mês | país | valor | 
| --- | --- | --- | --- | 
| 2020 | Jan | uk | 32 | 
| 2020 | Jan | de | 42 | 
| 2020 | Jan | us | 64 | 
| 2020 | Fev | uk | 67 | 
| 2020 | Fev | de | 4 | 
| 2020 | Fev | de | 7 | 
| 2020 | Fev | us | 6 | 
| 2020 | Fev | us | 12 | 
| 2020 | Jan | us | 90 | 

 Se você utilizar **valor** e **país** como as colunas de agregação, novas colunas serão criadas a partir da coluna **país** original. Na tabela abaixo, você tem novas colunas para **de**, **uk** e **us** em vez da coluna **país**. 


| ano | mês | de | uk | us | 
| --- | --- | --- | --- | --- | 
| 2020 | Jan | 42 | 32 | 64 | 
| 2020 | Jan | 11 | 67 | 18 | 
| 2021 | Jan |  |  | 90 | 

 Se, em vez disso, você quiser dinamizar o mês e o país, obterá uma coluna para cada combinação dos valores dessas colunas: 


| ano | Jan\$1de | Jan\$1uk | Jan\$1us | Fev\$1de | Fev\$1uk | Fev\$1us | 
| --- | --- | --- | --- | --- | --- | --- | 
| 2020 | 42 | 32 | 64 | 11 | 67 | 18 | 
| 2021 |  |  | 90 |  |  |  | 

**Para adicionar uma transformação Pivot Rows Ro Columns:**

1. Abra o painel Recurso e escolha **Pivot Rows To Columns** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, escolha a coluna numérica que será agregada para produzir os valores para as novas colunas, a função de agregação a ser aplicada e a(s) coluna(s) cujos valores exclusivos serão convertidos em novas colunas.  
![\[A captura de tela mostra a guia Transform para a transformação Pivot Rows To Columns.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-pivot-rows-to-columns-transform-tab.png)

# Usar a transformação Unpivot Columns To Rows
<a name="transforms-unpivot-columns-to-rows"></a>

 A transformação **Unpivot** permite converter colunas em valores de novas colunas, gerando uma linha para cada valor exclusivo. É o oposto de pivot, mas observe que não é equivalente, pois não pode separar linhas com valores idênticos que eram agregados ou dividir combinações nas colunas originais (você pode fazer isso posteriormente usando uma transformação Split). Por exemplo, se tiver a seguinte tabela: 


| ano | mês | de | uk | us | 
| --- | --- | --- | --- | --- | 
| 2020 | Jan | 42 | 32 | 64 | 
| 2020 | Fev | 11 | 67 | 18 | 
| 2021 | Jan |  |  | 90 | 

 Você pode despivotar as colunas: “de”, “uk” e “us” em uma coluna “país” com o valor “quantidade” e obter o seguinte (classificado aqui para fins de ilustração): 


| ano | mês | país | valor | 
| --- | --- | --- | --- | 
| 2020 | Jan | uk | 32 | 
| 2020 | Jan | de | 42 | 
| 2020 | Jan | us | 64 | 
| 2020 | Fev | uk | 67 | 
| 2020 | Fev | de | 11 | 
| 2020 | Fev | us | 18 | 
| 2021 | Jan | us | 90 | 

 Observe que as colunas que têm um valor NULL (“de” e “uk” de jan 2021) não são geradas por padrão. Você pode ativar essa opção para obter: 


| ano | mês | país | valor | 
| --- | --- | --- | --- | 
| 2020 | Jan | uk | 32 | 
| 2020 | Jan | de | 42 | 
| 2020 | Jan | us | 64 | 
| 2020 | Fev | uk | 67 | 
| 2020 | Fev | de | 11 | 
| 2020 | Fev | us | 18 | 
| 2021 | Jan | us | 90 | 
| 2021 | Jan | de |  | 
| 2021 | Jan | uk |  | 

**Para adicionar uma transformação Unpivot Columns to Rows:**

1. Abra o painel Recurso e escolha **Unpivot Rows To Columns** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, insira as novas colunas a serem criadas para conter os nomes e valores das colunas escolhidas para despivotar.  
![\[A captura de tela mostra a guia Transformar para a transformação Unpivot Columns To Rows.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-unpivot-columns-to-rows-transform-tab.png)

# Usando a transformação Autobalance Processing para otimizar seu runtime
<a name="transforms-autobalance-processing"></a>

 A transformação **Autobalance Processing** redistribui os dados entre os operadores para melhorar a performance. Isso ajuda nos casos em que os dados estão desbalanceados ou, como vêm da fonte, não permitem processamento paralelo suficiente. Isso é comum quando a fonte é compactada com gzip ou é JDBC. A redistribuição de dados tem um custo de performance módico, portanto, a otimização nem sempre compensará esse esforço se os dados já estiverem bem balanceados. Por baixo, a transformação usa a repartição do Apache Spark para reatribuir dados aleatoriamente entre um número de partições ideal para a capacidade do cluster. Para usuários avançados, é possível inserir um número de partições manualmente. Além disso, ele pode ser usado para otimizar a gravação de tabelas particionadas reorganizando os dados com base em colunas especificadas. Isso resulta em arquivos de saída mais consolidados. 

****

1. Abra o painel Recurso e escolha **Autobalance Processing** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.

1. (Opcional) Na guia **Transformação**, você pode inserir um número de partições. Em geral, é recomendável que você deixe o sistema decidir esse valor, mas pode ajustar o multiplicador ou inserir um valor específico se precisar controlar isso. Se você for salvar os dados particionados por colunas, poderá escolher as mesmas colunas que as colunas de repartição. Dessa forma, minimizará o número de arquivos em cada partição e evitará muitos arquivos por partição, o que prejudicaria a performance das ferramentas que consultam esses dados.  
![\[A captura de tela mostra a guia Transformar para a transformação Autobalance Processing.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-autobalance-processing-transform-tab.png)

# Usando a transformação Derived Column para combinar outras colunas
<a name="transforms-derived-column"></a>

 A transformação **Derived Column** permite definir uma nova coluna com base em uma fórmula matemática ou expressão SQL na qual você pode usar outras colunas nos dados, além de constantes e literais. Por exemplo, para derivar uma coluna de “porcentagem” das colunas “success” e “count”, você pode inserir a expressão SQL: “success \$1 100/count \$1\$1 '%'”. 

 Exemplo de resultado: 


| success | contagem | percentage | 
| --- | --- | --- | 
| 14 | 100 | 14% | 
| 6 | 20 | 3% | 
| 3 | 40 | 7,5% | 

**Para adicionar uma transformação Derived Column:**

1. Abra o painel Recurso e escolha **Derived Column** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transform**, insira o nome da coluna e a expressão do conteúdo.  
![\[A captura de tela mostra a guia Transform para a transformação Derived Column.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-dervied-column-transform-tab.png)

# Usar a transformação Lookup para adicionar dados correspondentes de uma tabela de catálogo
<a name="transforms-lookup"></a>

 A transformação **Lookup** permite adicionar colunas de uma tabela de catálogo definida quando as chaves correspondem às colunas de pesquisa definidas nos dados. Isso equivale a fazer uma junção externa esquerda entre os dados e a tabela de pesquisa usando como condição as colunas correspondentes. 

**Para adicionar uma transformação Lookup:**

1. Abra o painel Recurso e escolha **Lookup** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, insira o nome totalmente qualificado da tabela de catálogo a ser usado para realizar as pesquisas. Por exemplo, se seu banco de dados for “mydb” e sua tabela “mytable”, digite “mydb.mytable”. Em seguida, insira os critérios para encontrar uma correspondência na tabela de pesquisa, se a chave de pesquisa for composta. Insira a lista de colunas de chave separadas por vírgulas. Se uma ou mais das colunas de chave não tiverem o mesmo nome, você precisará definir o mapeamento de correspondência. 

   Por exemplo, se as colunas de dados forem “user\$1id” e “region” e na tabela de usuários as colunas correspondentes forem denominadas “id” e “region”, no campo **Colunas a serem correspondidas**, digite: "user\$1id=id, region". Você poderia fazer region=region, mas não é necessário, pois são iguais.

1. Por fim, insira as colunas a serem extraídas da linha correspondente na tabela de pesquisa para incorporá-las aos dados. Se nenhuma correspondência for encontrada, essas colunas serão definidas como NULL.
**nota**  
Abaixo da transformação **Lookup**, está sendo usada uma junção à esquerda para ser eficiente. Se a tabela de pesquisa tiver uma chave composta, certifique-se de que as colunas correspondentes estejam configuradas para corresponder a todas as colunas-chave, de forma que somente uma correspondência possa ocorrer. Caso contrário, várias linhas de pesquisa corresponderão e isso resultará na adição de linhas extras para cada uma dessas correspondências.  
![\[A captura de tela mostra a guia Transformar para a transformação Lookup.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-lookup-transform-tab.png)

# Usando a transformação Explode Array ou Map Into Rows
<a name="transforms-explode-array"></a>

 A transformação **Explode** permite extrair valores de uma estrutura aninhada em linhas individuais que são mais fáceis de manipular. No caso de uma matriz, a transformação gerará uma linha para cada valor da matriz, replicando os valores para as outras colunas na linha. No caso de um mapa, a transformação gerará uma linha para cada entrada com a chave e o valor como colunas, além de quaisquer outras colunas na linha. 

 Por exemplo, se tivermos esse conjunto de dados que tem uma coluna de matriz “categoria” com vários valores. 


| product\$1id | categoria | 
| --- | --- | 
| 1 | [esportes, inverno] | 
| 2 | [jardim, ferramentas] | 
| 3 | [videogames] | 
| 4 | [jogo, jogo de tabuleiro, social] | 
| 5 | [] | 

 Se você explodir a coluna “categoria” em uma coluna com o mesmo nome, você substituirá a coluna. Você pode selecionar que deseja que os NULLs sejam incluídos para obter o seguinte (ordenado para fins ilustrativos): 


| product\$1id | categoria | 
| --- | --- | 
| 1 | esportes | 
| 1 | inverno | 
| 2 | jardim | 
| 2 | ferramenta | 
| 3 | videogames | 
| 4 | jogo | 
| 4 | jogo de tabuleiro | 
| 4 | social | 
| 5 |  | 

**Para adicionar uma transformação Explode Array ou Map Into Rows:**

1. Abra o painel Recurso e escolha **Explode Array Or Map Into Rows** para adicionar uma nova transformação ao diagrama do seu trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. (Opcional) Na guia **Propriedades do nó**, insira um nome para o nó no diagrama do trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista Node parents (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, escolha a coluna a ser explodida (ela deve ser um tipo de matriz ou mapa). Em seguida, insira um nome para a coluna para os itens da matriz ou os nomes das colunas para as chaves e valores se você estiver explodindo um mapa.

1. (Opcional) Na guia **Transformar**, por padrão, se a coluna a ser explodida for NULL ou tiver uma estrutura vazia, ela será omitida no conjunto de dados explodido. Se você quiser manter a linha (com as novas colunas como NULL), marque “Incluir NULLs”.  
![\[A captura de tela mostra a guia Transformar para a transformação Explode Array ou Map Into Rows.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/transforms-explode-array-transform-tab.png)

# Usar a transformação Record Matching para invocar uma transformação de classificação de dados existentes
<a name="transforms-record-matching"></a>

Usar a transformação invoca uma transformação de classificação de dados de machine learning Record Matching existente.

A transformação avalia os dados atuais em relação ao modelo treinado com base em rótulos. Uma coluna “match\$1id” é adicionada para atribuir cada linha a um grupo de itens considerados equivalentes com base no treinamento do algoritmo. Para obter mais informações, consulte [Correspondência de registros com Lake Formation FindMatches](https://docs.aws.amazon.com/glue/latest/dg/machine-learning.html).

**nota**  
A versão do AWS Glue usada pelo trabalho visual deve corresponder à versão que o AWS Glue usou para criar a transformação Record Matching.

![\[A captura de tela mostra uma visualização dos dados para a transformação.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/recording-matching-transform-1.png)


**Para adicionar um nó de transformação Record Matching ao diagrama de trabalho**

1. Abra o painel Recurso e escolha **Record Matching** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. No painel propriedades do nó, insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, insira a ID retirada da página **Transformações de machine learning**:  
![\[A captura de tela mostra a ID da página Transformações de machine learning.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/recording-matching-transform-2.png)

1. (Opcional) Na guia **Transformação**, você pode marcar a opção de adicionar as pontuações de confiança. Ao custo de computação extra, o modelo estimará uma pontuação de confiança para cada correspondência como uma coluna adicional.

# Remoção de linhas nulas
<a name="transforms-remove-null-rows"></a>

Essa transformação remove do conjunto de dados as linhas que têm todas as colunas como nulas. Além disso, você pode estender esses critérios para incluir campos vazios, de modo a manter as linhas em que pelo menos uma coluna não esteja vazia.

**Para adicionar um nó de transformação Remove Null Rows ao diagrama de trabalho**

1. Abra o painel Recurso e escolha **Remove Null Rows** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. No painel propriedades do nó, insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. (Opcional) Na guia **Transformar**, marque a opção **Estendido** se quiser exigir que as linhas não apenas não sejam nulas, mas também não estejam vazias. Dessa forma, cadeias de caracteres, matrizes ou mapas vazios serão considerados nulos para o propósito dessa transformação.

# Analisar uma coluna de string contendo dados JSON
<a name="transforms-parse-json-column"></a>

Essa transformação analisa uma coluna de string contendo dados JSON e a converte em uma estrutura ou coluna de matriz, dependendo se o JSON é um objeto ou uma matriz, respectivamente. Opcionalmente, você pode manter a coluna analisada e a original.

O esquema JSON pode ser fornecido ou inferido (no caso de objetos JSON), com amostragem opcional.

**Para adicionar um nó de transformação de Parse JSON Column ao diagrama de trabalho**

1. Abra o painel Recurso e escolha **Parse JSON Column** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. No painel propriedades do nó, insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, selecione a coluna que contém a string JSON.

1. (Opcional) Na guia **Transformar**, insira o esquema que os dados JSON seguem usando a sintaxe SQL, por exemplo: “campo1 STRING, campo2 INT” no caso de um objeto ou “ARRAY<STRING>” no caso de uma matriz.

   No caso de uma matriz, o esquema é obrigatório, mas no caso de um objeto, se o esquema não for especificado, ele será inferido usando os dados. Para reduzir o impacto da inferência do esquema (especialmente em um conjunto de dados grande), você pode evitar ler os dados inteiros duas vezes inserindo uma **proporção de amostras a serem usadas para inferir o esquema**. Se o valor for menor que 1, a proporção correspondente de amostras aleatórias será usada para inferir o esquema. Se os dados forem confiáveis e o objeto for consistente entre as linhas, você poderá usar uma proporção pequena, como 0,1, para melhorar a performance.

1. (Opcional) Na guia **Transformar**, você pode inserir um novo nome de coluna se quiser manter a coluna de string original e a coluna analisada.

# Extraindo um caminho JSON
<a name="transforms-extract-json-path"></a>

Essa transformação extrai novas colunas de uma coluna de string JSON. Essa transformação é útil quando você precisa apenas de alguns elementos de dados e não quer importar todo o conteúdo do JSON para o esquema da tabela.

**Para adicionar um nó de transformação Extract JSON Path ao diagrama do trabalho**

1. Abra o painel Recurso e escolha **Extract JSON Path** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. No painel propriedades do nó, insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, selecione a coluna que contém a string JSON. Insira uma ou mais expressões de caminho JSON separadas por vírgulas, cada uma fazendo referência a como extrair um valor da matriz ou objeto JSON. Por exemplo, se a coluna JSON contivesse objetos com as propriedades “prop\$11" e “prop2", você poderia extrair ambas especificando seus nomes “prop\$11, prop\$12".

   Se o campo JSON tiver caracteres especiais, por exemplo, para extrair a propriedade desse JSON `{"a. a": 1}` você poderá usar o caminho `$['a. a']`. A exceção é a vírgula porque ela é reservada para caminhos separados. Em seguida, insira os nomes das colunas correspondentes para cada caminho, separados por vírgulas.

1. (Opcional) Na guia **Transformar**, você pode marcar a opção de descartar a coluna JSON depois de extraída. Isso faz sentido quando você não precisa do restante dos dados JSON depois de extrair as partes necessárias.

# Extrair fragmentos de string usando uma expressão regular
<a name="transforms-regex-extractor"></a>

Essa transformação extrai fragmentos de string usando uma expressão regular e cria uma nova coluna a partir dela, ou várias colunas se estiver usando grupos regex.

**Para adicionar um nó de transformação Regex Extractor ao diagrama de trabalho**

1. Abra o painel Recurso e escolha **Regex Extractor** para adicionar uma nova transformação ao diagrama do trabalho. O nó selecionado no momento da adição do nó será o nó superior.

1. No painel propriedades do nó, insira um nome para o nó no diagrama de trabalho. Se ainda não houver um nó pai selecionado, escolha um na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

1. Na guia **Transformar**, insira a expressão regular e a coluna na qual ela precisa ser aplicada. Em seguida, insira o nome da nova coluna na qual armazenar a string correspondente. A nova coluna será nula somente se a coluna de origem for nula; se a regex não corresponder, a coluna ficará vazia.

   Se a regex usar grupos, haverá um nome de coluna correspondente separado por vírgula, mas você pode pular grupos deixando o nome da coluna vazio.

   Por exemplo, se você tiver uma coluna “purchase\$1date” com uma string usando formatos de data ISO longo e curto, convém extrair o ano, mês, dia e hora, quando disponível. Observe que o grupo de horas é opcional, caso contrário, nas linhas em que não estiverem disponíveis, todos os grupos extraídos seriam strings vazias (porque o regex não correspondia). Nesse caso, não queremos que o grupo torne a hora opcional, mas a interna, então deixamos o nome vazio e ele não é extraído (esse grupo incluiria o caractere T).  
![\[A captura de tela mostra a configuração de uma expressão regular para o extrator Regex.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/regex-extractor-1.png)

   Resultando na visualização prévia dos dados:  
![\[A captura de tela mostra a configuração de uma visualização prévia de dados para o extrator Regex.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/regex-extractor-2.png)

# Criar uma transformação personalizada
<a name="transforms-custom"></a>

Se precisar executar transformações mais complicadas em seus dados ou quiser adicionar chaves de propriedade de dados ao conjunto de dados, você pode adicionar uma transformação **Custom code** (Código personalizado) em seu diagrama de trabalho. O nó Custom code (Código personalizado) permite inserir um script que executa a transformação. 

Ao usar código personalizado, você deve usar um editor de esquema para indicar as alterações feitas na saída por meio do código personalizado. Ao editar o esquema, você pode executar as seguintes ações:
+ Adicionar ou remover chaves de propriedade de dados
+ Alterar o tipo de dados das chaves de propriedade de dados
+ Alterar o nome das chaves de propriedade de dados
+ Reestruturar uma chave de propriedade aninhada

Você deve usar uma transformação *SelectFromCollection* (Selecionar da coleção) para escolher um único `DynamicFrame` do resultado do nó de transformação personalizada antes de enviar a saída para um local de destino. 

Use as seguintes tarefas para adicionar um nó de transformação personalizada ao diagrama de trabalho.

## Adicionar um nó de transformação de código personalizado ao diagrama de trabalho
<a name="transforms-custom-addnode"></a>

**Para adicionar um nó de transformação personalizado ao diagrama de trabalho**

1. (Opcional) abra o painel Recurso e escolha **Transformação personalizada** para adicionar uma nova transformação ao diagrama de trabalho. 

1. Na guia **Node properties** (Propriedades do nó), insira um nome para o nó no diagrama de trabalho. Se um nó pai ainda não estiver selecionado, ou se você quiser várias entradas para a transformação personalizada, escolha um nó na lista **Node parents** (Nós pais) para usar como fonte de entrada para a transformação.

## Inserir código para o nó de transformação personalizada
<a name="transforms-custom-addcode"></a>

Você pode digitar ou copiar código em um campo de entrada. O trabalho usa esse código para executar a transformação de dados. Você pode fornecer um trecho de código em Python ou Scala. O código deve aceitar um ou mais `DynamicFrames` como entrada e retornar uma coleção de `DynamicFrames`. 

**Para inserir o script para um nó de transformação personalizada**

1. Com o nó de transformação personalizada selecionado no diagrama de trabalho, escolha a guia **Transform** (Transformação). 

1. No campo de entrada de texto, no cabeçalho **Code block** (Bloco de código), cole ou insira o código da transformação. O código que você usa deve corresponder à linguagem especificada para o trabalho na guia **Job details** (Detalhes do trabalho).

   Ao fazer referência aos nós de entrada em seu código, o AWS Glue Studio nomeia o `DynamicFrames` retornado pelos nós do diagrama de trabalho sequencialmente com base na ordem de criação. Use um dos seguintes métodos de atribuição de nomes no código:
   + Geração de código clássico: use nomes funcionais para se referir aos nós no diagrama do trabalho.
     + Nós da origem dos dados: `DataSource0`, `DataSource1`, `DataSource2` e assim por diante.
     + Nós de transformação: `Transform0`, `Transform1`, `Transform2` e assim por diante.
   + Geração de novo código: use o nome especificado na guia **Node properties** (Propriedades do nó), seguida por um "`_node1`", "`_node2`" anexao e assim por diante. Por exemplo, `S3bucket_node1`, `ApplyMapping_node2`, `S3bucket_node2`, `MyCustomNodeName_node1`.

   Para obter mais informações sobre o gerador de novo código, consulte [Geração de código de script](job-editor-features.md#code-gen).

Os exemplos a seguir mostram o formato do código a ser inserido na caixa de código:

------
#### [ Python ]

O exemplo a seguir pega o primeiro `DynamicFrame` recebido, converte-o em um `DataFrame` para aplicar o método de filtro nativo (mantendo somente registros que têm mais de 1.000 votos) e, em seguida, converte-o novamente em um `DynamicFrame` antes de devolvê-lo.

```
def FilterHighVoteCounts (glueContext, dfc) -> DynamicFrameCollection:
    df = dfc.select(list(dfc.keys())[0]).toDF()
    df_filtered = df.filter(df["vote_count"] > 1000)
    dyf_filtered = DynamicFrame.fromDF(df_filtered, glueContext, "filter_votes")
    return(DynamicFrameCollection({"CustomTransform0": dyf_filtered}, glueContext))
```

------
#### [ Scala ]

O exemplo a seguir pega o primeiro `DynamicFrame` recebido, converte-o em um `DataFrame` para aplicar o método de filtro nativo (mantendo somente registros que têm mais de 1.000 votos) e, em seguida, converte-o novamente em um `DynamicFrame` antes de devolvê-lo.

```
object FilterHighVoteCounts {
  def execute(glueContext : GlueContext, input : Seq[DynamicFrame]) : Seq[DynamicFrame] = {
    val frame = input(0).toDF()
    val filtered = DynamicFrame(frame.filter(frame("vote_count") > 1000), glueContext)
    Seq(filtered)
  }
}
```

------

## Editar o esquema de um nó de transformação personalizada
<a name="transforms-custom-editschema"></a>

Quando você usa um nó de transformação personalizada, o AWS Glue Studio não pode inferir automaticamente os esquemas de saída criados pela transformação. Use o editor de esquema para descrever as alterações de esquema implantadas pelo código de transformação personalizada.

Um nó de código personalizado pode ter qualquer número de nós pais, cada um fornecendo um `DynamicFrame` como entrada para o seu código personalizado. Um nó de código personalizado retorna uma coleção de `DynamicFrames`. Cada `DynamicFrame` usado como entrada tem um esquema associado. Você deve adicionar um esquema que descreva cada `DynamicFrame` retornado pelo nó de código personalizado. 

**nota**  
 Quando você define seu próprio esquema em uma transformação personalizada, o AWS Glue Studio não herda esquemas de nós anteriores. Para atualizar o esquema, selecione o nó Custom transform (Transformação personalizada) e escolha a guia Data preview (Visualização de dados). Depois que a visualização for gerada, escolha “Use Preview Schema” (Usar esquema de visualização). O esquema será substituído pelo esquema usando os dados de visualização. 

**Para editar os esquemas de um nó de transformação personalizada**

1. Com o nó de transformação personalizada selecionado no diagrama de trabalho, no painel de detalhes do nó, escolha a guia **Outpu schema** (Esquema de saída). 

1. Escolha **Edit** (Editar) para fazer alterações no esquema. 

   Se você tiver chaves de propriedade de dados aninhadas, como uma matriz ou objeto, pode escolher o ícone **Expand-Rows** (Expandir linhas, ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/expand-rows-icon.png)) no canto superior direito de cada painel de esquema, para expandir a lista de chaves de propriedade de dados filhas. Depois de escolher esse ícone, ele muda para o ícone **Collapse-Rows** (Recolher linhas, ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/collapse-rows-icon.png)), que você pode usar para recolher a lista de chaves de propriedade filhas.

1. Modifique o esquema usando as seguintes ações na seção no lado direito da página:
   + Para renomear uma chave de propriedade, coloque o cursor na caixa de texto **Key** (Chave) da chave de propriedade e insira o novo nome.
   + Para alterar o tipo de dados de uma chave de propriedade de dados, use a lista para escolher o novo tipo de dados da chave de propriedade.
   + Para adicionar uma nova propriedade de nível superior ao esquema, escolha o botão **Overflow** (excedente, ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/edit-schema-actions-button.png)) à esquerda do botão **Cancel** (Cancelar) e, em seguida, escolha **Add root key** (Adicionar chave raiz).
   + Para adicionar uma chave de propriedade filha ao esquema, escolha o ícone **Add-Key** (Adicionar chave, ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/filter-add-icon.png)) associado à chave pai. Insira um nome para a chave filha e escolha o tipo de dados.
   + Para remover uma chave de propriedade do esquema, escolha o ícone **Remove** (Excluir, ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/delete-icon-black.png)) à extrema direita do nome da chave. 

1. Se o código de transformação personalizada usar vários `DynamicFrames`, você poderá adicionar esquemas de saída adicionais. 
   + Para adicionar um esquema novo e vazio, escolha o ícone **Overflow** (Excedente, ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/edit-schema-actions-button.png)) e, em seguida, escolha **Add output schema** (Adicionar esquema de saída).
   + Para copiar um esquema existente em um novo esquema de saída, certifique-se de que aquele que você deseja copiar seja exibido no seletor de esquemas. Selecione o ícone **Overflow** (Excedente, ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/edit-schema-actions-button.png)) e, em seguida, escolha **Duplicate** (Duplicar).

   Se você quiser remover um esquema de saída, certifique-se de que o esquema que deseja copiar seja exibido no seletor de esquemas. Escolha o ícone **Overflow** (Excedente, ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/edit-schema-actions-button.png)) e, em seguida, escolha **Delete** (Excluir).

1. Adicione novas chaves raiz ao novo esquema ou edite as chaves duplicadas. 

1. Quando estiver modificando os esquemas de saída, escolha o botão **Apply** (Aplicar) para salvar suas alterações e saia do editor de esquemas.

   Se não quiser salvar as alterações, escolha o botão **Cancel** (Cancelar).

## Configurar a saída da transformação personalizada
<a name="transforms-custom-output"></a>

Uma transformação de código personalizado retorna uma coleção de `DynamicFrames`, mesmo que haja somente um `DynamicFrame` no conjunto de resultados. 

**Para processar a saída de um nó de transformação personalizada**

1. Adicione um nó de transformação *SelectFromCollection* (Selecionar da coleção) que tem o nó de transformação personalizada como nó pai. Atualize esta transformação para indicar qual conjunto de dados você deseja usar. Consulte [Usar SelectFromCollection (Selecionar da coleção) para escolher qual conjunto de dados manter](transforms-configure-select-collection.md) para obter mais informações.

1. Adicione mais transformações *SelectFromCollection* (Selecionar da coleção) para o diagrama de trabalho se você quiser usar `DynamicFrames` adionais produzidos pelo nó de transformação personalizada. 

   Considere um cenário no qual você adiciona um nó de transformação personalizada para dividir um conjunto de dados de voo em vários conjuntos de dados, mas duplica algumas das chaves de propriedade de identificação em cada esquema de saída, como a data ou o número do voo. Adicione um nó de transformação *SelectFromCollection* (Selecionar da coleção) para cada esquema de saída, com o nó de transformação personalizada como nó pai.

1. (Opcional) em seguida, você pode usar cada nó de transformação *SelectFromCollection* (Selecionar da coleção) como entrada para outros nós no trabalho ou como pai para um nó de destino de dados.

# Transformar dados com transformações visuais personalizadas
<a name="custom-visual-transform"></a>

 As transformações visuais personalizadas permitem que você crie transformações e as disponibilize para uso em trabalhos do AWS Glue Studio. As transformações visuais personalizadas permitem que os desenvolvedores de ETL, que talvez não estejam familiarizados com a codificação, pesquisem e usem uma biblioteca crescente de transformações usando a interface do AWS Glue Studio. 

 Você pode criar uma transformação visual personalizada e, em seguida, fazer o upload para o Amazon S3 para disponibilizá-la para uso por meio do editor visual no AWS Glue Studio para trabalhar com esses trabalhos. 

**Topics**
+ [Conceitos básicos de transformações visuais personalizadas](custom-visual-transform-getting-started.md)
+ [Etapa 1. Crie um arquivo de configuração JSON](custom-visual-transform-json-config-file.md)
+ [Etapa 2. Implemente a lógica da transformação](custom-visual-transform-implementation.md)
+ [Etapa 3. Validar e solucionar problemas de transformações visuais personalizadas no AWS Glue Studio](custom-visual-transform-validation.md)
+ [Etapa 4: Atualize transformações visuais personalizadas conforme necessário](custom-visual-transform-updating-transforms.md)
+ [Etapa 5. Use a transformações visuais personalizadas no AWS Glue Studio](custom-visual-transform-create-gs.md)
+ [Exemplos de uso](custom-visual-transform-example-json.md)
+ [Exemplos de scripts visuais personalizados](custom-visual-transform-example-scripts.md)
+ [Vídeo](#custom-visual-transform-video)

# Conceitos básicos de transformações visuais personalizadas
<a name="custom-visual-transform-getting-started"></a>

 Para criar uma transformação visual personalizada, siga estas etapas. 
+  Etapa 1. Crie um arquivo de configuração JSON 
+  Etapa 2. Implemente a lógica da transformação 
+  Etapa 3. Valide a transformação visual personalizada 
+  Etapa 4: Atualize a transformação visual personalizada conforme necessário 
+  Etapa 5. Use a transformação visual personalizada no AWS Glue Studio 

 Comece configurando o bucket do Amazon S3 e continue com a **Etapa 1. Crie um arquivo de configuração JSON.** 

## Pré-requisitos
<a name="custom-visual-transform-prerequisites"></a>

 As transformações fornecidas pelo cliente residem em uma conta AWS do cliente. Essa conta é proprietária das transformações e, portanto, tem todas as permissões para visualizá-las (pesquisar e usar), editá-las ou excluí-las. 

 Para usar uma transformação personalizada no AWS Glue Studio, você precisará criar e fazer upload de dois arquivos para o bucket de ativos do Amazon S3 nessa conta AWS: 
+  **Arquivo Python**: contém a função de transformação 
+  **Arquivo JSON**: descreve a transformação. Isso também é conhecido como o arquivo de configuração que é necessário para definir a transformação. 

 Para emparelhar os arquivos, use o mesmo nome para ambos. Por exemplo: 
+  myTransform.json 
+  myTransform.py 

 Opcionalmente, você pode dar à sua transformação visual personalizada um ícone personalizado fornecendo um **arquivo SVG** contendo o ícone. Para emparelhar os arquivos, use o mesmo nome para o ícone: 
+  myTransform.svg 

 AWS Glue StudioO os combinará automaticamente usando seus respectivos nomes de arquivo. Os nomes dos arquivos não podem ser os mesmos para nenhum módulo existente. 

## Convenção recomendada para nome de arquivo de transformação
<a name="custom-visual-transform-recommended-transform-file-name"></a>

 O AWS Glue Studio importará seu arquivo como módulo (por exemplo, `import myTransform`) em seu script de trabalho. Portanto, o nome do seu arquivo deve seguir as mesmas regras de nomenclatura definidas para nomes de variáveis (identificadores) do Python. Especificamente, eles devem começar com uma letra ou um sublinhado e, em seguida, ser compostos inteiramente por letras, dígitos e/ou sublinhados. 

**nota**  
 Certifique-se de que o nome do arquivo de transformação não esteja em conflito com os módulos python carregados existentes (por exemplo, `sys, array, copy` etc.) para evitar problemas inesperados de runtime. 

## Configurar um bucket do Amazon S3
<a name="custom-visual-transform-setting-up-s3"></a>

 As transformações que você cria são armazenadas no Amazon S3 e pertencem à sua conta AWS. Você cria novas transformações visuais personalizadas simplesmente carregando arquivos (json e py) para a pasta de ativos do Amazon S3, onde todos os scripts de trabalho estão armazenados atualmente (por exemplo, `s3://aws-glue-assets-<accountid>-<region>/transforms`). Se estiver usando um ícone personalizado, carregue-o também. Por padrão, o AWS Glue Studio lerá todos os arquivos .json da pasta /transforms no mesmo bucket do S3. 

# Etapa 1. Crie um arquivo de configuração JSON
<a name="custom-visual-transform-json-config-file"></a>

 É necessário um arquivo de configuração JSON para definir e descrever sua transformação visual personalizada. O esquema para o arquivo de configuração é como se segue. 

## Estrutura de arquivo JSON
<a name="custom-visual-transform-json-file-structure"></a>

 **Campos** 
+  `name: string`: (obrigatório) o nome do sistema de transformação usado para identificar as transformações. Siga as mesmas regras de nomenclatura definidas para nomes de variáveis (identificadores) do Python. Especificamente, eles devem começar com uma letra ou um sublinhado e, em seguida, ser compostos inteiramente por letras, dígitos e/ou sublinhados. 
+  `displayName: string`: (opcional) o nome da transformação exibida no editor visual de trabalhos do AWS Glue Studio. Se não for especificado nenhum `displayName`, o `name` será usado como o nome da transformação no AWS Glue Studio. 
+  `description: string`: (opcional) a descrição da transformação é exibida no AWS Glue Studio e pode ser pesquisada. 
+  `functionName: string`: (obrigatório) o nome da função do Python é usado para identificar a função a ser chamada no script do Python. 
+  `path: string`: (opcional) o caminho completo do Amazon S3 para o arquivo fonte do Python. Se não for especificado, o AWS Glue usará a correspondência de nomes de arquivo para emparelhar os arquivos .json e .py. Por exemplo, o nome do arquivo JSON, `myTransform.json`, será emparelhado com o arquivo Python, `myTransform.py`, no mesmo local do Amazon S3. 
+  `parameters: Array of TransformParameter object`: (opcional) a lista de parâmetros a serem exibidos quando você os configura no editor visual do AWS Glue Studio. 

<a name="transformparameter-fields"></a> **Campos TransformParameter** 
+  `name: string`: (obrigatório) o nome do parâmetro que será passado para a função do Python como um argumento nomeado no script do trabalho. Siga as mesmas regras de nomenclatura definidas para nomes de variáveis (identificadores) do Python. Especificamente, eles devem começar com uma letra ou um sublinhado e, em seguida, ser compostos inteiramente por letras, dígitos e/ou sublinhados. 
+  `displayName: string`: (opcional) o nome da transformação exibida no editor visual de trabalhos do AWS Glue Studio. Se não for especificado nenhum `displayName`, o `name` será usado como o nome da transformação no AWS Glue Studio. 
+  `type: string`: (obrigatório) o tipo de parâmetro que aceita tipos de dados comuns do Python. Valores válidos: 'str' \$1 'int' \$1 'float' \$1 'list' \$1 'bool'. 
+  `isOptional: boolean`: (opcional) determina se o parâmetro é opcional. Por padrão, todos os parâmetros são obrigatórios. 
+  `description: string`: (opcional) a descrição é exibida no AWS Glue Studio para ajudar o usuário a configurar o parâmetro de transformação. 
+  `validationType: string`: (opcional) define a forma como esse parâmetro é validado. Atualmente, só aceita expressões regulares. Por padrão, o tipo de validação é definido como `RegularExpression`. 
+  `validationRule: string`: (opcional) expressão regular usada para validar a entrada do formulário antes do envio, quando `validationType` está definido como `RegularExpression`. A sintaxe da expressão regular deve ser compatível com as [especificações RegExp do Ecmascript](https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects). 
+  `validationMessage: string`: (opcional) a mensagem a ser exibida quando a validação falhar. 
+  `listOptions: An array of TransformParameterListOption object` OU um `string` ou o valor da string 'coluna': (opcional) opções a serem exibidas no controle de interface de usuário de seleção ou seleção múltipla. Aceitar uma lista de valores separados por vírgula ou um objeto JSON do tipo `TransformParameterListOption`. Ele também pode preencher dinamicamente a lista de colunas do esquema do nó pai especificando o valor da string “coluna”. 
+  `listType: string`: (opcional) defina os tipos de opções como tipo = “list”. Valores válidos: 'str' \$1 'int' \$1 'float' \$1 'list' \$1 'bool'. Tipo de parâmetro que aceita tipos de dados comuns do Python. 

 **Campos TransformParameterListOption** 
+  `value: string | int | float | bool`: (obrigatório) valor da opção. 
+  `label: string`: (opcional) rótulo da opção exibida na lista suspensa de seleção. 

## Transformar parâmetros em AWS Glue Studio
<a name="custom-visual-transform-parameters"></a>

 Por padrão, os parâmetros são obrigatórios, a menos que sejam marcados como `isOptional` no arquivo .json. No AWS Glue Studio, os parâmetros são exibidos na guia **Transform** (Transformar). O exemplo mostra parâmetros definidos pelo usuário, como endereço de e-mail, número de telefone, idade, sexo e país de origem. 

![\[A captura de tela mostra uma transformação visual personalizada selecionada e a guia Transform (Transformar) com parâmetros definidos pelo usuário.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/dynamic-transform-parameters.png)


 Você pode impor algumas validações no AWS Glue Studio usando expressões regulares no arquivo json especificando o parâmetro `validationRule` e especificando uma mensagem de validação em `validationMessage`. 

```
      "validationRule": "^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$",
      "validationMessage": "Please enter a valid US number"
```

**nota**  
 Como a validação ocorre no navegador, a sintaxe da expressão regular deve ser compatível com as [especificações RegExp do Ecmascript](https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects). A sintaxe do Python não é compatível com essas expressões regulares. 

 Adicionar validação evitará que o usuário salve o trabalho com a entrada incorreta do usuário. O AWS Glue Studio exibe a mensagem de validação como a exibida no exemplo: 

![\[A captura de tela mostra um parâmetro de transformação visual personalizado com uma mensagem de erro de validação: Please enter a valid email address (Insira um endereço de e-mail válido).\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/dynamic-transform-validation-message.png)


 Os parâmetros são exibidos no AWS Glue Studio com base na configuração do parâmetro. 
+  Quando o `type` é qualquer um dos seguintes: `str`, `int` ou `float`, um campo de entrada de texto é exibido. Por exemplo, a exibição de tela mostra campos de entrada para os parâmetros 'Endereço de e-mail' e 'Sua idade'.   
![\[A captura de tela mostra um parâmetro de transformação visual personalizado com campo de entrada de texto.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/dynamic-transform-email-address.png)  
![\[A captura de tela mostra um parâmetro de transformação visual personalizado com campo de entrada de texto.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/dynamic-transform-your-age.png)
+  Quando `type` é `bool`, uma caixa de seleção é exibida.   
![\[A captura de tela mostra um parâmetro de transformação visual personalizado com campo de entrada de texto.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/dynamic-transform-bool.png)
+  Quando `type` é `str` e `listOptions` é fornecida, é exibida uma única lista de seleção.   
![\[A captura de tela mostra um parâmetro de transformação visual personalizado com uma única lista suspensa de seleção.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/dynamic-transform-single-list.png)
+  Quando são fornecidos `type`, `list`, `listOptions` e `listType`, é exibida uma lista de seleção múltipla.   
![\[A captura de tela mostra um parâmetro de transformação visual personalizado com uma lista suspensa.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/dynamic-transform-list-options.png)

### Exibir um seletor de coluna como parâmetro
<a name="custom-visual-transform-parameters-column-selector"></a>

 Se a configuração exigir que o usuário escolha uma coluna do esquema, você poderá exibir um seletor de coluna para que o usuário não precise digitar o nome da coluna. Ao definir o campo `listOptions` como “coluna”, o AWS Glue Studio exibe dinamicamente um seletor de coluna com base no esquema de saída do nó pai. O AWS Glue Studio pode exibir um seletor de coluna única ou múltipla. 

 O exemplo a seguir usa o esquema: 

![\[A captura de tela mostra um exemplo de esquema de saída.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/custom-visual-transform-example-schema.png)


**Para definir seu parâmetro Transformação visual personalizada para exibir uma única coluna:**

1.  No seu arquivo JSON, para o objeto `parameters`, defina o valor de `listOptions` como "coluna". Isso permite que o usuário escolha uma coluna em uma lista de seleção no AWS Glue Studio.   
![\[A captura de tela mostra um exemplo de arquivo JSON com o parâmetro listOptions definido como “coluna” e a interface de usuário resultante no AWS Glue Studio.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/custom-visual-transform-example-listoptions-column.png)

1.  Você também pode permitir a seleção de várias colunas definindo o parâmetro como: 
   +  `listOptions: "column"` 
   +  `type: "list"`   
![\[A captura de tela mostra um exemplo de arquivo JSON com o parâmetro listOptions definido como “coluna” e o tipo definido como "lista, e a interface de usuário resultante no AWS Glue Studio.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/custom-visual-transform-example-listoptions-column-type-list.png)

# Etapa 2. Implemente a lógica da transformação
<a name="custom-visual-transform-implementation"></a>

**nota**  
 As transformações visuais personalizadas são compatíveis apenas scripts Python. O Scala não é compatível. 

 Para adicionar o código que implementa a função definida pelo arquivo de configuração .json, é recomendável colocar o arquivo Python no mesmo local do arquivo .json, com o mesmo nome, mas com a extensão “.py”. O AWS Glue Studioemparelha automaticamente os arquivos .json e .py para que você não precise especificar o caminho do arquivo Python no arquivo de configuração. 

 No arquivo Python, adicione a função declarada, com os parâmetros nomeados configurados e registre-a para ser usada no `DynamicFrame`. Este é um exemplo de um arquivo Python: 

```
from awsglue import DynamicFrame

# self refers to the DynamicFrame to transform, 
# the parameter names must match the ones defined in the config
# if it's optional, need to provide a default value
def myTransform(self, email, phone, age=None, gender="", 
                      country="", promotion=False):
   resulting_dynf = # do some transformation on self 
   return resulting_dynf
   
DynamicFrame.myTransform = myTransform
```

 É recomendável usar um caderno AWS Glue para obter a maneira mais rápida de desenvolver e testar o código python. Consulte [Conceitos básicos de cadernos no AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/ug/notebook-getting-started.html). 

 Para ilustrar como implementar a lógica de transformação, a transformação visual personalizada no exemplo abaixo é uma transformação para filtrar os dados recebidos para manter somente os dados relacionados a um estado específico dos EUA. O arquivo .json contém o parâmetro para `functionName` como `custom_filter_state` e dois argumentos (“state” e “colName” com o tipo “str”). 

 O exemplo de arquivo config .json é: 

```
{
"name": "custom_filter_state",
"displayName": "Filter State",
"description": "A simple example to filter the data to keep only the state indicated.",
"functionName": "custom_filter_state",
"parameters": [
   {
    "name": "colName",
    "displayName": "Column name",
    "type": "str",
    "description": "Name of the column in the data that holds the state postal code"
   },
   {
    "name": "state",
    "displayName": "State postal code",
    "type": "str",
    "description": "The postal code of the state whole rows to keep"
   }   
  ]
}
```

**Para implementar o script complementar no Python**

1.  Inicie um caderno do AWS Glue e execute a célula inicial fornecida para o início da sessão. A execução da célula inicial cria os componentes básicos necessários. 

1.  Crie uma função que execute a filtragem conforme descrito no exemplo e registre-a no `DynamicFrame`. Copie o código abaixo e cole em uma célula do caderno do AWS Glue. 

   ```
   from awsglue import DynamicFrame
   
   def custom_filter_state(self, colName, state):
       return self.filter(lambda row: row[colName] == state)
   
   DynamicFrame.custom_filter_state = custom_filter_state
   ```

1.  Crie ou carregue dados de amostra para testar o código na mesma célula ou em uma nova célula. Se você adicionar os dados de exemplo em uma nova célula, não se esqueça de executar a célula. Por exemplo: 

   ```
   # A few of rows of sample data to test
   data_sample = [
       {"state": "CA", "count": 4},
       {"state": "NY", "count": 2},
       {"state": "WA", "count": 3}    
   ]
   df1 = glueContext.sparkSession.sparkContext.parallelize(data_sample).toDF()
   dynf1 = DynamicFrame.fromDF(df1, glueContext, None)
   ```

1.  Teste para validar o "custom\$1filter\$1state" com argumentos diferentes:   
![\[A captura de tela mostra uma célula em um caderno do AWS Glue com os argumentos passados para a função DynamicFrame.show.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/dynamic-transform-notebook-test-python.png)

1.  Depois de executar vários testes, salve o código com a extensão .py e nomeie o arquivo .py com um nome que espelhe o nome do arquivo .json. Os arquivos.py e .json devem estar na mesma pasta de transformação. 

    Copie o código a seguir e cole-o em um arquivo e renomeie-o com uma extensão de arquivo .py. 

   ```
   from awsglue import DynamicFrame
   
   def custom_filter_state(self, colName, state):
       return self.filter(lambda row: row[colName] == state)
   
   DynamicFrame.custom_filter_state = custom_filter_state
   ```

1.  No AWS Glue Studio, abra uma tarefa visual e adicione a transformação à tarefa selecionando-a na lista de **Transformações** disponíveis. 

    Para reutilizar essa transformação em um código de script Python, adicione o caminho do Amazon S3 ao arquivo .py nno trabalho, em “Referenced files path” (Caminho de arquivos referenciados) e, no script, importe o nome do arquivo python (sem a extensão) adicionando-o à parte superior do arquivo. Por exemplo: `import` <nome do arquivo (sem a extensão)> 

# Etapa 3. Validar e solucionar problemas de transformações visuais personalizadas no AWS Glue Studio
<a name="custom-visual-transform-validation"></a>

 AWS Glue Studio O valida o arquivo de configuração JSON antes que as transformações visuais personalizadas sejam carregadas no AWS Glue Studio. A validação inclui: 
+  Presença de campos obrigatórios 
+  Validação do formato JSON 
+  Parâmetros incorretos ou inválidos 
+  Presença dos arquivos .py e .json no mesmo caminho do Amazon S3 
+  Nomes de arquivo correspondentes para o.py e .json 

 Se a validação for bem-sucedida, a transformação será listada na lista de **ações** disponíveis no editor visual. Se um ícone personalizado tiver sido fornecido, ele deve estar visível ao lado da **Ação**. 

 Se a validação falhar, o AWS Glue Studio não carrega a transformação visual personalizada. 

# Etapa 4: Atualize transformações visuais personalizadas conforme necessário
<a name="custom-visual-transform-updating-transforms"></a>

 Depois de criado e usado, o script de transformação pode ser atualizado desde que a transformação siga a definição json correspondente: 
+  O nome usado ao atribuir ao DynamicFrame deve corresponder ao `functionName` json. 
+  Os argumentos da função devem ser definidos no arquivo json conforme descrito em [Etapa 1. Crie um arquivo de configuração JSON](custom-visual-transform-json-config-file.md). 
+  O caminho do arquivo Python no Amazon S3 não pode mudar, pois os trabalhos dependem diretamente dele. 

**nota**  
 Se alguma atualização precisar ser feita, certifique-se de que o script e o arquivo .json sejam atualizados de forma consistente e que todas as tarefas visuais sejam salvas corretamente novamente com a nova transformação. Se os trabalhos visuais não forem salvos depois que as atualizações forem feitas, as atualizações não serão aplicadas e validadas. Se o arquivo de script Python for renomeado ou não for colocado ao lado do arquivo .json, será necessário especificar o caminho completo no arquivo .json. 

**Ícone personalizado**

Se você determinar que o ícone padrão de sua **Ação** não a distingue visualmente como parte de seus fluxos de trabalho, você poderá fornecer um ícone personalizado, conforme descrito em [Conceitos básicos de transformações visuais personalizadas](custom-visual-transform-getting-started.md). Você pode atualizar o ícone atualizando o SVG correspondente hospedado no Amazon S3.

Para obter melhores resultados, crie sua imagem para ser visualizada em 32x32px seguindo as diretrizes do Cloudscape Design System. Para obter mais informações sobre o uso do CloudWatch, consulte a [documentação do Cloudscape](https://cloudscape.design/foundation/visual-foundation/iconography/#custom-icons)

# Etapa 5. Use a transformações visuais personalizadas no AWS Glue Studio
<a name="custom-visual-transform-create-gs"></a>

 Para usar uma transformação visual personalizada no AWS Glue Studio, você carrega os arquivos de configuração e de origem e seleciona a transformação no menu **Action** (Ação). Todos os parâmetros que precisem de valores ou entradas estão disponíveis para você na guia **Transform** (Transformar). 

1.  Faça o upload dos dois arquivos (arquivo fonte do Python e arquivo de configuração JSON) para a pasta de ativos do Amazon S3, onde os scripts de trabalho são armazenados. Por padrão, o AWS Glue lerá todos os arquivos .json da pasta **/transforms** no mesmo bucket do Amazon S3. 

1.  No menu **Action** (Ação), escolha a transformação visual personalizada. Ela é nomeada com a transformação `displayName` ou o nome que você especificou no arquivo de configuração .json. 

1.  Insira valores para os parâmetros que foram configurados no arquivo de configuração.   
![\[A captura de tela mostra uma transformação visual personalizada selecionada para que o usuário complete na guia Transform (Transformar).\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/dynamic-transform-parameters.png)

# Exemplos de uso
<a name="custom-visual-transform-example-json"></a>

 A seguir está um exemplo de todos os parâmetros possíveis em um arquivo de configuração .json. 

```
{
  "name": "MyTransform",
  "displayName": "My Transform",
  "description": "This transform description will be displayed in UI",
  "functionName": "myTransform",
  "parameters": [
      {
      "name": "email",
      "displayName": "Email Address",
      "type": "str",
      "description": "Enter your work email address below",
      "validationType": "RegularExpression",
      "validationRule": "^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$",
      "validationMessage": "Please enter a valid email address"
    },
    {
      "name": "phone",
      "displayName": "Phone Number",
      "type": "str",
      "description": "Enter your mobile phone number below",
      "validationRule": "^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$",
      "validationMessage": "Please enter a valid US number"
    },
    {
      "name": "age",
      "displayName": "Your age",
      "type": "int",
      "isOptional": true
    },
    {
      "name": "gender",
      "displayName": "Your gender",
      "type": "str",
      "listOptions": [
            {"label": "Male", "value": "male"},
            {"label": "Female", "value": "female"},
            {"label": "Other", "value": "other"}
        ],
      "isOptional": true
    },
    {
      "name": "country",
      "displayName": "Your origin country ?",
      "type": "list",
      "listOptions": "Afghanistan,Albania,Algeria,American Samoa,Andorra,Angola,Anguilla,Antarctica,Antigua and Barbuda,Argentina,Armenia,Aruba,Australia,Austria,Azerbaijan,Bahamas,Bahrain,Bangladesh,Barbados,Belarus,Belgium,Belize,Benin,Bermuda,Bhutan,Bolivia,Bosnia and Herzegovina,Botswana,Bouvet Island,Brazil,British Indian Ocean Territory,Brunei Darussalam,Bulgaria,Burkina Faso,Burundi,Cambodia,Cameroon,Canada,Cape Verde,Cayman Islands,Central African Republic,Chad,Chile,China,Christmas Island,Cocos (Keeling Islands),Colombia,Comoros,Congo,Cook Islands,Costa Rica,Cote D'Ivoire (Ivory Coast),Croatia (Hrvatska,Cuba,Cyprus,Czech Republic,Denmark,Djibouti,Dominica,Dominican Republic,East Timor,Ecuador,Egypt,El Salvador,Equatorial Guinea,Eritrea,Estonia,Ethiopia,Falkland Islands (Malvinas),Faroe Islands,Fiji,Finland,France,France,Metropolitan,French Guiana,French Polynesia,French Southern Territories,Gabon,Gambia,Georgia,Germany,Ghana,Gibraltar,Greece,Greenland,Grenada,Guadeloupe,Guam,Guatemala,Guinea,Guinea-Bissau,Guyana,Haiti,Heard and McDonald Islands,Honduras,Hong Kong,Hungary,Iceland,India,Indonesia,Iran,Iraq,Ireland,Israel,Italy,Jamaica,Japan,Jordan,Kazakhstan,Kenya,Kiribati,Korea (North),Korea (South),Kuwait,Kyrgyzstan,Laos,Latvia,Lebanon,Lesotho,Liberia,Libya,Liechtenstein,Lithuania,Luxembourg,Macau,Macedonia,Madagascar,Malawi,Malaysia,Maldives,Mali,Malta,Marshall Islands,Martinique,Mauritania,Mauritius,Mayotte,Mexico,Micronesia,Moldova,Monaco,Mongolia,Montserrat,Morocco,Mozambique,Myanmar,Namibia,Nauru,Nepal,Netherlands,Netherlands Antilles,New Caledonia,New Zealand,Nicaragua,Niger,Nigeria,Niue,Norfolk Island,Northern Mariana Islands,Norway,Oman,Pakistan,Palau,Panama,Papua New Guinea,Paraguay,Peru,Philippines,Pitcairn,Poland,Portugal,Puerto Rico,Qatar,Reunion,Romania,Russian Federation,Rwanda,Saint Kitts and Nevis,Saint Lucia,Saint Vincent and The Grenadines,Samoa,San Marino,Sao Tome and Principe,Saudi Arabia,Senegal,Seychelles,Sierra Leone,Singapore,Slovak Republic,Slovenia,Solomon Islands,Somalia,South Africa,S. Georgia and S. Sandwich Isls.,Spain,Sri Lanka,St. Helena,St. Pierre and Miquelon,Sudan,Suriname,Svalbard and Jan Mayen Islands,Swaziland,Sweden,Switzerland,Syria,Tajikistan,Tanzania,Thailand,Togo,Tokelau,Tonga,Trinidad and Tobago,Tunisia,Turkey,Turkmenistan,Turks and Caicos Islands,Tuvalu,Uganda,Ukraine,United Arab Emirates,United Kingdom (Britain / UK),United States of America (USA),US Minor Outlying Islands,Uruguay,Uzbekistan,Vanuatu,Vatican City State (Holy See),Venezuela,Viet Nam,Virgin Islands (British),Virgin Islands (US),Wallis and Futuna Islands,Western Sahara,Yemen,Yugoslavia,Zaire,Zambia,Zimbabwe",
      "description": "What country were you born in?",
      "listType": "str",
      "isOptional": true
    },
    {
      "name": "promotion",
      "displayName": "Do you want to receive promotional newsletter from us?",
      "type": "bool",
      "isOptional": true
    }
  ]
}
```

# Exemplos de scripts visuais personalizados
<a name="custom-visual-transform-example-scripts"></a>

 Os exemplos a seguir realizam transformações equivalentes. No entanto, o segundo exemplo (SparkSQL) é o mais limpo e eficiente, seguido pela UDF do pandas e, finalmente, pelo mapeamento de baixo nível no primeiro exemplo. O exemplo a seguir é um exemplo completo de uma transformação simples para somar duas colunas: 

```
from awsglue import DynamicFrame
 
# You can have other auxiliary variables, functions or classes on this file, it won't affect the runtime
def record_sum(rec, col1, col2, resultCol):
    rec[resultCol] = rec[col1] + rec[col2]
    return rec
 
 
# The number and name of arguments must match the definition on json config file
# (expect self which is the current DynamicFrame to transform
# If an argument is optional, you need to define a default value here
#  (resultCol in this example is an optional argument)
def custom_add_columns(self, col1, col2, resultCol="result"):
    # The mapping will alter the columns order, which could be important
    fields = [field.name for field in self.schema()]
    if resultCol not in fields:
        # If it's a new column put it at the end
        fields.append(resultCol)
    return self.map(lambda record: record_sum(record, col1, col2, resultCol)).select_fields(paths=fields)
 
 
# The name we assign on DynamicFrame must match the configured "functionName"
DynamicFrame.custom_add_columns = custom_add_columns
```

 O exemplo a seguir é uma transformação equivalente usando a API do SparkSQL. 

```
from awsglue import DynamicFrame
 
# The number and name of arguments must match the definition on json config file
# (expect self which is the current DynamicFrame to transform
# If an argument is optional, you need to define a default value here
#  (resultCol in this example is an optional argument)
def custom_add_columns(self, col1, col2, resultCol="result"):
    df = self.toDF()
    return DynamicFrame.fromDF(
        df.withColumn(resultCol, df[col1] + df[col2]) # This is the conversion logic
        , self.glue_ctx, self.name) 
 
 
# The name we assign on DynamicFrame must match the configured "functionName"
DynamicFrame.custom_add_columns = custom_add_columns
```

 O exemplo a seguir usa as mesmas transformações, mas usando uma UDF do pandas, que é mais eficiente do que usar uma UDF simples. Para obter mais informações sobre como escrever UDFs panda, consulte a [documentação do Apache Spark SQL](https://spark.apache.org/docs/3.1.1/api/python/reference/api/pyspark.sql.functions.pandas_udf.html). 

```
from awsglue import DynamicFrame
import pandas as pd
from pyspark.sql.functions import pandas_udf
 
# The number and name of arguments must match the definition on json config file
# (expect self which is the current DynamicFrame to transform
# If an argument is optional, you need to define a default value here
#  (resultCol in this example is an optional argument)
def custom_add_columns(self, col1, col2, resultCol="result"):
    @pandas_udf("integer")  # We need to declare the type of the result column
    def add_columns(value1: pd.Series, value2: pd.Series) → pd.Series:
        return value1 + value2
 
    df = self.toDF()
    return DynamicFrame.fromDF(
        df.withColumn(resultCol, add_columns(col1, col2)) # This is the conversion logic
        , self.glue_ctx, self.name) 
 
# The name we assign on DynamicFrame must match the configured "functionName"
DynamicFrame.custom_add_columns = custom_add_columns
```

## Vídeo
<a name="custom-visual-transform-video"></a>

O vídeo a seguir fornece uma introdução às transformações visuais personalizadas e demonstra como usá-las.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/xFpAhANcVcg/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/xFpAhANcVcg)


# Usar estruturas do Data Lake com o AWS Glue Studio
<a name="gs-data-lake-formats"></a>

## Visão geral
<a name="gs-data-lake-formats-overview"></a>

 As estruturas de data lake de código aberto simplificam o processamento incremental de dados para os arquivos armazenados em data lakes criados no Amazon S3. O AWS Glue 3.0 e posteriores são compatíveis com as seguintes estruturas de armazenamento em data lake de código aberto: 
+  Apache Hudi 
+  Linux Foundation Delta Lake 
+  Apache Iceberg 

 A partir do AWS Glue 4.0, o AWS Glue fornece suporte nativo para essas estruturas para que você possa ler e gravar os dados que armazenar no Amazon S3 de maneira consistente em termos de transações. Não é necessário instalar um conector separado nem realizar etapas adicionais de configuração para usar essas estruturas em trabalhos do AWS Glue. 

 As estruturas do Data Lake podem ser usadas como fonte ou destino no AWS Glue Studio por meio de trabalhos do editor de scripts do Spark. Para obter mais informações sobre o uso do Apache Hudi, do Apache Iceberg e do Delta Lake, consulte: [Usar estruturas de data lake com trabalhos do AWS Glue ETL](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-datalake-native-frameworks.html). 

## Criação de formatos de tabela abertos a partir de uma fonte de streaming do AWS Glue
<a name="gs-data-lake-formats-streaming"></a>

As tarefas de ETL de streaming do AWS Glue consomem continuamente dados de fontes de streaming, limpam e transformam os dados em andamento e os disponibilizam para análise em questão de segundos.

A AWS oferece uma ampla seleção de serviços para atender às suas necessidades. Um serviço de replicação de banco de dados, como o AWS Database Migration Service, pode replicar os dados de seus sistemas de origem para o Amazon S3, que normalmente hospeda a camada de armazenamento do data lake. Embora seja fácil aplicar atualizações em um sistema de gerenciamento de banco de dados relacional (RDBMS) que oferece suporte a uma aplicação de origem online, é difícil aplicar esse processo de CDC em seus data lakes. As estruturas de gerenciamento de dados de código aberto simplificam o processamento incremental de dados e o desenvolvimento de pipelines de dados e são uma boa opção para resolver esse problema.

Para obter mais informações, consulte:
+ [Criar um data lake transacional quase em tempo real baseado em Apache HUDI usando streaming do AWS Glue](https://aws.amazon.com/blogs/big-data/create-an-apache-hudi-based-near-real-time-transactional-data-lake-using-aws-dms-amazon-kinesis-aws-glue-streaming-etl-and-data-visualization-using-amazon-quicksight/)
+ [Crie um data lake Apache Iceberg em tempo real alinhado ao GDPR](https://aws.amazon.com/blogs/big-data/build-a-real-time-gdpr-aligned-apache-iceberg-data-lake/)

# Usar a estrutura do Hudi no AWS Glue Studio
<a name="gs-data-lake-formats-hudi"></a>

 Ao criar ou editar um trabalho, o AWS Glue Studio adiciona automaticamente as bibliotecas do Hudi correspondentes, dependendo da versão do AWS Glue que você esteja usando. Para obter mais informações, consulte [Usar a estrutura Hudi no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-hudi.html). 

## Usar a estrutura do Apache Hudi em fontes de dados do Data Catalog
<a name="gs-data-lake-formats-hudi-source-catalog"></a>

**Para adicionar um formato de fonte de dados Hudi a um trabalho:**

1.  No menu Fonte, escolha AWS Glue Studio Data Catalog. 

1.  Na guia **Propriedades da fonte de dados**, escolha um banco de dados e uma tabela. 

1.  AWS Glue StudioO exibe o tipo de formato como Apache Hudi e o URL do Amazon S3.   
![\[A captura de tela mostra a guia de propriedades da fonte de dados para o nó da fonte de dados do Data Catalog.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data_lake_formats_data_catalog_hudi.png)

## Usar a estrutura do Hudi em fontes de dados do Amazon S3
<a name="gs-data-lake-formats-hudi-source-s3.title"></a>

1.  No menu Fonte, selecione Amazon S3. 

1.  Se você escolher a tabela do Data Catalog como o tipo de fonte do Amazon S3, escolha um banco de dados e uma tabela. 

1.  AWS Glue StudioO exibe o formato como Apache Hudi e o URL do Amazon S3. 

1.  Se você escolher o local do Amazon S3 como o **tipo de fonte do Amazon S3**, escolha a URL do S3 clicando em **Procurar o Amazon S3**. 

1.  Em **Formato de dados**, selecione Apache Hudi. 
**nota**  
 Se o AWS Glue Studio não conseguir inferir o esquema da pasta ou arquivo do Amazon S3 selecionado, escolha **Opções adicionais** para selecionar uma nova pasta ou arquivo.   
 Em **Opções adicionais**, escolha entre as seguintes opções em **Inferência de esquema**:   
 Deixe o AWS Glue Studio escolher automaticamente um arquivo de amostra. O AWS Glue Studio escolherá um arquivo de amostra no local do Amazon S3 para que o esquema possa ser inferido. No campo **Arquivo amostrado automaticamente**, você pode visualizar o arquivo que foi selecionado automaticamente. 
 Escolha um arquivo de amostra do Amazon S3. Escolha o arquivo do Amazon S3 a ser usado clicando em **Procurar no Amazon S3**. 

1.  Clique em **Inferir esquema**. Depois, você poderá visualizar o esquema de saída clicando na guia **Esquema de saída**. 

1.  Escolha **Opções adicionais** para inserir um par de chave-valor.   
![\[A captura de tela mostra a seção Opções adicionais na guia Propriedades da fonte de dados para um nó de fonte de dados do Amazon S3.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data_lake_formats_additional_options.png)

## Usar a estrutura do Apache Hudi em destinos de dados
<a name="gs-data-lake-formats-hudi-target"></a>

### Usar a estrutura do Apache Hudi em destinos de dados do Data Catalog
<a name="gs-data-lake-formats-hudi-target-catalog"></a>

1.  No menu **Destino**, escolha AWS Glue Studio Data Catalog. 

1.  Na guia **Propriedades da fonte de dados**, escolha um banco de dados e uma tabela. 

1.  AWS Glue StudioO exibe o tipo de formato como Apache Hudi e o URL do Amazon S3. 

#### Usar a estrutura do Apache Hudi em destinos de dados do Amazon S3
<a name="gs-data-lake-formats-hudi-target-s3"></a>

 Insira os valores ou selecione-os entre as opções disponíveis para configurar o formato do Apache Hudi. Para obter mais informações sobre o Apache Hudi, consulte a [documentação do Apache Hudi](https://hudi.apache.org/docs/overview). 

![\[A captura de tela mostra a seção Opções adicionais na guia Propriedades da fonte de dados para um nó de fonte de dados do Amazon S3.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/hudi_s3_target_properties.png)

+  **Nome da tabela do Hudi**: esse é o nome da tabela do Hudi. 
+  **Tipo de armazenamento do Hudi**: escolha entre duas opções: 
  +  **Copiar e gravar**: recomendado para otimizar o desempenho de leitura. Esse é o tipo de armazenamento padrão do Hudi. Cada atualização cria uma nova versão dos arquivos durante uma gravação. 
  +  **Mesclar na leitura**: recomendado para minimizar a latência de gravação. As atualizações são registradas em arquivos delta baseados em linha e são compactadas conforme necessário para criar novas versões dos arquivos colunares. 
+  **Operação de gravação do Hudi**: escolha uma das seguintes opções: 
  +  **Upsert**: essa é a operação padrão, na qual os registros de entrada são marcados primeiro como inserções ou atualizações consultando o índice. Recomendado quando você está atualizando dados existentes. 
  +  **Inserir**: essa opção insere registros, mas não verifica os registros existentes e pode resultar em duplicatas. 
  +  **Inserção em massa**: essa opção insere registros e é recomendado para grandes volumes de dados. 
+  **Campos de chave de registro do Hudi**: use a barra de pesquisa para pesquisar e escolher chaves de registro primárias. Os registros no Hudi são identificados por uma chave primária, que é um par de chave de registro e o caminho da partição ao qual o registro pertence. 
+  **Campo de combinação prévia do Hudi**: esse é o campo usado para a combinação prévia antes da gravação real. Quando dois registros tiverem o mesmo valor de chave, o AWS Glue Studio selecionará o de maior valor para o campo de combinação prévia. Defina um campo com o valor incremental (por exemplo, updated\$1at) pertence a. 
+  **Tipo de compactação**: escolha uma das opções de tipo de compactação: não compactado, GZIP, LZO ou Snappy. 
+  **Local de destino do Amazon S3**: escolha o local de destino do Amazon S3 clicando em **Procurar no S3**. 
+  **Opções de atualização do Data Catalog**: escolha uma das seguintes opções: 
  +  Do not update the Data Catalog (Não atualizar o Data Log): (padrão) escolha essa opção se você não quiser que o trabalho atualize o Data Catalog, mesmo que o esquema seja alterado ou novas partições sejam adicionadas. 
  +  Criar uma tabela no Data Catalog e em execuções subsequentes, atualizar o esquema e adicionar novas partições: se você escolher essa opção, o trabalho criará a tabela no Data Catalog quando for executado pela primeira vez. Em execuções de trabalho subsequentes, ele atualizará a tabela do Data Catalog, se o esquema for alterado ou novas partições forem adicionadas. 

     Você também deve selecionar um banco de dados no Data Catalog e inserir um nome de tabela. 
  +  Create a table in the Data Catalog and on subsequent runs, keep existing schema and add new partitions (Criar uma tabela no Data Catalog e em execuções subsequentes, manter o esquema atual e adicionar novas partições): se você escolher essa opção, o trabalho criará a tabela no Data Catalog na sua primeira execução. Em execuções de trabalho subsequentes, ele atualizará a tabela do Data Catalog, mas apenas para adicionar novas partições. 

     Você também deve selecionar um banco de dados no Data Catalog e inserir um nome de tabela. 
+  Partition keys (Chaves de partição): escolha quais colunas usar como chaves de particionamento na saída. Para adicionar mais chaves de partição, escolha Add a partition key (Adicionar uma chave de partição. 
+  **Opções adicionais**: insira um par de valor-chave conforme necessário. 

## Gerar código por meio do AWS Glue Studio
<a name="gs-data-lake-formats-hudi-generating-code"></a>

 Quando o trabalho é salvo, os seguintes parâmetros de trabalho são adicionados a ele se uma fonte ou um destino Hudi forem detectados: 
+  `--datalake-formats`: uma lista distinta de formatos de data lake detectados no trabalho visual (diretamente escolhendo um “formato” ou indiretamente selecionando uma tabela de catálogo com suporte de um data lake). 
+  `--conf `: gerado com base no valor de `--datalake-formats`. Por exemplo, se o valor de `--datalake-formats` for "hudi", o AWS Glue gerará um valor `spark.serializer=org.apache.spark.serializer.KryoSerializer —conf spark.sql.hive.convertMetastoreParquet=false` para esse parâmetro. 

## Substituir as bibliotecas fornecidas pelo AWS Glue
<a name="gs-data-lake-formats-hudi-overriding-libraries"></a>

 Para usar uma versão do Hudi que não seja compatível com o AWS Glue, você pode especificar seus próprios arquivos JAR de biblioteca do Hudi. Para usar seu próprio arquivo JAR: 
+  use o parâmetro de trabalho `--extra-jars`. Por exemplo, `'--extra-jars': 's3pathtojarfile.jar'`. Para obter mais informações, consulte [parâmetros de trabalho do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html). 
+  não inclua `hudi` como um valor para o parâmetro de trabalho `--datalake-formats`. Inserir uma string em branco como um valor garante que nenhuma biblioteca de data lake seja fornecida a você automaticamente pelo AWS Glue. Para obter mais informações, consulte [Usar a estrutura Hudi no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-hudi.html). 

# Usar a estrutura do Delta Lake no Glue AWS Glue Studio
<a name="gs-data-lake-formats-delta"></a>

## Usar a estrutura do Delta Lake em fontes de dados
<a name="gs-data-lake-formats-delta-source"></a>

### Usar a estrutura do Delta Lake em fontes de dados do Amazon S3
<a name="gs-data-lake-formats-delta-lake-s3-data-source"></a>

1.  No menu Fonte, selecione Amazon S3. 

1.  Se você escolher a tabela do Data Catalog como o tipo de fonte do Amazon S3, escolha um banco de dados e uma tabela. 

1.  AWS Glue StudioO exibe o formato como Data Lake e o URL do Amazon S3. 

1.  Escolha **Opções adicionais** para inserir um par de chave-valor. Por exemplo, um par de chave-valor pode ser: **chave**: timestampAsOf e **valor**: 2023-02-24 14:16:18.   
![\[A captura de tela mostra a seção Opções adicionais na guia Propriedades da fonte de dados para um nó de fonte de dados do Amazon S3.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/data_lake_formats_additional_options.png)

1.  Se você escolher o local do Amazon S3 como o **tipo de fonte do Amazon S3**, escolha a URL do S3 clicando em **Procurar o Amazon S3**. 

1.  Em **Formato de dados**, escolha Delta Lake. 
**nota**  
 Se o AWS Glue Studio não conseguir inferir o esquema da pasta ou arquivo do Amazon S3 selecionado, escolha **Opções adicionais** para selecionar uma nova pasta ou arquivo.   
 Em **Opções adicionais**, escolha entre as seguintes opções em **Inferência de esquema**:   
 Deixe o AWS Glue Studio escolher automaticamente um arquivo de amostra. O AWS Glue Studio escolherá um arquivo de amostra no local do Amazon S3 para que o esquema possa ser inferido. No campo **Arquivo amostrado automaticamente**, você pode visualizar o arquivo que foi selecionado automaticamente. 
 Escolha um arquivo de amostra do Amazon S3. Escolha o arquivo do Amazon S3 a ser usado clicando em **Procurar no Amazon S3**. 

1.  Clique em **Inferir esquema**. Depois, você poderá visualizar o esquema de saída clicando na guia **Esquema de saída**. 

### Usar a estrutura do Delta Lake em fontes de dados do Data Catalog
<a name="gs-data-lake-formats-delta-catalog"></a>

1.  No menu **Fonte**, escolha AWS Glue Studio Data Catalog. 

1.  Na guia **Propriedades da fonte de dados**, escolha um banco de dados e uma tabela. 

1.  AWS Glue StudioO exibe o tipo de formato como Data Lake e o URL do Amazon S3. 
**nota**  
 Se sua fonte Delta Lake ainda não estiver registrada na tabela do AWS Glue Data Catalog, você tem duas opções:   
 Crie um crawler do AWS Glue para o armazenamento de dados Delta Lake. Para obter mais informações, consulte [Como especificar opções de configuração para um armazenamento de dados do Delta Lake](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-delta-lake). 
 Use uma fonte de dados do Amazon S3 para selecionar sua fonte de dados Delta Lake. Consulte [Usar a estrutura do Delta Lake em fontes de dados do Amazon S3](#gs-data-lake-formats-delta-lake-s3-data-source). 

## Usar formatos do Delta Lake em destinos de dados
<a name="gs-data-lake-formats-delta-target"></a>

### Usar formatos do Delta Lake em destinos de dados do Data Catalog
<a name="gs-data-lake-formats-delta-target-catalog"></a>

1.  No menu **Destino**, escolha AWS Glue Studio Data Catalog. 

1.  Na guia **Propriedades da fonte de dados**, escolha um banco de dados e uma tabela. 

1.  AWS Glue StudioO exibe o tipo de formato como Data Lake e o URL do Amazon S3. 

### Usar formatos do Delta Lake em fontes de dados do Amazon S3
<a name="gs-data-lake-formats-delta-target-s3"></a>

 Insira os valores ou selecione-os entre as opções disponíveis para configurar o formato do Delta Lake. 
+  **Tipo de compactação**: escolha uma das opções de tipo de compactação: não compactado ou Snappy. 
+  **Local de destino do Amazon S3**: escolha o local de destino do Amazon S3 clicando em **Procurar no S3**. 
+  **Opções de atualização do Data Catalog**: atualizar o Data Catalog não é compatível com esse formato no editor visual do Glue Studio. 
  +  Do not update the Data Catalog (Não atualizar o Data Log): (padrão) escolha essa opção se você não quiser que o trabalho atualize o Data Catalog, mesmo que o esquema seja alterado ou novas partições sejam adicionadas. 
  +  Para atualizar o catálogo de dados após a execução do trabalho do AWS Glue, execute ou agende um crawler do AWS Glue. Para obter mais informações, consulte [Como especificar opções de configuração para um armazenamento de dados do Delta Lake](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-delta-lake). 
+  **Chaves de partição**: escolha quais colunas serão usadas como chaves de particionamento na saída. Para adicionar mais chaves de partição, escolha **Adicionar uma chave de partição**. 
+  Opcionalmente, escolha **Opções adicionais** para inserir um par chave-valor. Por exemplo, um par de chave-valor pode ser: **chave**: timestampAsOf e **valor**: 2023-02-24 14:16:18. 

# Usar a estrutura do Apache Iceberg no AWS Glue Studio
<a name="gs-data-lake-formats-iceberg"></a>

## Usar a estrutura do Apache Iceberg em destinos de dados
<a name="gs-data-lake-formats-iceberg-target"></a>

### Usar a estrutura do Apache Iceberg em destinos de dados do Data Catalog
<a name="gs-data-lake-formats-iceberg-target-catalog"></a>

1.  No menu **Destino**, escolha AWS Glue Studio Data Catalog. 

1.  Na guia **Propriedades da fonte de dados**, escolha um banco de dados e uma tabela. 

1.  O AWS Glue Studio exibe o tipo de formato como Apache Iceberg e o URL do Amazon S3. 

### Usar a estrutura do Apache Hudi em destinos de dados do Amazon S3
<a name="gs-data-lake-formats-iceberg-s3-data-targets"></a>

 Insira os valores ou selecione-os entre as opções disponíveis para configurar o formato do Apache Iceberg. 
+  **Formatar**: escolha **Apache Iceberg** no menu suspenso. 
+  **Local de destino do Amazon S3**: escolha o local de destino do Amazon S3 clicando em **Procurar no S3**. 
+  **Opções de atualização do catálogo de dados**:**Criar uma tabela no catálogo de dados e em execuções subsequentes, manter o esquema existente e adicionar novas partições** deve ser selecionado para continuar. Escrever uma nova tabela do Iceberg usando o AWS Glue requer que o Data Catalog seja configurado como o catálogo para a tabela do Iceberg. Para atualizar uma tabela do Iceberg existente que tenha sido registrada no Data Catalog, escolha Data Catalog como alvo. 
  +  **Banco de dados**: escolha o banco de dados do Data Catalog. 
  +  **Nome da tabela**: insira o valor para o nome da tabela. Os nomes das tabelas do Apache Iceberg devem estar em letras minúsculas. Use sublinhas se necessário, pois espaços não são permitidos. Por exemplo, "data\$1lake\$1format\$1tables". 

![\[A captura de tela mostra as propriedades do destino de dados ao usar a estrutura Apache Iceberg em destinos de dados do Amazon S3.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/apache-iceberg-data-target-properties.png)


## Usar a estrutura do Apache Iceberg em fontes de dados do Amazon S3
<a name="gs-data-lake-formats-iceberg-source"></a>

### Usar a estrutura do Apache Iceberg em fontes de dados do Data Catalog
<a name="gs-data-lake-formats-iceberg-source-data-catalog"></a>

1.  No menu **Fonte**, escolha AWS Glue Studio Data Catalog. 

1.  Na guia **Propriedades da fonte de dados**, escolha um banco de dados e uma tabela. 

1.  O AWS Glue Studio exibe o tipo de formato como Apache Iceberg e o URL do Amazon S3. 

![\[A captura de tela mostra as propriedades do destino de dados ao usar a estrutura Apache Iceberg em fontes de dados do Amazon S3.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/apache-iceberg-data-source-properties.png)


### Usar a estrutura do Apache Iceberg em fontes de dados do Amazon S3
<a name="gs-data-lake-formats-iceberg-source-s3"></a>

 O Apache Iceberg não está disponível como opção de dados para os nós de origem do Amazon S3 no AWS Glue Studio. 

# Conectar a fontes de dados usando trabalhos do Visual ETL
<a name="connecting-to-data-chapter"></a>

 Ao criar um novo trabalho, você pode usar conexões para conectar aos dados ao editar trabalhos visuais de ETL no AWS Glue. Você pode fazer isso adicionando nós de origem que usam conectores para ler dados e nós de destino para especificar o local para gravação dos dados. 

**Topics**
+ [Modificar as propriedades de um nó da fonte dos dados](edit-jobs-source.md)
+ [Usar as tabelas do Data Catalog para a origem dos dados](edit-jobs-source-catalog-tables.md)
+ [Usar um conector para a origem dos dados](edit-jobs-source-connectors.md)
+ [Usar arquivos no Amazon S3 para a origem dos dados](edit-jobs-source-s3-files.md)
+ [Usar uma fonte de dados de transmissão](edit-jobs-source-streaming.md)
+ [Referências](edit-jobs-source-references.md)

# Modificar as propriedades de um nó da fonte dos dados
<a name="edit-jobs-source"></a>

Para especificar as propriedades da origem dos dados, escolha primeiro um nó de origem dos dados no diagrama de trabalho. Em seguida, no lado direito do painel de detalhes do nó, configure as propriedades do nó.

**Para modificar as propriedades de um nó de origem dos dados**

1. Vá para o editor visual para um trabalho novo ou salvo.

1. Escolha um nó de origem dos dados no diagrama de trabalho.

1. Selecione a guia **Node properties** (Propriedades do nó) no painel de detalhes do nó e insira as seguintes informações:
   + **Name** (Nome): (opcional) insira um nome a ser associado ao nó no diagrama de trabalho. Esse nome deve ser exclusivo entre todos os nós para esse trabalho.
   + **Node type** (Tipo de nó): o tipo de nó determina a ação que é executada pelo nó. Na lista de opções de **Node type** (Tipo de nó), escolha um dos valores listados no cabeçalho **Data source** (Origem dos dados).

1. Configure as informações de **Data source properties** (Propriedades da origem dos dados). Para obter mais informações, consulte as seções a seguir:
   + [Usar as tabelas do Data Catalog para a origem dos dados](edit-jobs-source-catalog-tables.md)
   + [Usar um conector para a origem dos dados](edit-jobs-source-connectors.md)
   + [Usar arquivos no Amazon S3 para a origem dos dados](edit-jobs-source-s3-files.md)
   + [Usar uma fonte de dados de transmissão](edit-jobs-source-streaming.md)

1. (Opcional) depois de configurar as propriedades do nó e da origem dos dados, você pode exibir o esquema de sua origem dos dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

1. (Opcional) depois de configurar as propriedades do nó e da origem dos dados, você poderá previsualizar o conjunto de dados de sua origem dos dados escolhendo a guia **Data preview** (Previsualização de dados) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Há um custo associado ao uso desse recurso e o a cobrança começa assim que você fornece uma função do IAM.

# Usar as tabelas do Data Catalog para a origem dos dados
<a name="edit-jobs-source-catalog-tables"></a>

Para todas as origens dos dados, exceto o Amazon S3 e os conectores, uma tabela deve existir noAWS Glue Data Catalog para o tipo de origem que você escolher. O AWS Glue não cria a tabela do Data Catalog.

**Para configurar um nó de origem dos dados com base em uma tabela do Data Catalog**

1. Vá para o editor visual para um trabalho novo ou salvo.

1. Escolha um nó de origem dos dados no diagrama de trabalho.

1. Escolha a guia **Data source properties** (Propriedades da origem dos dados) e insira as seguintes informações:
   + **S3 source type** (Tipo de origem do S3): (somente para origens de dados do Amazon S3) escolha a opção **Select a Catalog table** (Selecionar uma tabela do catálogo) para usar uma tabela do AWS Glue Data Catalog existente.
   + **Database** (Banco de dados): escolha o banco de dados no Data Catalog que contém a tabela de origem que você deseja usar para esse trabalho. É possível usar o campo de pesquisa para procurar um banco de dados pelo nome.
   + **Table** (Tabela): escolha a tabela associada aos dados de origem na lista. Essa tabela já deve existir noAWS Glue Data Catalog. É possível usar o campo de pesquisa para procurar uma tabela pelo nome.
   + **Partition predicate** (Predicado de partição): (somente para origens de dados do Amazon S3) insira uma expressão booleana baseada no Spark SQL que inclua apenas as colunas de particionamento. Por exemplo, .: `"(year=='2020' and month=='04')"`
   + **Temporary directory** (Diretório temporário): (somente para origens de dados do Amazon RedShift) insira um caminho para o local de um diretório funcional no Amazon S3, onde seu trabalho de ETL possa gravar resultados intermediários temporários.
   + **Role associated with the cluster** (Função associada ao cluster): (somente para origens de dados do Amazon RedShift) insira uma função para o seu trabalho de ETL usar que contenha permissões para clusters do Amazon Redshift. Para obter mais informações, consulte [Permissões de origem e destino dos dados](getting-started-min-privs-job.md#getting-started-min-privs-data).

# Usar um conector para a origem dos dados
<a name="edit-jobs-source-connectors"></a>

Se você selecionar um conector para **Node type** (Tipo de nó), siga as instruções em [Criação de trabalhos com conectores personalizados](job-authoring-custom-connectors.md) para concluir a configuração das propriedades da origem dos dados.

# Usar arquivos no Amazon S3 para a origem dos dados
<a name="edit-jobs-source-s3-files"></a>

Se você escolher o Amazon S3 como sua origem dos dados, poderá escolher:
+ Um banco de dados e tabela do Data Catalog.
+ Um bucket, pasta ou arquivo no Amazon S3.

Se você usar um bucket do Amazon S3 como origem dos dados, o AWS Glue detectará o esquema dos dados no local especificado a partir de um dos arquivos ou usando o arquivo especificado como um arquivo de exemplo. A detecção de esquema ocorre quando você usa o botão **Infer schema** (Inferir esquema). Se você alterar o local do Amazon S3 ou o arquivo de exemplo, escolha **Infer schema** (Inferir esquema) novamente para realizar a detecção de esquema usando as novas informações.

**Para configurar um nó de origem dos dados que lê diretamente de arquivos no Amazon S3**

1. Vá para o editor visual para um trabalho novo ou salvo.

1. Escolha um nó de origem dos dados no diagrama de trabalho para uma origem do Amazon S3.

1. Escolha a guia **Data source properties** (Propriedades da origem dos dados) e insira as seguintes informações:
   + **S3 source type** (Tipo de origem do S3): (somente para origens de dados do Amazon S3) escolha a opção **S3 location** (Localização do S3).
   + **S3 URL** (URL do S3): insira o caminho para o bucket, pasta ou arquivo do Amazon S3 que contém os dados do seu trabalho. Você pode escolher **Browse S3** (Procurar no S3) para selecionar o caminho a partir dos locais disponíveis para sua conta. 
   + **Recursive** (Recursivo): escolha essa opção se desejar que o AWS Glue leia dados de arquivos em pastas filhas no local do S3. 

     Se as pastas filhas contiverem dados particionados, o AWS Glue não adicionará ao Data Catalog nenhuma informação de partição especificada nos nomes de pastas. Por exemplo, considere as seguintes pastas no Amazon S3:

     ```
     S3://sales/year=2019/month=Jan/day=1
     S3://sales/year=2019/month=Jan/day=2
     ```

     Se você escolher **Recursive** (Recursivo) e selecionar a pasta `sales` como a sua localização do S3, o AWS Glue lerá os dados em todas as pastas filhas, mas não criará partições para o ano, mês ou dia.
   + **Data format** (Formato de dados): escolha o formato no qual os dados são armazenados. Você pode escolher JSON, CSV ou Parquet. O valor selecionado informa ao trabalho do AWS Glue como ler os dados do arquivo de origem.
**nota**  
Se você não selecionar o formato correto para os seus dados, O AWS Glue poderá inferir o esquema corretamente, mas o trabalho não poderá analisar corretamente os dados do arquivo de origem.

     Você pode inserir opções de configuração adicionais, dependendo do formato escolhido. 
     + **JSON** (JavaScript Object Notation)
       + **JsonPath** (Caminho Json): insira um caminho JSON que aponta para um objeto usado para definir um esquema de tabela. Expressões de caminho JSON sempre se referem a uma estrutura JSON da mesma forma como expressões XPath são usadas em combinação com um documento XML. O “objeto de membro raiz” no caminho JSON é sempre referido como `$`, mesmo que seja um objeto ou matriz. O caminho JSON pode ser escrito na notação de pontos ou de colchetes.

         Para obter mais informações sobre operadores do caminho JSON, consulte [JsonPath](https://github.com/json-path/JsonPath) no site do GitHub.
       + **Records in source files can span multiple lines** (Registros em arquivos de origem podem abranger várias linhas): escolha essa opção se um único registro puder abranger várias linhas no arquivo CSV.
     + **CSV** (comma-separated values)
       + **Delimiter** (Delimitador): insira um caractere para indicar o que separa cada entrada de coluna na linha, por exemplo, `;` ou `,`.
       + **Escape character** (Caractere de escape): insira um caractere usado como caractere de escape. Ele indica que o caractere que segue imediatamente o caractere de escape deve ser entendido literalmente e não deve ser interpretado como um delimitador.
       + **Quote character** (Caractere de aspas): insira o caractere usado para agrupar strings separadas em um único valor. Por exemplo, você escolheria **aspas duplas (")** se tiver valores como `"This is a single value"` em seu arquivo CSV.
       + **Records in source files can span multiple lines** (Registros em arquivos de origem podem abranger várias linhas): escolha essa opção se um único registro puder abranger várias linhas no arquivo CSV.
       + **First line of source file contains column headers** (A primeira linha do arquivo de origem contém cabeçalhos de coluna): escolha essa opção se a primeira linha do arquivo CSV contiver cabeçalhos de coluna em vez de dados.
     + **Parquet** (Apache Parquet columnar storage)

       Não há configurações adicionais a configurar para dados armazenados no formato Parquet.
     + **Apache Hudi**

       Não há configurações adicionais a definir para dados armazenados no formato Apache Hudi.
     + **Delta Lake**

       Não há configurações adicionais a definir para dados armazenados no formato Delta Lake.
     + **Excel**

       Não há configurações adicionais a definir para dados armazenados no formato Excel.
   + **Partition predicate** (Predicato de partição): para particionar os dados que são lidos a partir da origem dos dados, introduza uma expressão booliana baseada no Spark SQL que inclua apenas as colunas de particionamento. Por exemplo, .: `"(year=='2020' and month=='04')"`
   + **Advanced options** (Opções avançadas): expanda essa seção se desejar que AWS Glue detecte o esquema de seus dados com base em um arquivo específico. 
     + **Schema inference** (Inferência do esquema): escolha a opção **Choose a sample file from S3**(Escolher um arquivo de exemplo no S3), se desejar usar um arquivo específico em vez de deixar que o AWS Glue escolha um por você. A inferência de esquema não está disponível para a fonte Excel.
     + **Auto-sampled file** (Arquivo amostrado automaticamente): insira o caminho para o arquivo no Amazon S3 a ser usado para inferir o esquema.

     Se estiver editando um nó de origem dos dados e alterando o arquivo de exemplo selecionado, escolha **Reload schema** (Recarregar esquema) para detectar o esquema usando o novo arquivo de exemplo.

1. Selecione o botão **Infer schema** (Inferir esquema) para detectar o esquema dos arquivos de origem no Amazon S3. Se você alterar o local do Amazon S3 ou o arquivo de exemplo, deve escolher **Infer schema** (Inferir esquema) novamente para realizar a detecção do esquema usando as novas informações.

# Usar uma fonte de dados de transmissão
<a name="edit-jobs-source-streaming"></a>

É possível criar trabalhos de extração, transformação e carregamento (ETL) de transmissão que sejam executados continuamente e que consumam dados de fontes de transmissão, como o Amazon Kinesis Data Streams, Apache Kafka e Amazon Managed Streaming for Apache Kafka (Amazon MSK).

**Para configurar propriedades de uma fonte de dados de transmissão**

1. Vá para o editor visual de um trabalho novo ou salvo.

1. Escolha um nó de origem dos dados no gráfico para fluxos de dados do Kafka ou do Kinesis.

1. Escolha a guia **Data source properties** (Propriedades da origem dos dados) e insira as seguintes informações:

------
#### [ Kinesis ]
   + **Kinesis source type** (Tipo de origem do Kinesis): escolha a opção **Stream details** (Detalhes do fluxo) para usar o acesso direto à fonte de transmissão ou escolha **Data Catalog Table**(Tabela do Data Catalog) para usar as informações nele armazenadas.

     Se você escolher **Stream details** (Detalhes do fluxo), especifique as informações adicionais a seguir.
     + **Local do fluxo de dados**: escolha se o fluxo está associado ao usuário atual ou a outro usuário.
     + **Region** (Região): escolha a Região da AWS onde o fluxo existe. Essas informações são usadas para construir o ARN para acesso ao fluxo de dados.
     + **Stream ARN** (ARN do fluxo): o nome do recurso da Amazon (ARN) do fluxos de dados do Kinesis. Se o fluxo estiver localizado na conta atual, você poderá escolher o nome do fluxo na lista suspensa. É possível usar o campo de pesquisa para procurar um fluxo de dados por seu nome ou ARN.
     + **Data format** (Formato de dados): escolha na lista o formato usado pelo fluxo de dados. 

       AWS GlueO detecta automaticamente o esquema dos dados da transmissão.

     Se você escolher **Data Catalog table** (Tabela do Data Catalog), especifique as informações adicionais a seguir.
     + **Database** (Banco de dados): (opcional) escolha o banco de dados no AWS Glue Data Catalog que contém a tabela associada à sua fonte de dados de transmissão. É possível usar o campo de pesquisa para procurar um banco de dados pelo nome. 
     + **Table** (Tabela): (opcional) escolha a tabela associada aos dados de origem na lista. Essa tabela já deve existir no AWS Glue Data Catalog. É possível usar o campo de pesquisa para procurar uma tabela pelo nome. 
     + **Detect schema** (Detectar esquema): escolha essa opção para que o AWS Glue detecte o esquema dos dados da transmissão, em vez de usar as informações do esquema em uma tabela do Data Catalog. Essa opção é habilitada automaticamente quando a opção **Stream details** (Detalhes do fluxo) é escolhida.
   + **Starting position** (Posição inicial): por padrão, o trabalho de ETL usa a opção **Earliest** (Mais antiga), o que significa que ele lê dados começando com o registro mais antigo disponível no fluxo. Em vez disso, você pode escolher **Latest** (Mais recente), o que indica que o trabalho de ETL deve começar a leitura logo após o registro mais recente no fluxo.
   + **Window size** (Tamanho da janela): por padrão, o trabalho de ETL processa e grava dados em janelas de 100 segundos. Isso permite que os dados sejam processados de forma eficiente e que as agregações sejam realizadas em dados que chegam mais tarde do que o esperado. É possível modificar esse tamanho da janela para aumentar a pontualidade ou a precisão da agregação. 

     AWS GlueOs trabalhos de transmissão do usam pontos de verificação em vez de marcadores de trabalho para rastrear os dados que foram lidos. 
   + **Connection options** (Opções de conexão): expanda essa seção para adicionar pares de chave-valor a fim de especificar opções de conexão adicionais. Para obter informações sobre quais opções você pode especificar aqui, consulte ["connectionType": "kinesis"](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-kinesis) no *Guia do desenvolvedor do AWS Glue*.

------
#### [ Kafka ]
   + **Apache Kafka source** (Origem do Apache Kafka): escolha a opção **Stream details** (Detalhes do fluxo) para usar o acesso direto à fonte de transmissão ou escolha **Data Catalog Table**(Tabela do Data Catalog) para usar as informações nele armazenadas.

     Se você escolher **Data Catalog table** (Tabela do Data Catalog), especifique as informações adicionais a seguir.
     + **Database** (Banco de dados): (opcional) escolha o banco de dados no AWS Glue Data Catalog que contém a tabela associada à sua fonte de dados de transmissão. É possível usar o campo de pesquisa para procurar um banco de dados pelo nome. 
     + **Table** (Tabela): (opcional) escolha a tabela associada aos dados de origem na lista. Essa tabela já deve existir no AWS Glue Data Catalog. É possível usar o campo de pesquisa para procurar uma tabela pelo nome. 
     + **Detect schema** (Detectar esquema): escolha essa opção para que o AWS Glue detecte o esquema dos dados de transmissão, em vez de armazenar as informações do esquema em uma tabela do Data Catalog. Essa opção é habilitada automaticamente quando a opção **Stream details** (Detalhes do fluxo) é escolhida.

     Se você escolher **Stream details** (Detalhes do fluxo), especifique as informações adicionais a seguir.
     + **Connection name** (Nome da conexão): escolha a conexão do AWS Glue que contém as informações de acesso e autenticação para o fluxo de dados do Kafka. Você deve usar uma conexão com origens de dados de streaming do Kafka. Se uma conexão não existe, é possível usar o console do AWS Glue para criar uma conexão para o fluxo de dados do Kafka.
     + **Topic name** (Nome do tópico): insira o nome do tópico do qual a leitura será feita.
     + **Data format** (Formato dos dados): escolha o formato a ser usado ao ler dados da sequência de eventos do Kafka. 
   + **Starting position** (Posição inicial): por padrão, o trabalho de ETL usa a opção **Earliest** (Mais antiga), o que significa que ele lê dados começando com o registro mais antigo disponível no fluxo. Em vez disso, você pode escolher **Latest** (Mais recente), o que indica que o trabalho de ETL deve começar a leitura logo após o registro mais recente no fluxo.
   + **Window size** (Tamanho da janela): por padrão, o trabalho de ETL processa e grava dados em janelas de 100 segundos. Isso permite que os dados sejam processados de forma eficiente e que as agregações sejam realizadas em dados que chegam mais tarde do que o esperado. É possível modificar esse tamanho da janela para aumentar a pontualidade ou a precisão da agregação. 

     AWS GlueOs trabalhos de transmissão do usam pontos de verificação em vez de marcadores de trabalho para rastrear os dados que foram lidos. 
   + **Connection options** (Opções de conexão): expanda essa seção para adicionar pares de chave-valor a fim de especificar opções de conexão adicionais. Para obter informações sobre quais opções você pode especificar aqui, consulte ["connectionType": "kafka"](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-kafka) no *Guia do desenvolvedor do AWS Glue*.

------

**nota**  
As previsualizações de dados não são suportadas atualmente para fontes de dados de transmissão.

# Referências
<a name="edit-jobs-source-references"></a>

 **Melhores práticas** 
+  [ Criar um pipeline de serviços de ETL para carregar dados incrementalmente do Amazon S3 ao Amazon Redshift usando AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue.html) 

 **Programação ETL** 
+  [Tipos de conexão e opções para ETL no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-connections.html) 
+  [ Valores de connectionType de JDBC ](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-jdbc) 
+  [ Opções avançadas para mover dados de e para o Amazon Redshift](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html) 

# Configurar nós de destino de dados
<a name="data-target-nodes"></a>

O destino de dados é onde o trabalho grava os dados transformados. 

## Visão geral das opções de destino de dados
<a name="edit-jobs-target-overview"></a>

Seu destino de dados (também chamado de *coletor de dados*) pode ser:
+ **S3**: o trabalho grava os dados em um arquivo no local do Amazon S3 escolhido e no formato especificado.

  Se você configurar colunas de partição para o destino de dados, o trabalho grava o conjunto de dados no Amazon S3 em diretórios com base na chave de partição.
+ **AWS Glue Data Catalog**: o trabalho usa as informações associadas à tabela no Data Catalog para gravar os dados de saída em um local de destino. 

  É possível criar a tabela manualmente ou com o crawler. Você também pode usar modelos do AWS CloudFormation para criar tabelas no Data Catalog. 
+ Um conector: um conector é um pedaço de código que facilita a comunicação entre o armazenamento de dados e o AWS Glue. O trabalho usa o conector e a conexão associada para gravar os dados de saída em um local de destino. Você pode assinar um conector oferecido no AWS Marketplace ou pode criar seu próprio conector personalizado. Para obter mais informações, consulte [Adição de conectores ao AWS Glue Studio](creating-custom-connectors.md#creating-connectors)

Você pode optar por atualizar o Data Catalog quando seu trabalho grava em um destino de dados do Amazon S3. Em vez de exigir que um crawler atualize o Data Catalog quando o esquema ou as partições mudam, essa opção facilita a manutenção das tabelas atualizadas. Essa opção simplifica o processo de disponibilização de dados para analytics, adicionando opcionalmente novas tabelas ao Data Catalog e atualizando partições de tabela e o esquema de tabelas diretamente a partir do trabalho.

## Editar o nó de destino de dados
<a name="edit-jobs-target"></a>

O destino de dados é onde o trabalho grava os dados transformados. 

**Para adicionar ou configurar um nó de destino de dados em seu diagrama de trabalho**

1. (Opcional) se você precisar adicionar um nó de destino, escolha **Target** (Destino) na barra de ferramentas no topo do editor visual e escolha **S3** ou **Glue Data Catalog**. 
   + Se escolher **S3** para o destino, o trabalho grava o conjunto de dados em um ou mais arquivos no local do Amazon S3 especificado.
   + Se escolher **AWS Glue Data Catalog** para o destino, o trabalho grava em um local descrito pela tabela selecionada no Data Catalog.

1. Escolha um nó de destino dos dados no diagrama de trabalho. Quando você escolhe um nó, o painel de detalhes do nó aparece no lado direito da página.

1. Escolha a guia **Node properties** (Propriedades do nó) e insira as seguintes informações:
   + **Name** (Nome): insira um nome a ser associado ao nó no diagrama de trabalho.
   + **Node type** (Tipo de nó): um valor já deve estar selecionado, mas você pode alterá-lo conforme necessário.
   + **Node parents** (Nós pais): o nó pai é o nó no diagrama de trabalho que fornece os dados de saída que você deseja gravar no local de destino. Para um diagrama de trabalho pré-preenchido, o nó de destino já deve ter o nó pai selecionado. Se não houver nenhum nó pai exibido, escolha um nó pai na lista. 

     Um nó de destino tem um único nó pai.

1. Configure as informações de **Data target properties** (Propriedades do destino dos dados). Para obter mais informações, consulte as seções a seguir:
   + [Uso do Amazon S3 para o destino de dados](#edit-job-target-S3)
   + [Usar as tabelas do Data Catalog para o destino dos dados](#edit-job-target-catalog)
   + [Usar um conector para o destino de dados](#edit-job-target-connector)

1. (Opcional) depois de configurar as propriedades do nó de destino, você pode visualizar o esquema de saída para seus dados escolhendo a guia **Output schema** (Esquema de saída) no painel de detalhes do nó. Na primeira vez que você escolher essa guia para qualquer nó em seu trabalho, você receberá uma solicitação para fornecer uma função do IAM para acessar os dados. Se você não tiver especificado uma função do IAM na guia **Job details** (Detalhes do trabalho), você receberá uma solicitação para inserir uma função do IAM aqui.

### Uso do Amazon S3 para o destino de dados
<a name="edit-job-target-S3"></a>

Para todas as origens dos dados, exceto o Amazon S3 e os conectores, uma tabela deve existir noAWS Glue Data Catalog para o tipo de origem que você escolher. O AWS Glue Studio não cria a tabela do Data Catalog.

**Para configurar um nó de destino de dados que grava no Amazon S3**

1. Vá para o editor visual para um trabalho novo ou salvo.

1. Escolha um nó de origem dos dados no diagrama de trabalho.

1. Escolha a guia **Data source properties** (Propriedades da origem dos dados) e insira as seguintes informações:
   + **Format** (Formato): escolha um formato na lista. Os tipos de formato disponíveis para os resultados dos dados são:
     + **JSON**: JavaScript Object Notation. 
     + **CSV**: Comma-separated values (valores separados por vírgula). 
     + **Avro**: JSON binário do Apache Avro. 
     + **Parquet**: um tipo de gravador Parquet personalizado, otimizado como o formato de dados para `DynamicFrames`. Em vez de exigir um esquema pré-calculado para os dados, ele calcula e modifica o esquema dinamicamente.
     + **ORC**: formato colunar de linha otimizado (ORC) do Apache. 
     + **Apache Hudi**: é uma estrutura de armazenamento de data lake de código aberto que simplifica o processamento incremental de dados e o desenvolvimento de pipelines de dados. 
     + **Apache Iceberg**: um formato de tabela de alta performance que funciona exatamente como uma tabela SQL. 
     + **Delta Lake**: uma estrutura de armazenamento de data lake de código aberto que ajuda você a realizar transações ACID, escalar o tratamento de metadados e unificar o streaming e o processamento de dados em lote. 
     + **XML**: Linguagem de Marcação Extensível (XML). 
     + **Tableau Hyper**: a tecnologia de mecanismo de dados em memória do Tableau.

     Para saber mais sobre essas opções de formato, consulte [Opções de formato para entradas e saídas de ETL no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html) no *Guia do desenvolvedor do AWS Glue*.
   + **Tipo de compactação**: você pode optar por compactar os dados opcionalmente usando os tipos de arquivos `CSV`, `JSON` ou `Parquet`. O padrão é sem compactação, ou **None** (Nenhum).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/data-target-nodes.html)
   + **S3 Target Location** (Local de destino do S3): o bucket do Amazon S3 e o local para a saída de dados. Você pode selecionar o botão **Browse S3** (Procurar no S3) para ver os buckets do Amazon S3 aos quais você tem acesso e escolher um como destino. 
   + **Opções de atualização do Data Catalog**
     + **Do not update the Data Catalog** (Não atualizar o Data Log): (padrão) escolha essa opção se você não quiser que o trabalho atualize o Data Catalog, mesmo que o esquema seja alterado ou novas partições sejam adicionadas.
     + **Create a table in the Data Catalog and on subsequent runs, update the schema and add new partitions** (Criar uma tabela no Data Catalog e em execuções subsequentes, atualizar o esquema e adicionar novas partições): se você escolher essa opção, o trabalho criará a tabela no Data Catalog na sua primeira execução. Em execuções de trabalho subsequentes, ele atualizará a tabela do Data Catalog, se o esquema for alterado ou novas partições forem adicionadas.

       Você também deve selecionar um banco de dados no Data Catalog e inserir um nome de tabela.
     + **Create a table in the Data Catalog and on subsequent runs, keep existing schema and add new partitions** (Criar uma tabela no Data Catalog e em execuções subsequentes, manter o esquema atual e adicionar novas partições): se você escolher essa opção, o trabalho criará a tabela no Data Catalog na sua primeira execução. Em execuções de trabalho subsequentes, ele atualizará a tabela do Data Catalog, mas apenas para adicionar novas partições.

       Você também deve selecionar um banco de dados no Data Catalog e inserir um nome de tabela.
   + **Particionamento de arquivos**: escolha qual tipo de particionamento você deseja usar para salvar a saída.
     + **Geração automática de arquivos (recomendado)**: este é o valor padrão para o número de arquivos gerados.
     + **Saída de vários arquivos**: especifique o número de saídas de arquivos que você deseja. Para uma performance ideal, use o valor padrão do número de arquivos gerados automaticamente.
   + **Partition keys** (Chaves de partição): escolha quais colunas usar como chaves de particionamento na saída. Para adicionar mais chaves de partição, escolha **Add a partition key** (Adicionar uma chave de partição.

   O particionamento de arquivos não é compatível com o Tableau Hyper como formato de destino.

### Usar as tabelas do Data Catalog para o destino dos dados
<a name="edit-job-target-catalog"></a>

Para todas as origens dos dados, exceto o Amazon S3 e os conectores, uma tabela deve existir noAWS Glue Data Catalog para o tipo de destino que você escolher. O AWS Glue Studio não cria a tabela do Data Catalog.

**Para configurar as propriedades de dados para um destino que usa uma tabela do Data Catalog**

1. Vá para o editor visual para um trabalho novo ou salvo.

1. Escolha um nó de destino dos dados no diagrama de trabalho.

1. Selecione a guia **Data target properties** (Propriedades do destino de dados) e insira as seguintes informações:
   + **Database** (Banco de dados): escolha na lista o banco de dados que contém a tabela que você deseja usar como destino. Esse banco de dados já deve existir no Data Catalog.
   + **Table** (Tabela): escolha na lista a tabela que define o esquema de dados de saída. Essa tabela já deve existir no Data Catalog.

     Uma tabela no Data Catalog consiste em nomes de colunas, definições de tipos de dados, informações de partição e outros metadados relacionados a um conjunto de dados de destino. O trabalho grava em um local descrito por essa tabela no Data Catalog.

     Para obter mais informações sobre como criar tabelas no Data Catalog, consulte [Definir tabelas no Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) no *Guia do desenvolvedor do AWS Glue*.
   + **Opções de atualização do Data Catalog**
     + **Do not change table definition** (Não alterar a definição da tabela): (padrão) escolha essa opção se não quiser que o trabalho atualize o Data Catalog, mesmo que o esquema seja alterado ou novas partições sejam adicionadas.
     + **Update schema and add new partitions** (Atualizar esquema e adicionar novas partições): se você escolher essa opção, o trabalho atualizará a tabela do Data Catalog, se o esquema for alterado ou novas partições forem adicionadas.
     + **Keep schema and add new partitions** (Manter o esquema e adicionar novas partições): se você escolher essa opção, o trabalho atualizará a tabela do Data Catalog, mas apenas para adicionar novas partições.
     + **Partition keys** (Chaves de partição): escolha quais colunas usar como chaves de particionamento na saída. Para adicionar mais chaves de partição, escolha **Add a partition key** (Adicionar uma chave de partição.

### Usar um conector para o destino de dados
<a name="edit-job-target-connector"></a>

Se você selecionar um conector como **Node type** (Tipo de nó), siga as instruções em [Criação de trabalhos com conectores personalizados](job-authoring-custom-connectors.md) para concluir a configuração das propriedades do destino dos dados.

# Editar ou carregar um script de trabalho
<a name="edit-nodes-script"></a>

Use o editor visual do AWS Glue Studio para editar o script de trabalho ou carregar seu próprio script.

É possível usar o editor visual para editar os nós do trabalho somente quando os trabalhos foram criados com o AWS Glue Studio. Se o trabalho foi criado usando o console do AWS Glue, por meio de comandos de API, ou com a command line interface (CLI), você pode usar o editor de scripts no AWS Glue Studio para editar o script de trabalho, os parâmetros e a programação. Você também pode editar o script para um trabalho criado no AWS Glue Studio convertendo o trabalho para o modo somente script.

**Para editar o script de trabalho ou carregar seu próprio script**

1. Se estiver criando um novo trabalho, na página **Jobs** (Trabalhos), escolha a opção **Spark script editor** (Editor de scripts do Spark) para criar um trabalho do Spark ou escolha **Pythin Shell script editor** (Editor de scripts de shell do Python) para criar um trabalho de shell do Python. Você pode escrever um novo script ou carregar um existente. Se escolher **Spark script editor** (Editor de scripts do Spark), você pode escrever ou carregar um script em Scala ou Python. Se escolher **Python Shell script editor** (Editor de scripts de shell do Python), você só pode escrever ou carregar um script em Python.

   Depois de escolher a opção para criar um novo trabalho, na seção **Options** (Opções) que aparece, você pode optar por iniciar com um script inicial (**Create a new script with boilerplate code** [Criar um novo script com o código clichê]) ou pode carregar um arquivo local para usar como script de trabalho.

   Se escolher **Spark script editor** (Editor de scripts do Spark), poderá carregar arquivos de script em Scala ou Python. Os scripts em Scala devem ter a extensão de arquivo `.scala`. Os scripts em Python devem ser reconhecidos como arquivos do tipo Python. Se escolher **Python Shell script editor** (Editor de scripts de shell do Python), só poderá carregar arquivos de script em Python.

   Quando terminar de fazer suas escolhas, selecione **Create** (Criar) para criar o trabalho e abrir o editor visual.

1. Vá para o editor de trabalho visual para o trabalho novo ou salvo e escolha a guia **Script**.

1. Se você não tiver criado um novo trabalho usando uma das opções do editor de scripts e jamais tiver editado o script para um trabalho existente, a guia **Script** exibe o cabeçalho **Script (Locked)** (Script [bloqueado]). Isso significa que o editor de scripts está em modo somente leitura. Escolha **Edit script** (Editar script) para desbloquear o script para edição.

   Para tornar o script editável, o AWS Glue Studio converte seu trabalho de um trabalho visual para um trabalho somente de script. Se você desbloquear o script para edição, não poderá mais usar o editor visual para esse trabalho depois de salvá-lo.

   Na janela de confirmação, escolha **Confirm** (Confirmar) para continuar ou **Cancel** (Cancelar) para manter o trabalho disponível para edição visual.

   Se escolher **Confirm** (Confirme), a guia **Visual** não aparecerá mais no editor. Você pode usar o AWS Glue Studio para modificar o script usando o editor de scripts, modificar os detalhes ou programação do trabalho ou exibir execuções de trabalho.
**nota**  
Até que você salve o trabalho, a conversão para um trabalho somente de script não é permanente. Se você atualizar a página da Web do console ou fechar o trabalho antes de salvá-lo e reabri-lo no editor visual, ainda poderá editar os nós individuais no editor visual.

1. Edite o script, conforme necessário. 

   Quando terminar de editar o script, escolha **Save** (Salvar) para salvar o trabalho e convertê-lo permanentemente de visual para somente script.

1. (Opcional) você pode baixar o script no console do AWS Glue Studio escolhendo o botão **Download** (Baixar) na guia **Script**. Quando você escolhe esse botão, uma nova janela do navegador é aberta, exibindo o script em sua localização no Amazon S3. Os parâmetros de trabalho **Script filename** (Nome de arquivo do script) e **Script path** (Caminho do script) na guia **Job details** (Detalhes do trabalho) determinam o nome e a localização do arquivo de script no Amazon S3.   
![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/job-details-script-location-params-screenshot.png)

   Quando você salva o trabalho, o AWS Glue salva o script de trabalho no local especificado por esses campos. Se você modificar o arquivo de script nesse local no Amazon S3, o AWS Glue Studio carregará o script modificado na próxima vez que você editar o trabalho.

## Criar e editar scripts em Scala no AWS Glue Studio
<a name="edit-job-scala-script"></a>

Quando você escolhe o editor de scripts para criar um trabalho, por padrão, a linguagem de programação de trabalho é definida como `Python 3`. Se você optar por escrever um novo script em vez de carregar um, o AWS Glue Studio iniciará um novo script com texto boilerplate escrito em Python. Se em vez disso, você quiser escrever um script em Scala, deverá primeiro configurar o editor de scripts para usar o Scala.

**nota**  
Se você escolher o Scala como a linguagem de programação para o trabalho e usar o editor visual para projetar seu trabalho, o script de trabalho gerado será escrito em Scala e nenhuma outra ação será necessária.

**Para escrever um novo script em Scala no AWS Glue Studio**

1. Crie um novo trabalho escolhendo a opção **Spark script editor** (Editor de scripts do Spark).

1. Em **Options** (Opções), escolha **Create a new script with boilerplate code** (Criar um novo script com o código clichê).

1. Escolha a guia **Job details** (Detalhes do trabalho) e defina **Language** (Linguagem) como `Scala` (em vez de `Python 3`).
**nota**  
A propriedade **Type** (Tipo) do trabalho é automaticamente definida como `Spark` quando você escolhe a opção **Spark script editor** (Editor de scripts do Spark) para criar um trabalho. 

1. Escolha a guia **Script**.

1. Remova o texto clichê em Python. Você pode substituí-lo com o seguinte texto clichê em Scala.

   ```
   import com.amazonaws.services.glue.{DynamicRecord, GlueContext}
   import org.apache.spark.SparkContext
   import com.amazonaws.services.glue.util.JsonOptions
   import com.amazonaws.services.glue.util.GlueArgParser
   import com.amazonaws.services.glue.util.Job
   
   object MyScript {
     def main(args: Array[String]): Unit = {
       val sc: SparkContext = new SparkContext()
       val glueContext: GlueContext = new GlueContext(sc)
   
       }
   }
   ```

1. Escreva seu script de trabalho em Scala no editor. Adicione mais declarações `import`, conforme necessário.

## Criar e editr trabalhos de shell do Python no AWS Glue Studio
<a name="edit-job-python-shell"></a>

Quando você escolhe o editor de scripts de shell do Python para criar um trabalho, pode carregar um script em Python existente ou escrever um novo. Se você optar por escrever um novo script, o código clichê será adicionado ao novo script de trabalho em Python. 

**Para criar um novo trabalho de shell do Python**  
Consulte as instruções em [Iniciar trabalhos no AWS Glue Studio](edit-nodes-chapter.md#create-jobs-start).

As propriedades de trabalho que são suportadas para trabalhos de shell do Python não são as mesmas que as suportadas para trabalhos do Spark. A lista a seguir descreve as alterações nos parâmetros de trabalho disponíveis para trabalhos de shell do Python na guia **Job details** (Detalhes do trabalho).
+ A propriedade **Type** (Tipo) para o trabalho é automaticamente definida como `Python Shell` e não pode ser alterada. 
+ Em vez de**Language** (Linguagem), há uma propriedade **Python version** (Versão do Python) para o trabalho. No momento, os trabalhos de shell do Python criados no AWS Glue Studio usam o Python 3.6.
+ A propriedade **Glue version** (Versão do Glue) não está disponível, porque não se aplica a trabalhos de shell do Python.
+ Em vez de **Worker type** (Tipo de operador) e **Number of workers** (Número de operadores), uma propriedade **Data processing units** (Unidades de processamento de dados) é mostrada. Essa propriedade de trabalho determina quantas unidades de processamento de dados (DPUs) são consumidas pelo shell do Python ao executar o trabalho.
+ A propriedade **Job bookmark** (Marcador de trabalho) não está disponível, porque não é suportado para trabalhos de shell do Python.
+ Em **Advanced properties** (Propriedades avançadas), as propriedades a seguir não estão disponíveis para trabalhos de shell do Python.
  + **Métricas de trabalho**
  + **Registro em log contínuo**
  + **Spark UI** (IU do Spark) e **Spark UI logs path** (Caminho de logs de IU do Spark)
  + **Dependent jars path** (Caminho de arquivos jar dependentes), no cabeçalho **Libraries** (Bibliotecas)

# Alterar os nós pais de um nó no diagrama de trabalho
<a name="edit-job-change-parents"></a>

Você pode alterar os pais de um nó para mover nós dentro do diagrama de trabalho ou para alterar uma origem dos dados de um nó.

**Para alterar o nó pai**

1. Escolha o nó no diagrama de trabalho que você deseja modificar.

1. No painel de detalhes do nó, na guia **Node properties** (Propriedades do nó) no cabeçalho **Node parents** (Nós pais), remova o pai atual do nó.

1. Escolha um novo nó pai na lista.

1. Modifique as outras propriedades do nó conforme necessário para corresponder ao nó pai recém-selecionado.

Se você modificou um nó por engano, pode usar o botão **Undo** (Desfazer) na barra de ferramentas para reverter a ação.

# Excluir nós do diagrama de trabalho
<a name="edit-job-delete-node"></a>

 Ao trabalhar com trabalhos de ETL visuais, é possível remover nós da tela sem precisar adicionar novamente ou reestruturar nenhum nó conectado ao nó removido. 

 No exemplo abaixo, acompanhe escolhendo **Trabalhos de ETL > ETL visual** e, em **Exemplos de trabalhos**, escolhendo **Trabalho de ETL visual para unir várias fontes**. Escolha **Criar trabalho de exemplo** para criar um trabalho e siga as etapas abaixo. 

![\[A captura de tela mostra o painel Trabalhos de exemplo com o trabalho de ETL visual para unir várias fontes. Exemplo de trabalho selecionado.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/visual-etl-example-jobs-create.png)


**Para remover um nó da tela**

1.  No console do AWS Glue, escolha **ETL visual** no menu de navegação e escolha uma tarefa existente. A tela de trabalho exibe o trabalho de exemplo conforme ilustrado abaixo.   
![\[A captura de tela mostra um diagrama de trabalho gerado a partir do trabalho de exemplo.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/visual-job-example-job-nodes.png)

1.  Escolha o nó que deseja remover. A tela ampliará o zoom no nó. Na barra de ferramentas no lado direito da tela, escolha o ícone **Lixeira**. Isso removerá o nó, e qualquer nó conectado ao nó será movido para ocupar seu lugar no fluxo de trabalho. Neste exemplo, o primeiro nó **Join** foi excluído da tela. 

    Se você excluir um nó no fluxo de trabalho, o AWS Glue reorganizará os nós de uma forma que não resulte em um fluxo de trabalho inválido. Talvez você ainda precise corrigir a configuração de um nó. 

    No exemplo, o nó **Join** abaixo do nó **Subscribers** foi removido. Como resultado, o nó de origem **Plans** foi movido para o nível superior e ainda está conectado ao nó secundário **Join**. O nó **Join** agora requer configuração adicional, pois **Join** requer dois nós de origem pais com tabelas selecionadas. A guia **Transformar** à direita da tela exibe o requisito ausente em **Condições de união**.   
![\[A captura de tela mostra um diagrama de trabalho em que os nós pais são dois nós de origem: Atribuição do plano e Assinantes. Eles estão conectados a um nó Join. Um nó de origem Plans e um nó Join estão conectados ao nó Change Schema. O nó Catalog está conectado ao nó Change Schema.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/visual-job-delete-node-join-plans.png)

1.  Exclua o segundo nó **Join** e o nó **Select Fields**. Quando os nós forem excluídos, o fluxo de trabalho será semelhante ao exemplo abaixo.   
![\[A captura de tela mostra um diagrama de trabalho em que os nós Join e os Select Fields foram removidos e o nó conectado a eles, o nó Change Schema, foi movido para cima para ocupar seu lugar no fluxo de trabalho.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/visual-job-three-data-sources-rearranged.png)

1.  Para modificar as conexões do nó, clique na alça do nó e arraste a conexão para um novo nó. Isso permitirá a você excluir os nós e reorganizá-los em um fluxo lógico. No exemplo, uma nova conexão está sendo feita com um clique na alça no nó Plans e arrastando-se a conexão até o nó Join, conforme ilustrado pela seta vermelha.   
![\[A captura de tela mostra um diagrama de trabalho em que a alça está dentro de um círculo vermelho e uma seta vermelha une o nó Plans e o nó Join para demonstrar a ação de clicar e arrastar para conectar os nós.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/visual-job-plans-node-handle-selected.png)

1.  Se precisar desfazer alguma ação, escolha o ícone **Desfazer** diretamente abaixo do ícone **Lixeira** na barra de ferramentas no lado direito da tela. 

# Adicionar parâmetros de origem e destino ao nó do AWS Glue Data Catalog
<a name="edit-job-add-job-parameters"></a>

 AWS Glue StudioO permite que você parametrize trabalhos visuais. Como os nomes das tabelas de catálogo no ambiente de produção e desenvolvimento podem ser diferentes, você pode definir e selecionar parâmetros de runtime para bancos de dados e tabelas que serão executados quando seu trabalho for executado. 

 A parametrização de trabalhos permite parametrizar origens e destinos e salvar estes parâmetros no trabalho ao usar o nó do AWS Glue Data Catalog. Ao especificar origens e destinos como parâmetros, você está permitindo a reutilização de trabalhos, principalmente quando usa o mesmo trabalho em vários ambientes. Isso é útil para promover código em ambientes de implantação, economizando tempo e esforços no gerenciamento das suas origens e dos seus destinos. Além disso, os parâmetros personalizados que você especificar substituirão os argumentos padrão para execuções específicas de trabalhos do AWS Glue. 

 ** Para adicionar parâmetros de origem e destino ** 

 Se você estiver usando o nó do AWS Glue Data Catalog como origem ou destino, poderá definir parâmetros de runtime na seção **Advanced properties** (Propriedades avançadas) na guia **Job details** (Detalhes do trabalho). 

1.  Escolha o nó do AWS Glue Data Catalog como nó de origem ou nó de destino. 

1.  Escolha a guia **Job details** (Detalhes do trabalho). 

1.  Escolha **Advanced properties** (Propriedades avançadas). 

1.  Na seção Job parameters (Parâmetros do trabalho), insira um valor de chave. Por exemplo, `--db.source` seria o parâmetro para uma origem de banco de dados. Você pode inserir qualquer nome para a chave, desde que o nome da chave seja seguido pelo “traço traço”.   
![\[A captura de tela mostra a seção de parâmetros do trabalho na guia Job details (Detalhes do trabalho). Você pode definir os parâmetros a serem usados durante o runtime para o banco de dados e a tabela.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/Data_Catalog_node_job_details_job_parameters.png)

1.  Insira o valor. Por exemplo, `databasename` seria o valor para um banco de dados sendo parametrizado. 

1.  Escolha **Add new parameter** (Adicionar novo parâmetro) se quiser adicionar parâmetros. O máximo de 50 parâmetros é permitido. Depois que o par de chave-valor tiver sido definido, você poderá usar o parâmetro no nó do AWS Glue Data Catalog. 

 ** Para selecionar um parâmetro de runtime ** 

**nota**  
 O processo para selecionar parâmetros de runtime para bancos de dados e tabelas é o mesmo, não importando se o nó do AWS Glue Data Catalog é a origem ou o destino. 

1.  Escolha o nó do AWS Glue Data Catalog como nó de origem ou nó de destino. 

1.  Na guia **Data source properties - Data Catalog** (Propriedades da fonte de dados - Data Catalog) em **Database** (Banco de dados), escolha **Use runtime parameters** (Usar parâmetros de runtime).   
![\[A captura de tela mostra o menu suspenso de parâmetros de runtime. Você pode selecionar quaisquer parâmetros definidos para serem usados durante o runtime para o banco de dados e a tabela.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/Data_Catalog_node_select_runtime_parameters.png)

1.  No menu suspenso, escolha um parâmetro. Por exemplo, quando você selecionar um parâmetro definido para um banco de dados de origem, o banco de dados será preenchido automaticamente no menu suspenso de banco de dados quando você escolher **Apply** (Aplicar). 

1.  Na seção Table (Tabela), escolha um parâmetro que você já definiu como tabela de origem. Quando você escolhe **Apply** (Aplicar), a tabela é automaticamente preenchida como a tabela a ser usada. 

1.  Quando você salvar e executar o trabalho, o AWS Glue Studio fará referência aos parâmetros selecionados durante a execução do trabalho. 

# Usando sistemas de controle de versão do Git no AWS Glue
<a name="edit-job-add-source-control-integration"></a>

**nota**  
 Atualmente, os notebooks não são compatíveis com o controle de versão noAWS Glue Studio. No entanto, há suporte para controle de versão para scripts de AWS Glue tarefas e tarefas ETL visuais. 

 Se houver repositórios remotos e você quiser gerenciar seus trabalhos do AWS Glue usando seus repositórios, poderá usar o AWS Glue Studio ou a AWS CLI para sincronizar as alterações nos seus repositórios e seus trabalhos no AWS Glue. Quando sincroniza as alterações dessa forma, você está transferindo o trabalho do AWS Glue Studio para seu repositório ou transferindo do repositório para o AWS Glue Studio. 

 Com a integração do Git no AWS Glue Studio, você pode: 
+  Fazer a integração com sistemas de controle de versão do Git, como AWS CodeCommit, GitHub e Bitbucket 
+  Editar trabalhos do AWS Glue no AWS Glue Studio se você usa trabalhos visuais ou de script e os sincroniza com um repositório 
+  Parametrizar origens e destinos nos trabalhos 
+  Extrair trabalhos de um repositório e editá-los no AWS Glue Studio 
+  Testar trabalhos extraindo-os de ramificações e/ou transferindo-os para ramificações usando fluxos de trabalho em várias ramificações no AWS Glue Studio 
+  Baixar arquivos de um repositório e carregar trabalhos para o AWS Glue Studio para a criação de trabalhos entre contas 
+  Usar sua ferramenta de automação preferencial (por exemplo, Jenkins, AWS CodeDeploy etc.) 

Este vídeo demonstra como você pode integrar o AWS ao Glue com Git e criar um pipeline de código contínuo e colaborativo.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/XRlZq2kvE4U/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/XRlZq2kvE4U)


## permissões do IAM
<a name="git-integration-permissions"></a>

 Certifique-se de que o trabalho tenha uma das seguintes permissões do IAM. Para obter mais informações sobre como configurar permissões do IAM, consulte [Configurar permissões do IAM para o AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html?icmpid=docs_glue_studio_helppanel#getting-started-iam-permissions). 
+ `AWSGlueServiceRole`
+ `AWSGlueConsoleFullAccess`

 No mínimo, as seguintes ações são necessárias para a integração com o Git: 
+  `glue:UpdateJobFromSourceControl`: para poder atualizar o AWS Glue com um trabalho presente em um sistema de controle de versão 
+  `glue:UpdateSourceControlFromJob` — para poder atualizar o sistema de controle de versão com um trabalho armazenado no AWS Glue 
+  `s3:GetObject`: para poder recuperar o script do trabalho durante a transferência para o sistema de controle de versão 
+  `s3:PutObject`: para poder atualizar o script ao extrair um trabalho de um sistema de controle de origem 

## Pré-requisitos
<a name="edit-job-push-source-repository-prerequisites"></a>

 Para enviar trabalhos para um repositório de controle de origem, você precisará: 
+  um repositório que já foi criado pelo seu administrador 
+  uma ramificação no repositório 
+  um token de acesso pessoal (para o Bitbucket, esse é o token de acesso ao repositório) 
+  o nome de usuário do proprietário do repositório 
+  definir permissões no repositório para permitir AWS Glue Studio a leitura e gravação no repositório 
  +  **GitLab** — defina os escopos do token para api, read\$1repository e write\$1repository 
  +  **Bitbucket** — defina permissões para: 
    + **Associação ao Workspace** — leia, escreva
    + **Projetos** — escrever, administrar ler
    + **Repositórios** — leitura, gravação, administração, exclusão

**nota**  
 Ao usar AWS CodeCommit, o token de acesso pessoal e o proprietário do repositório não são necessários. Consulte [ Conceitos básicos do Git e do AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started.html). 

 **Usando trabalhos do seu repositório de controle de origem no AWS Glue Studio** 

 Para extrair um trabalho do seu repositório de controle de origem que não está no AWS Glue Studio e usar esse trabalho no AWS Glue Studio, os pré-requisitos dependerão do tipo de trabalho. 

 **Para um trabalho visual:** 
+  você precisa de uma pasta e de um arquivo JSON da definição do trabalho que correspondam ao nome do trabalho 

   Por exemplo, veja a definição de trabalho abaixo. A ramificação no seu repositório deve conter um caminho `my-visual-job/my-visual-job.json`, em que a pasta e o arquivo JSON correspondam ao nome do trabalho 

  ```
  {
    "name" : "my-visual-job",
    "description" : "",
    "role" : "arn:aws:iam::aws_account_id:role/Rolename",
    "command" : {
      "name" : "glueetl",
      "scriptLocation" : "s3://foldername/scripts/my-visual-job.py",
      "pythonVersion" : "3"
    },
    "codeGenConfigurationNodes" : "{\"node-nodeID\":{\"S3CsvSource\":{\"AdditionalOptions\":{\"EnableSamplePath\":false,\"SamplePath\":\"s3://notebook-test-input/netflix_titles.csv\"},\"Escaper\":\"\",\"Exclusions\":[],\"Name\":\"Amazon S3\",\"OptimizePerformance\":false,\"OutputSchemas\":[{\"Columns\":[{\"Name\":\"show_id\",\"Type\":\"string\"},{\"Name\":\"type\",\"Type\":\"string\"},{\"Name\":\"title\",\"Type\":\"choice\"},{\"Name\":\"director\",\"Type\":\"string\"},{\"Name\":\"cast\",\"Type\":\"string\"},{\"Name\":\"country\",\"Type\":\"string\"},{\"Name\":\"date_added\",\"Type\":\"string\"},{\"Name\":\"release_year\",\"Type\":\"bigint\"},{\"Name\":\"rating\",\"Type\":\"string\"},{\"Name\":\"duration\",\"Type\":\"string\"},{\"Name\":\"listed_in\",\"Type\":\"string\"},{\"Name\":\"description\",\"Type\":\"string\"}]}],\"Paths\":[\"s3://dalamgir-notebook-test-input/netflix_titles.csv\"],\"QuoteChar\":\"quote\",\"Recurse\":true,\"Separator\":\"comma\",\"WithHeader\":true}}}"
  }
  ```

 **Para um trabalho de script: ** 
+  você precisa de uma pasta, de um arquivo JSON da definição do trabalho e do script 
+  a pasta e o arquivo JSON devem corresponder ao nome do trabalho. O nome do script precisa corresponder ao `scriptLocation` da definição do trabalho junto com a extensão do arquivo 

   Por exemplo, na definição do trabalho abaixo, a ramificação no seu repositório deve conter um caminho `my-script-job/my-script-job.json` e `my-script-job/my-script-job.py`. O nome do script deve corresponder ao nome na `scriptLocation`, incluindo a extensão do script 

  ```
  {
    "name" : "my-script-job",
    "description" : "",
    "role" : "arn:aws:iam::aws_account_id:role/Rolename",
    "command" : {
      "name" : "glueetl",
      "scriptLocation" : "s3://foldername/scripts/my-script-job.py",
      "pythonVersion" : "3"
    }
  }
  ```

## Limitações
<a name="edit-job-repository-limitations"></a>
+  No momento, o AWS Glue não oferece suporte a push/pull do [GitLab-Groups](https://docs.gitlab.com/ee/user/group). 

## Conectar repositórios de controle de versão com o AWS Glue
<a name="edit-job-connecting-repositories"></a>

 Você pode inserir os detalhes do seu repositório de controle de versão e gerenciá-los na guia **Version Control** (Controle de versão) no editor de trabalhos do AWS Glue Studio. Para se integrar ao seu repositório Git, deverá se conectar a ele para cada vez que fizer login no AWS Glue Studio. 

 Para conectar um sistema de controle de versão Git: 

1.  No AWS Glue Studio, comece um novo trabalho e escolha guia **Version Control** (Controle de versão).   
![\[A captura de tela mostra um trabalho com a guia Version Control (Controle de versão) selecionada.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/editing-nodes-version-control-tab.png)

1.  Em **Version control system** (Sistema de controle de versão), escolha o serviço Git entre as opções disponíveis clicando no menu suspenso. 
   +  AWS CodeCommit 
   +  GitHub 
   + GitLab
   + Bitbucket

1.  Dependendo do sistema de controle de versão Git escolhido, você terá campos diferentes para preencher. 

   

    **Para AWS CodeCommit**: 

    Conclua a configuração do repositório selecionando o repositório e a ramificação para seu trabalho: 
   +  **Repositório**: se você tiver configurado repositórios no AWS CodeCommit, selecione o repositório no menu suspenso. Seus repositórios serão preenchidos automaticamente na lista 
   +  **Ramificação**: selecione a ramificação no menu suspenso 
   +  **Pasta**: *opcional* - insira o nome da pasta na qual deseja salvar seu trabalho. Se o campo for deixado vazio, uma pasta será criada automaticamente. O nome da pasta assume o nome do trabalho como padrão. 

   

    **Para o GitHub**: 

    Conclua a configuração do GitHub preenchendo os campos: 
   +  **Personal access token** (Token de acesso pessoal): esse é o token fornecido pelo repositório do GitHub. Para obter mais informações sobre tokens de acesso pessoal, consulte [GitHub Docs](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) (Documentos do GitHub) 
   +  **Repository owner** (Proprietário do repositório): este é o proprietário do repositório do GitHub. 

    Conclua a configuração do repositório selecionando o repositório e a ramificação no GitHub. 
   +  **Repository** (Repositório): se você tiver configurado repositórios no GitHub, selecione o repositório no menu suspenso. Seus repositórios serão preenchidos automaticamente na lista 
   +  **Ramificação**: selecione a ramificação no menu suspenso 
   +  **Pasta**: *opcional* - insira o nome da pasta na qual deseja salvar seu trabalho. Se o campo for deixado vazio, uma pasta será criada automaticamente. O nome da pasta assume o nome do trabalho como padrão. 

   

    **Para o GitLab**: 
**nota**  
 No momento, o AWS Glue não oferece suporte a push/pull do [GitLab-Groups](https://docs.gitlab.com/ee/user/group). 
   +  **Personal access token** (Token de acesso pessoal): esse é o token fornecido pelo repositório do GitLab. Para obter mais informações sobre tokens de acesso pessoal, consulte Tokens de acesso pessoal do [GitLab](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html) 
   +  **Repository owner** (Proprietário do repositório): este é o proprietário do repositório do GitLab. 

    Conclua a configuração do repositório selecionando o repositório e a ramificação no GitLab. 
   +  **Repository** (Repositório): se você tiver configurado repositórios no GitLab, selecione o repositório no menu suspenso. Seus repositórios serão preenchidos automaticamente na lista 
   +  **Ramificação**: selecione a ramificação no menu suspenso 
   +  **Pasta**: *opcional* - insira o nome da pasta na qual deseja salvar seu trabalho. Se o campo for deixado vazio, uma pasta será criada automaticamente. O nome da pasta assume o nome do trabalho como padrão. 

    **Para Bitbucket**: 
   +  **Senha de aplicações**: o Bitbucket usa senhas de aplicações, e não tokens de acesso ao repositório. Para obter mais informações sobre senhas de aplicações, consulte [Senhas de aplicações](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/). 
   +  **Repository owner** (Proprietário do repositório): este é o proprietário do repositório do Bitbucket. No Bitbucket, o proprietário é o criador do repositório. 

    Conclua a configuração do repositório selecionando o espaço de trabalho, repositório, ramificação e pasta do Bitbucket. 
   +  **Espaço de trabalho** - se você tiver espaços de trabalho configurados no Bitbucket, selecione o espaço de trabalho no menu suspenso. Seus espaços de trabalho são preenchidos automaticamente 
   +  **Repository** (Repositório) - se você tiver configurado repositórios no , selecione o repositório no menu suspenso. Seus repositórios são preenchidos automaticamente 
   +  **Ramificação**: selecione a ramificação no menu suspenso. Suas filiais são preenchidas automaticamente 
   +  **Pasta**: *opcional* - insira o nome da pasta na qual deseja salvar seu trabalho. Se deixado em branco, uma pasta será criada automaticamente com o nome do trabalho. 

1.  Escolha **Save** (Salvar) na parte superior do trabalho do AWS Glue Studio 

## Transferir trabalhos do AWS Glue para o repositório de origem
<a name="edit-job-push-source-repository"></a>

 Depois de inserir os detalhes do seu sistema de controle de versão, você pode editar trabalhos no AWS Glue Studio e enviá-los para seu repositório de origem. Se você não estiver familiarizado com os conceitos do Git, como push e pull, consulte esse tutorial em [Conceitos básicos do Git e do AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started.html). 

 Para transferir seu trabalho para um repositório, você precisa inserir os detalhes do seu sistema de controle de versão e salvar o trabalho. 

1.  No trabalho do AWS Glue Studio, escolha **Actions** (Ações). Opções adicionais de menu serão abertas.   
![\[A captura de tela mostra um trabalho com o menu Actions (Ações) aberto. A opção Push to repository (Transferir para o repositório) está visível.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/editing-nodes-actions-push-to-repository.png)

1.  Escolha **Push to repository** (Transferir para o repositório). 

    Essa ação salvará o trabalho. Quando você transfere para o repositório, o AWS Glue Studio transfere a alteração mais recente salva. Se o trabalho no repositório tiver sido modificado por você ou por outro usuário e estiver fora de sincronia com o trabalho no AWS Glue Studio, o trabalho no repositório será substituído pelo trabalho salvo no AWS Glue Studio quando você transferir o trabalho do AWS Glue Studio. 

1.  Escolha **Confirm** (Confirmar) para concluir a ação. Uma nova confirmação será criada no repositório. Se você estiver usando o AWS CodeCommit, uma mensagem de confirmação exibirá um link para a confirmação mais recente no AWS CodeCommit. 

## Extrair trabalhos do AWS Glue do repositório de origem
<a name="edit-job-pull-source-repository"></a>

 Depois de inserir os detalhes do seu repositório do Git na guia **Version control** (Controle de versão), você também pode extrair trabalhos do seu repositório e editá-los no AWS Glue Studio. 

1.  No trabalho do AWS Glue Studio, escolha **Actions** (Ações). Opções adicionais de menu serão abertas.   
![\[A captura de tela mostra um trabalho com o menu Actions (Ações) aberto. A opção Push to repository (Transferir para o repositório) está visível.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/editing-nodes-actions-push-to-repository.png)

1.  Escolha **Pull from repository** (Extrair do repositório). 

1.  Escolha **Confirmar**. Essa opção captura a confirmação mais recente do repositório e atualiza seu trabalho no AWS Glue Studio. 

1.  Edite seu trabalho no AWS Glue Studio. Se você fizer alterações, poderá sincronizar o trabalho com o repositório escolhendo **Push to repository** (Transferir para o repositório) no menu suspenso **Actions** (Ações). 

# Criação de código com notebooks AWS Glue Studio
<a name="notebooks-chapter"></a>

 Os engenheiros de dados podem criar trabalhos do AWS Glue de forma mais fácil e rápida do que antes usando a interface de caderno interativo no AWS Glue Studio ou sessões interativas no AWS Glue. 

## Limitações
<a name="notebooks-chapter-limitations"></a>
+  Cadernos do AWS Glue Studio não são compatíveis com Scala. 

**Topics**
+ [Limitações](#notebooks-chapter-limitations)
+ [Visão geral do uso de cadernos](using-notebooks-overview.md)
+ [Criar um trabalho de ETL usando cadernos no AWS Glue Studio](create-notebook-job.md)
+ [Componentes do editor de cadernos](notebook-components.md)
+ [Salvar o caderno e o script do trabalho](save-notebook.md)
+ [Gerenciar sessões de cadernos](manage-notebook-sessions.md)
+ [Usar o Amazon Q Developer com cadernos do AWS Glue Studio](glue-studio-notebooks-amazon-q-developer.md)

# Visão geral do uso de cadernos
<a name="using-notebooks-overview"></a>

 O AWS Glue Studio permite criar trabalhos interativamente em uma interface de caderno baseada no Jupyter Notebooks. Com os cadernos no AWS Glue Studio, você pode editar scripts de trabalho e visualizar a saída sem ter que executar um trabalho completo. Da mesma forma, é possível editar o código de integração de dados e visualizar a saída precisar executar um trabalho completo. Além disso, você pode adicionar markdowns e salvar cadernos como arquivos .ipynb e scripts de trabalho. É possível iniciar um caderno sem instalar software localmente nem gerenciar servidores. Quando estiver satisfeito com seu código, o AWS Glue Studio poderá converter seu caderno em um trabalho do Glue com o clique de um botão. 

 Alguns dos benefícios de usar cadernos incluem: 
+  Nenhum cluster para provisionar ou gerenciar 
+  Nenhum cluster ocioso para pagar 
+  Não é necessária nenhuma configuração inicial 
+  Não é necessário realizar a instalação de cadernos do Jupyter 
+  O mesmo runtime/plataforma que o ETL do AWS Glue. 

 Ao começar um caderno via AWS Glue Studio, todas as etapas de configuração são feitas para você, para que você possa explorar seus dados e começar a desenvolver seu script de trabalho após apenas alguns segundos. O AWS Glue Studio configura um caderno do Jupyter com o kernel Jupyter do AWS Glue. Não é necessário configurar VPCs, conexões de rede nem endpoints de desenvolvimento para usar esse caderno. 

 Para criar trabalhos usando a interface de caderno: 
+  configure as permissões do IAM necessárias. 
+  inicie uma sessão de caderno para criar um trabalho 
+  escreva código nas células do caderno 
+  execute e teste o código para visualizar a saída 
+  salve o trabalho 

 Depois que o caderno for salvo, ele será um trabalho do AWS Glue completo. Você pode gerenciar todos os aspectos do trabalho, como agendar trabalhos de execução, definir parâmetros de trabalho e exibir o histórico de execução do trabalho ao lado do seu caderno. 

# Criar um trabalho de ETL usando cadernos no AWS Glue Studio
<a name="create-notebook-job"></a>

**Para começar a usar cadernos no console do AWS Glue Studio**

1.  Anexe políticas do AWS Identity and Access Management ao usuário AWS Glue Studio e crie um perfil do IAM para seu trabalho de ETL e bloco de anotações. 

1.  Configure a segurança adicional do IAM para cadernos, conforme descrito em [Conceder permissões para a função do IAM](notebook-getting-started.md#studio-notebook-permissions). 

1.  Abra o console do AWS Glue Studio em [https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/). 
**nota**  
Verifique se o navegador não bloqueia cookies de terceiros. Qualquer navegador que bloqueie cookies de terceiros por padrão ou graças a uma configuração habilitada pelo usuário impedirá a inicialização dos cadernos. Para mais informações sobre o gerenciamento de cookies, consulte:
   + [Chrome](https://support.alertlogic.com/hc/en-us/articles/360018127132-Turn-Off-Block-Third-Party-Cookies-in-Chrome-for-Windows)
   + [Firefox](https://support.mozilla.org/en-US/kb/third-party-cookies-firefox-tracking-protection)
   + [Safari](https://support.apple.com/guide/safari/manage-cookies-sfri11471/mac)

1. Escolha o link **Jobs** (Trabalhos) no menu de navegação do lado esquerdo. 

1.  Escolha **Jupyter Notebook** (Caderno do Jupyter) e, em seguida, escolha **Create** (Criar) para iniciar uma nova sessão de caderno. 

1.  Na página **Create job in Jupyter notebook** (Criar trabalho em caderno do Jupyter), forneça o nome do trabalho e escolha a função do IAM a ser usada. Escolha **Criar trabalho**. 

    Após um curto período de tempo, o editor de caderno é mostrado. 

1.  Após adicionar o código, execute a célula para iniciar uma sessão. Há várias maneiras de executar a célula: 
   + Pressione o botão play (reproduzir).
   +  Use o atalho de teclado: 
     +  No macOS, **Command**\$1**Enter** para executar a célula. 
     +  No Windows, **Shift**\$1**Enter** para executar a célula. 

    Para obter informações sobre como escrever código usando uma interface do caderno do Jupyter, consulte a *[Documentação do usuário do Jupyter Notebook](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html)*. 

1.  Para testar seu script, execute o script inteiro ou células individuais. Qualquer saída de comando será exibida na área abaixo da célula. 

1.  Após concluir o desenvolvimento de seu caderno, você poderá salvar o trabalho e executá-lo. Você encontrará o script na guia **Script**. Qualquer mágica adicionada ao caderno será removida e não será salva como parte do script do trabalho gerado do AWS Glue. O AWS Glue Studio adicionará automaticamente um `job.commit()` ao final do script gerado com base no conteúdo do caderno.

   Para obter mais informações sobre como executar trabalhos, consulte [Iniciar uma execução de trabalho](managing-jobs-chapter.md#start-jobs). 

   

# Componentes do editor de cadernos
<a name="notebook-components"></a>

 A interface do editor de cadernos oferece as seguintes seções principais. 
+  Interface do caderno (painel principal) e barra de ferramentas 
+  Guias de edição de trabalhos 

## O editor de cadernos
<a name="notebook-editor"></a>

 O editor de cadernos do AWS Glue Studio é baseado na aplicação Jupyter Notebook. A interface de cadernos do AWS Glue Studio é semelhante à fornecida pelo Juypter Notebooks e é descrita na seção [Interface de usuário de cadernos](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html?highlight=toolbar#notebook-user-interface). O caderno usado por sessões interativas é um Jupyter Notebook. 

 Embora o caderno do AWS Glue Studio seja semelhante ao Juptyer Notebooks, ele apresenta algumas diferenças importantes: 
+  no momento, o caderno do AWS Glue Studio não pode instalar extensões 
+  não é possível usar várias guias; há uma relação 1:1 entre um trabalho e um caderno 
+  o caderno do AWS Glue Studio não tem o mesmo menu de arquivos superior que existe no Jupyter Notebooks 
+  no momento, o caderno do AWS Glue Studio só funciona com o kernel do AWS Glue. Observe que você não pode atualizar o kernel por conta própria. 

## Guias de edição de trabalhos do AWS Glue Studio
<a name="notebook-job-tabs"></a>

 As guias que você usa para interagir com o trabalho ETL estão na parte superior da página do caderno. Elas são semelhantes às guias que aparecem no editor de trabalhos visual do AWS Glue Studio e executam as mesmas ações. 
+  **Notebook** (caderno): use essa guia para visualizar o script do trabalho usando a interface do caderno. 
+  **Job details** (Detalhes do trabalho): configure o ambiente e as propriedades para as execuções de trabalhos. 
+  **Runs** (Execuções): visualize informações sobre execuções anteriores deste trabalho. 
+  **Schedules** (Programações): configure uma programação para executar seu trabalho em horários específicos. 

# Salvar o caderno e o script do trabalho
<a name="save-notebook"></a>

 Você pode salvar seu caderno e o script do trabalho que você está criando a qualquer momento. Basta escolher o botão **Save** (Salvar) no canto superior direito, o mesmo que você faria se estivesse usando o editor visual ou de script. 

 Quando você escolhe **Save** (Salvar), o arquivo do caderno é salvo nos locais padrão. 
+  Por padrão, o script do trabalho é salvo no local do Amazon S3 indicado na guia **Job Details** (Detalhes do trabalho), em **Advanced properties** (Propriedades avançadas), na propriedade dos detalhes do trabalho **Script path** (Caminho do script). Os scripts de trabalho são salvos em uma subpasta denominada `Scripts`. 
+  Por padrão, o arquivo do caderno (`.ipynb`) é salvo no local do Amazon S3 indicado na guia **Job Details** (Detalhes do trabalho), em **Advanced properties** (Propriedades avançadas), no **Script path** (Caminho do script) dos detalhes do trabalho. Os arquivos de cadernos são salvos em uma subpasta denominada `Notebooks`. 

**nota**  
 Quando você salva o trabalho, o script de trabalho contém apenas as células de código do caderno. As células e magics do Markdown não estão incluídas no script de trabalho. Porém, o arquivo `.ipynb` conterá todas as remarcações e magics. 

 Após salvar o trabalho, você poderá executar o trabalho usando o script criado no caderno. 

# Gerenciar sessões de cadernos
<a name="manage-notebook-sessions"></a>

 Os cadernos no AWS Glue Studio são baseados no recurso de sessões interativas do AWS Glue. Há um custo para usar sessões interativas. Para ajudar a gerenciar seus custos, você pode monitorar as sessões criadas para sua conta e definir as configurações padrão para todas as sessões. 

## Alterar o tempo limite padrão para todas as sessões do caderno
<a name="change-default-timeout"></a>

 Por padrão, o caderno provisionado do AWS Glue Studio expira após 12 horas se o caderno tiver sido iniciado e nenhuma célula executada. Não há custo associado a ele e o tempo-limite não é configurável. 

 Após executar uma célula, isso iniciará uma sessão interativa. Essa sessão tem um tempo limite padrão de 48 horas. Esse tempo limite pode ser configurado mediante a transmissão de uma mágica de `%idle_timeout` antes de executar uma célula. 

**Para modificar o tempo limite de sessão padrão para cadernos no AWS Glue Studio**

1.  No caderno, insira o magic `%idle_timeout` em uma célula e especifique o valor do tempo limite em minutos. 

1.  Por exemplo: `%idle_timeout 15` mudará o tempo limite padrão para 15 minutos. Se a sessão não for usada em 15 minutos, ela será interrompida automaticamente. 

## Instalar módulos Python adicionais
<a name="specify-default-modules"></a>

 Se desejar instalar módulos adicionais em sua sessão usando pip, você poderá fazê-lo usando `%additional_python_modules`para adicioná-los à sua sessão: 

```
%additional_python_modules awswrangler, s3://amzn-s3-demo-bucket/mymodule.whl
```

 Todos os argumentos para additional\$1python\$1modules são passados para `pip3 install -m <>` 

 Para visualizar uma lista de módulos Python disponíveis, consulte [Usar bibliotecas Python com o AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html). 

## Alterar a configuração do AWS Glue
<a name="specify-default-modules"></a>

 É possível usar mágicas para controlar valores de configuração de trabalho do AWS Glue. Se quiser alterar um valor de configuração de trabalho, use a mágica adequada no caderno. Consulte [Mágicas compatíveis com sessões interativas do AWS Glue para Jupyter](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-magics.html). 

**nota**  
 As propriedades de substituição de uma sessão em execução não estão mais disponíveis. Para alterar as configurações da sessão, você pode interromper a sessão, definir as novas configurações e, em seguida, iniciar uma nova sessão. 

 AWS GlueO oferece suporte a vários tipos de operadores. Você pode definir o tipo do operador com `%worker_type`. Por exemplo: `%worker_type G.2X `. Os tipos de operadores disponíveis incluem G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X e R.8X. O padrão é G.1X. 

 Também é possível especificar o número de operadores com `%number_of_workers`. Por exemplo, para especificar 40 operadores: `%number_of_workers 40`. 

 Para obter mais informações, consulte [Definir as propriedades do trabalho](https://docs.aws.amazon.com/glue/latest/dg/add-job.html) 

## Interromper uma sessão de caderno
<a name="stop-notebook-session"></a>

 Para interromper uma sessão de caderno, use o magic `%stop_session`. 

 Se você navegar para longe do caderno no console do AWS, receberá uma mensagem de aviso onde poderá optar por interromper a sessão. 

# Usar o Amazon Q Developer com cadernos do AWS Glue Studio
<a name="glue-studio-notebooks-amazon-q-developer"></a>

 AWS Glue StudioO permite criar trabalhos interativamente em uma interface de caderno baseada no Jupyter Notebooks. O uso do Amazon Q Developer melhora a experiência de criação em cadernos do AWS Glue Studio. 

 A extensão do Amazon Q Developer oferece suporte à escrita de código gerando recomendações de código e sugerindo melhorias relacionadas a problemas de código. O Amazon Q Developer é compatível com Python e Scala, as duas linguagens usadas para codificar scripts ETL para trabalhos do Spark em cardenos do AWS Glue Studio. 

## O que é o Amazon Q Developer?
<a name="w2aac33c15c36b9"></a>

 O Amazon Q Developer é um serviço baseado em machine learning que ajuda a melhorar a produtividade do desenvolvedor. O Amazon Q Developer faz isso gerando recomendações de código com base nos comentários dos desenvolvedores em linguagem natural e no código criado por eles no IDE. O serviço se integra ao JupyterLab, Amazon SageMaker AI Studio, instâncias de caderno do Amazon SageMaker AI e outros ambientes de desenvolvimento integrados (IDEs). 

 Para obter mais informações, consulte [Usar o Amazon Q Developer com o AWS Glue Studio](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/glue-setup.html). 

# Status de execução de trabalhos do AWS Glue no console
<a name="view-job-runs"></a>

Você pode visualizar o status de um trabalho de extração, transformação e carregamento (ETL) do AWS Glue enquanto ele está em execução ou após a interrupção. É possível visualizar o status usando o console do AWS Glue. 

## Acessar o painel de monitoramento de trabalhos
<a name="monitoring-accessing-dashboard"></a>

Acesse o painel de monitoramento de trabalhos escolhendo o link **Monitoramento de execuções de trabalho** no painel de navegação da AWS Glue em **Trabalhos de ETL**.

## Visão geral do painel de monitoramento de trabalhos
<a name="monitoring-dashboard-overview"></a>

O painel de monitoramento de trabalhos fornece um resumo geral das execuções de trabalho, com totais para os trabalhos com um status **Running** (Executando), **Canceled** (Cancelado), **Success** (Bem-sucedido) ou **Failed** (Com falha). Os blocos adicionais fornecem a taxa geral de sucesso da execução do trabalho, o uso estimado de DPU para trabalhos, uma divisão das contagens de status de trabalhos por tipo de trabalho, tipo de operador e dia. 

Os gráficos nos blocos são interativos. Você pode escolher qualquer bloco em um gráfico para executar um filtro que exiba apenas esses trabalhos na tabela **Job runs** (Execuções do trabalho) na parte inferior da página.

Você pode alterar o intervalo de datas para as informações exibidas nessa página usando o seletor **Data range** (Intervalo de datas). Quando você altera o intervalo de datas, os blocos de informações são ajustados a fim de exibir os valores para o número especificado de dias antes da data atual. Você também pode usar um intervalo de datas específico se escolher **Custom** (Personalizado) no seletor de intervalo de datas. 

## Visualizar execuções do trabalho
<a name="monitoring-job-breakdown"></a>

**nota**  
 O histórico de execução de trabalhos pode ser acessado por 90 dias para seu fluxo de trabalho e execução de trabalhos. 

O recurso **Job runs** (Execuções do trabalho) exibe os trabalhos para o intervalo de datas e filtros especificados.

Você pode filtrar os trabalhos em critérios adicionais, como status, tipo de operador, tipo de trabalho e nome do trabalho. Na caixa de filtro na parte superior da tabela, você pode inserir o texto a ser usado como filtro. Os resultados da tabela são atualizados com linhas que contêm correspondências à medida que você digita o texto.

Você pode exibir um subconjunto dos trabalhos escolhendo elementos nos gráficos no painel de monitoramento de trabalho. Por exemplo, se você escolher o número de trabalhos em execução no bloco **Job runs summary** (Resumo de execuções do trabalho), a lista **Job runs** (Execuções do trabalho) exibe apenas os trabalhos que têm atualmente o status `Running`. Se você escolher uma das barras no gráfico de barras **Worker type breakdown** (Detalhamento do tipo de operador), somente as execuções de trabalho com o tipo de operador e status correspondentes serão mostrados na lista **Job runs** (Execuções do trabalho).

O recurso **Job runs** (Execuções do trabalho) exibe os detalhes das execuções do trabalho. É possível classificar as linhas na tabela escolhendo um cabeçalho de coluna. A tabela contém as seguintes informações:


| Propriedade | Descrição | 
| --- | --- | 
| Nome do trabalho | O nome do trabalho. | 
| Tipo |  O tipo de ambiente do trabalho: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/view-job-runs.html)  | 
| Hora de início |  A data e a hora em que a execução deste trabalho foi iniciada.  | 
| End time (Horário de término) |  A data e a hora em que a execução desse trabalho foi concluída.  | 
| Run status (Status da execução) |  O estado atual da execução do trabalho. Os valores podem ser: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/view-job-runs.html)  | 
| Run time (runtime) | A quantidade de tempo em que a execução de trabalho consumiu recursos. | 
| Capacidade |  O número de unidades de processamento de dados (DPUs) do AWS Glue alocadas para essa execução de trabalho. Para obter mais informações sobre planejamento de capacidade, consulte [Monitoramento de planejamento de capacidade de DPU](https://docs.aws.amazon.com/glue/latest/dg/monitor-debug-capacity.html) no *Guia do desenvolvedor do AWS Glue*.  | 
| Tipo de operador |  O tipo de operador predefinido que é alocado quando um trabalho é executado. Os valores podem ser `G.1X`, `G.2X`, `G.4X` ou `G.8X`.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/view-job-runs.html)  | 
| DPU hours (Horas de DPU) |  O número estimado de DPUs usadas para a execução de trabalho. Uma DPU é uma medida relativa do poder de processamento. As DPUs são usadas para determinar o custo da execução de trabalho. Para obter mais informações, consulte a [página de definição de preços do AWS Glue](https://aws.amazon.com/glue/pricing/).  | 

É possível escolher qualquer execução de trabalho na lista e visualizar informações adicionais. Escolha uma execução de trabalho e realize uma das seguintes ações:
+ Selecione o menu **Actions** (Ações) e a opção **View job** (Visualizar trabalho) para visualizar o trabalho no editor visual.
+ Selecione o menu **Actions** (Ações) e a opção **Stop run** (Interromper execução) para interromper a execução atual do trabalho.
+ Escolha o botão **View CloudWatch logs** (Visualizar logs do CloudWatch) para exibir os logs de execução do trabalho. 
+ Escolha **Visualizar detalhes** para visualizar a página de detalhes da execução do trabalho.

## Visualizar os logs de execuções de trabalho
<a name="monitoring-job-run-logs"></a>

Você pode visualizar os logs de trabalhos de várias maneiras:
+ Na página **Monitoring** (Monitoramento), na tabela **Job runs** (Execuções do trabalho), escolha uma execução de trabalho e selecione **View CloudWatch logs** (Visualizar logs do CloudWatch).
+ No editor visual de trabalhos, na guia **Runs** (Execuções) de um trabalho, escolha os hiperlinks para exibir os logs:
  + **Logs**: links para os logs de trabalho do Apache Spark gravados quando o registro em log contínuo é habilitado para uma execução de trabalho. Quando você escolhe esse link, ele leva você para os logs do Amazon CloudWatch no grupo de logs `/aws-glue/jobs/logs-v2`. Por padrão, os logs excluem a pulsação do Apache Hadoop YARN e as mensagens de log do driver ou do executor do Apache Spark desnecessárias. Para obter mais informações sobre registro em log contínuo, consulte [Registro em log contínuo para trabalhos do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html) no *Guia do desenvolvedor do AWS Glue*.
  + **Error logs** (Logs de erro): vinculam-se aos logs gravados em `stderr` para a execução de trabalho. Quando você escolhe esse link, ele leva você para os logs do Amazon CloudWatch no grupo de logs `/aws-glue/jobs/error`. Você pode usar esses logs para exibir detalhes sobre os erros que foram encontrados durante a execução de trabalho.
  + **Output logs** (Logs de saída): links para os logs gravados em `stdout` para a execução de trabalho. Quando você escolhe esse link, ele leva você para os logs do Amazon CloudWatch no grupo de logs `/aws-glue/jobs/output`. Você pode usar esses logs para ver todos os detalhes sobre as tabelas que foram criadas no AWS Glue Data Catalog e os erros que foram encontrados.

## Visualizar os detalhes de uma execução de trabalho
<a name="monitoring-job-run-details"></a>

Você pode escolher um trabalho na lista **Job runs** (Execuções do trabalho) na página **Monitoring** (Monitoramento) e, em seguida, escolher **View run details** (Visualizar detalhes da execução) para ver informações detalhadas sobre a execução de trabalho. 

As informações exibidas na página de detalhes da execução de trabalho incluem:


| Propriedade | Descrição | 
| --- | --- | 
| Nome do trabalho | O nome do trabalho. | 
| Run status (Status da execução) |  O estado atual da execução do trabalho. Os valores podem ser: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/view-job-runs.html)  | 
| Versão do Glue | A versão do AWS Glue usada pela execução de trabalho. | 
| Recent attempt (Tentativa recente) | O número de tentativas automáticas de repetição da execução deste trabalho. | 
| Hora de início |  A data e a hora em que a execução deste trabalho foi iniciada.  | 
| End time (Horário de término) |  A data e a hora em que a execução desse trabalho foi concluída.  | 
| Start-up time (Horário de início) |  A quantidade de tempo gasta preparando para executar o trabalho.  | 
| Tempo de execução |  A quantidade de tempo gasta executando o script do trabalho.  | 
| Nome do gatilho |  O nome do acionador associado ao trabalho.  | 
| Modificação mais recente |  A data em que o trabalho foi modificado pela última vez.  | 
| Configuração de segurança |  A configuração de segurança do trabalho, que inclui criptografia do Amazon S3, criptografia do CloudWatch e configurações de criptografia de marcadores de trabalho.  | 
| Tempo limite | O valor do tempo limite da execução de trabalho. | 
| Allocated capacity (Capacidade alocada) |  O número de unidades de processamento de dados (DPUs) do AWS Glue alocadas para essa execução de trabalho. Para obter mais informações sobre planejamento de capacidade, consulte [Monitoramento de planejamento de capacidade de DPU](https://docs.aws.amazon.com/glue/latest/dg/monitor-debug-capacity.html) no *Guia do desenvolvedor do AWS Glue*.  | 
| Max capacity (Capacidade máxima) |  A capacidade máxima disponível para a execução de trabalho.  | 
| Número de operadores | O número de operadores usados para a execução de trabalho.  | 
| Tipo de operador |  O tipo de operadores predefinidos alocados para a execução de trabalho. Os valores podem ser `G.1X` ou `G.2X`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/view-job-runs.html)  | 
| Logs | Um link para os logs de trabalho para registro em log contínuo (/aws-glue/jobs/logs-v2).  | 
| Output Logs (Logs de saída) | Um link para os arquivos de log de saída do trabalho (/aws-glue/jobs/output). | 
| Logs de erro | Um link para os arquivos de log de erros do trabalho (/aws-glue/jobs/error). | 

Você também pode visualizar os seguintes itens adicionais, os quais se tornam disponíveis ao visualizar informações sobre execuções de trabalhos recentes. Para obter mais informações, consulte [Exibir informações para execuções de trabalho recentes](managing-jobs-chapter.md#view-job-run-details).
+ **Argumentos de entrada**
+ **Logs contínuos**
+ **Métricas**: é possível ver visualizações de métricas básicas. Para obter ter mais informações sobre as métricas incluídas, consulte [Visualizar métricas do Amazon CloudWatch para uma execução de trabalho do Spark](#monitoring-job-run-metrics).
+ **Interface do usuário do Spark**: é possível visualizar os logs do Spark do seu trabalho na interface do usuário do Spark. Para obter mais informações sobre o uso da interface do usuário Web do spark , consulte o [Monitorar trabalhos usando a interface do usuário da Web do Apache Spark](monitor-spark-ui.md). Habilite esse recurso seguindo o procedimento em [Habilitar a interface do usuário da Web do Apache Spark para trabalhos do AWS Glue](monitor-spark-ui-jobs.md).

## Visualizar métricas do Amazon CloudWatch para uma execução de trabalho do Spark
<a name="monitoring-job-run-metrics"></a>

Na página de detalhes de uma execução de trabalho, abaixo da seção **Run details** (Detalhes da execução), você pode visualizar as métricas do trabalho. O AWS Glue Studio envia métricas de trabalho para o Amazon CloudWatch para cada trabalho executado. 

O AWS Glue relata as métricas ao Amazon CloudWatch a cada 30 segundos. As métricas do AWS Glue representam valores do delta a partir dos valores relatados anteriormente. Quando apropriado, os painéis de métricas agregam (somam) os valores de 30 segundos para obter um valor para o último minuto inteiro. No entanto, as métricas do Apache Spark que o AWS Glue transfere para o Amazon CloudWatch são geralmente valores absolutos que representam o estado atual no momento em que são relatadas. 

**nota**  
Você deve configurar sua conta para acessar o Amazon CloudWatch.

As métricas fornecem informações sobre a execução de trabalho, como:
+ **ETL Data Movement** (Movimentação de dados de ETL): o número de bytes lidos ou gravados no Amazon S3.
+ **Memory Profile: Heap used** (Perfil de memória: heap usado): o número de bytes de memória usados pelo heap da máquina virtual Java (JVM).
+ **Memory Profile: heap usage** (Perfil de memória: uso do heap): a fração da memória (escala: 0 a 1) usada pelo heap da JVM.
+ **CPU Load** (Carga da CPU): a fração da carga do sistema da CPU usada (escala: 0 a 1), exibida em porcentagem.

## Visualizar métricas do Amazon CloudWatch para uma execução de trabalho do Ray
<a name="monitoring-job-run-metrics-ray"></a>

Na página de detalhes de uma execução de trabalho, abaixo da seção **Run details** (Detalhes da execução), você pode visualizar as métricas do trabalho. O AWS Glue Studio envia métricas de trabalho para o Amazon CloudWatch para cada trabalho executado. 

O AWS Glue relata as métricas ao Amazon CloudWatch a cada 30 segundos. As métricas do AWS Glue representam valores do delta a partir dos valores relatados anteriormente. Quando apropriado, os painéis de métricas agregam (somam) os valores de 30 segundos para obter um valor para o último minuto inteiro. No entanto, as métricas do Apache Spark que o AWS Glue transfere para o Amazon CloudWatch são geralmente valores absolutos que representam o estado atual no momento em que são relatadas. 

**nota**  
Você deve configurar sua conta para acessar o Amazon CloudWatch, conforme descrito em .

Nas trabalhos do Ray, você pode visualizar os seguintes gráficos de métrica agregados. Com elas, você pode criar um perfil do cluster e das tarefas, e pode acessar informações detalhadas sobre cada nó. Os dados de séries temporais que sustentam esses gráficos estão disponíveis no CloudWatch para análise posterior.

**Perfil da tarefa: estado da tarefa**  
Mostra o número de tarefas do Ray no sistema. Cada ciclo de vida da tarefa tem sua própria série temporal.

**Perfil da tarefa: Nome da tarefa**  
Mostra o número de tarefas do Ray no sistema. Somente tarefas pendentes e ativas são mostradas. Cada tipo de tarefa (por nome) recebe sua própria série temporal.

**Perfil de cluster: CPUs em uso**  
Mostra o número de núcleos de CPU usados. Cada nó recebe sua própria série temporal. Os nós são identificados por endereços IP, que são efêmeros e usados apenas para identificação.

**Perfil do cluster: uso da memória de armazenamento de objetos**  
Mostra o uso de memória pelo cache de objetos do Ray. Cada localização da memória (memória física, armazenada em cache no disco e distribuída no Amazon S3) tem sua própria série temporal. O armazenamento de objetos gerencia o armazenamento de dados em todos os nós do cluster. Para obter mais informações, consulte [Objects](https://docs.ray.io/en/latest/ray-core/objects.html) na documentação do Ray.

**Perfil do cluster: número de nós**  
Mostra o número de nós provisionados para o cluster.

**Detalhe do nó: uso da CPU**  
Mostra a utilização da CPU em cada nó como uma porcentagem. Cada série mostra uma porcentagem agregada do uso da CPU em todos os núcleos do nó.

**Detalhe do nó: uso de memória**  
Mostra o uso da memória em cada nó em GB. Cada série mostra a memória agregada entre todos os processos no nó, incluindo tarefas do Ray e o processo de armazenamento do Plasma. Isso não refletirá objetos armazenados em disco ou derramados no Amazon S3.

**Detalhe do nó: uso de disco**  
Mostra o uso de disco em cada nó em GB.

**Detalhe do nó: velocidade de E/S do disco**  
Mostra a E/S de disco em cada nó em KB/s.

**Detalhe do nó: throughput de E/S da rede**  
Mostra a E/S de rede em cada nó em KB/s.

**Detalhe do nó: uso da CPU pelo componente do Ray**  
Mostra o uso da CPU em frações de um núcleo. Cada componente do Ray em cada nó recebe sua própria série temporal.

**Detalhe do nó: uso da memória pelo componente do Ray**  
Mostra o uso da memória em GiB. Cada componente do Ray em cada nó recebe sua própria série temporal.

# Detectar e processar dados sigilosos
<a name="detect-PII"></a>

 A transformação Detect PII identifica informações de identificação pessoal (PII) em sua origem dos dados. Você escolhe a entidade de PII para identificar, como deseja que os dados sejam verificados e o que fazer com a entidade de PII identificada pela transformação Detect PII. 

 A transformação Detect PII permite detectar, mascarar ou remover entidades que você define ou que são predefinidas pela AWS. Isso permite aumentar a conformidade e reduzir a responsabilidade. Por exemplo, talvez você queira garantir a exclusão de informações de identificação pessoal passíveis de leitura em seus dados e deseje mascarar números de previdência social com uma string fixa (por exemplo, xxx-xx-xxxx), números de telefone ou endereços. 

 Para trabalhar com dados confidenciais fora do AWS Glue Studio, consulte [Usar detecção de dados confidenciais fora do AWS Glue Studio](aws-glue-api-sensitive-data-example.md) 

**Topics**
+ [Como escolher a forma como os dados serão lidos](#choose-datascan-pii)
+ [Escolha das entidades de PII para detecção](#choose-pii-entities)
+ [Especificar o nível da sensibilidade de detecção](#sensitive-data-sensitivity)
+ [Como escolher o que fazer com dados de PII identificados](#choose-action-pii)
+ [Adicionar substituições de ações refinadas](#sensitive-data-fine-grained-actions-override)

## Como escolher a forma como os dados serão lidos
<a name="choose-datascan-pii"></a>

 Ao examinar seu conjunto de dados em busca de dados confidenciais, como informações de identificação pessoal (PII), é possível optar por detectar PII em cada linha ou detectar as colunas que contêm dados de PII. 

![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/detect-fields-PII.png)


 Ao escolher a opção **Detect PII in each cell** (Detectar PII em cada célula), você está escolhendo verificar todas as linhas na origem dos dados. Esta é uma leitura abrangente para garantir que as entidades de PII sejam identificadas. 

 Ao escolher a opção **Detect fields containing PII** (Detectar campos contendo PII), você está optando por ler uma amostra de linhas para entidades de PII. Essa é uma maneira de manter os custos e os recursos baixos e, ao mesmo tempo, identificar os campos em que as entidades de PII são encontradas. 

 Ao optar por detectar campos que contêm PII, você pode reduzir custos e melhorar a performance por meio da amostragem de uma parte das linhas. Escolher essa opção permitirá que você especifique opções adicionais: 
+  **Sample portion** (Porção da amostra): permite especificar a porcentagem de linhas que serão amostradas. Por exemplo, ao inserir "50", estará especificando que deseja 50% das linhas lidas para a entidade PII. 
+  **Detection threshold** (Limite de detecção): permite que você especifique a porcentagem de linhas que contêm a entidade PII para que toda a coluna seja identificada como tendo a entidade PII. Por exemplo, ao digitar "10", você estará especificando que o número da entidade de PII, US Phone, nas linhas lidas deve ser 10% ou maior para que o campo seja identificado como tendo a entidade de PII US Phone. Se a porcentagem de linhas que contêm a entidade de PII for inferior a 10%, esse campo não será rotulado como tendo a entidade PII US Phone nele. 

## Escolha das entidades de PII para detecção
<a name="choose-pii-entities"></a>

 Se optou por **Detect PII in each cell** (Detectar PII em cada célula), escolha entre uma de três opções: 
+ Todos os padrões de PII disponíveis: isso inclui entidades da AWS.
+ Selecionar categorias: quando você selecionar categorias, os padrões de PII incluirão automaticamente os padrões nas categorias selecionadas.
+ Selecionar padrões específicos: somente os padrões selecionados serão detectados.

 Para obter uma lista dos tipos de dados confidenciais gerenciados, consulte [Tipos de dados gerenciados](https://docs.aws.amazon.com/glue/latest/dg/sensitive-data-managed-data-types.html). 

### Escolher entre todos os padrões de PII disponíveis
<a name="w2aac33c23c21c11"></a>

 Se você escolher **All available PII patterns** (Todos os padrões de PII disponíveis), selecione entidades predefinidas pela AWS. É possível selecionar uma, mais de uma ou todas as entidades. 

![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/pii-select-entities-to-detect.png)


### Selecionar categorias
<a name="w2aac33c23c21c15"></a>

 Se escolheu **Select categories** (Selecionar categorias) como os padrões de PII a serem detectados, selecione entre as opções no menu suspenso. Observe que algumas entidades podem pertencer a mais de uma categoria. Por exemplo, *Person's name* (Nome do indivíduo) é uma entidade que pertence às categorias *Universal* e *HIPAA*. 
+  Universal (exemplos: e-mail, cartão de crédito) 
+  HIPAA (exemplos: carteira de habilitação dos EUA, código do Healthcare Common Procedure Coding System [HCPCS – Sistema de Codificação de Procedimentos Comuns de Saúde]) 
+  Redes (exemplos: endereço IP, endereço MAC) 
+ Argentina
+ Austrália
+ Áustria
+ Bélgica
+ Bósnia
+ Bulgária
+ Canadá
+ Chile
+ Colômbia
+ Croácia
+ Chipre
+ Tchéquia
+ Dinamarca
+ Estônia
+ Finlândia
+ França
+ Alemanha
+ Grécia
+ Hungria
+ Irlanda
+ Coreia
+ Japão
+ México
+ Holanda
+ Nova Zelândia
+ Noruega
+ Portugal
+ Romênia
+ Cingapura
+ Eslováquia
+ Eslovênia
+ Espanha
+ Suécia
+ Suíça
+ Turquia
+ Ucrânia
+ Estados Unidos
+ Reino Unido
+ Venezuela

### Selecionar padrões específicos
<a name="w2aac33c23c21c19"></a>

 Se escolher **Select specific patterns** (Selecionar padrões específicos) como os padrões de PII a serem detectados, você pode pesquisar ou navegar em uma lista de padrões que já criou, ou criar um novo padrão de entidade de detecção. 

 As etapas abaixo descrevem como criar um novo padrão personalizado para detectar dados sigilosos. Você criará o padrão personalizado inserindo um nome para o padrão personalizado, adicionará uma expressão regular e, opcionalmente, definirá palavras de contexto. 

 

 

1.  Para criar um novo padrão, clique no botão **Create new** (Criar novo)   
![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/detectpii-create-new.png)

1.  Na página Create detection entity (Criar entidade de detecção), insira o nome da entidade e uma expressão regular. A expressão regular (Regex) é o que o AWS Glue usará para fazer a correspondência de entidades. 

1.  Clique em **Validate** (Validar). Se a validação for bem-sucedida, você verá uma mensagem de confirmação informando que a string é uma expressão regular válida. Se a validação não for bem-sucedida, você verá uma mensagem informando que a string não está em conformidade com a formatação adequada e com os caracteres, operadores ou construções aceitos. 

1.  Você pode optar por adicionar palavras de contexto além da expressão regular. Palavras de contexto podem aumentar a probabilidade de uma correspondência. Elas podem ser úteis em casos nos quais os nomes de campo não descrevem a entidade. Por exemplo, os números da previdência social dos EUA podem ser nomeados “SSN” ou “SS”. A adição dessas palavras de contexto pode ajudar na correspondência da entidade. 

1.  Clique em **Create** (Criar) para criar a entidade de detecção. Qualquer entidade criada fica visível no console do AWS Glue Studio. Clique em **Detection entities** (Entidades de detecção) no menu de navegação à esquerda. 

    Você pode editar, excluir ou criar entidades de detecção na página **Detection entities** (Entidades de detecção). Você também pode pesquisar por um padrão usando o campo de pesquisa. 

## Especificar o nível da sensibilidade de detecção
<a name="sensitive-data-sensitivity"></a>

 É possível definir o nível de sensibilidade ao usar a detecção de dados confidenciais. 
+  **Alto** (padrão): detecta mais entidades para casos de uso que exigem um nível mais alto de sensibilidade. Todos os trabalhos do AWS Glue criados após novembro de 2023 são habilitados automaticamente com essa configuração. 
+  **Baixo**: detecta menos entidades e reduz os falsos positivos. 

![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/detect-sensitve-data-sensitvity-new.png)


## Como escolher o que fazer com dados de PII identificados
<a name="choose-action-pii"></a>

 Se você optar por detectar PII em toda a fonte de dados, poderá selecionar uma ação global para aplicar: 
+  **Enrich data with detection results** (Enriquecer dados com resultados da detecção): se você escolher Detect PII em cada célula, poderá armazenar as entidades detectadas em uma nova coluna. 
+  **Redact detected text** (Editar o texto detectado): é possível substituir o valor de PII detectado por uma string especificada no campo opcional de entrada de texto Replacing text (Substituindo texto). Se nenhuma string for especificada, a entidade de PII detectada será substituída por "\$1\$1\$1\$1\$1\$1\$1". 
+  **Editar o texto detectado**: é possível substituir parte das PII detectadas por uma string especificada por você. Há duas opções possíveis: deixar as extremidades desmascaradas ou mascarar fornecendo um padrão de regex explícito. Este recurso ainda não está disponível no AWS Glue 2.0. 
+  **Aplicar hash criptográfico**: você pode passar o valor de PII detectado para uma função de hash criptográfico SHA-256 e substituir o valor pela saída da função. 

![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/detect-sensitive-data-global-action.png)


### Diferenças entre o AWS Glue versões 2.0 e 3.0\$1
<a name="sensitive-data-detection-glue-versions"></a>

 Os trabalhos do AWS Glue 2.0 retornarão um novo DataFrame com as informações de PII detectadas para cada coluna em uma coluna suplementar. Qualquer redação ou trabalho de hash é visível no script AWS Glue na guia visual. 

 Os trabalhos do AWS Glue 3.0 e 4.0 retornarão um novo DataFrame com essa mesma coluna suplementar. Uma nova chave para "actionUsed" está presente e pode ser uma de `DETECT`, `REDACT`, `PARTIAL_REDACT` ou `SHA256_HASH`. Se uma ação de mascaramento for selecionada, o DataFrame retornará dados com dados confidenciais mascarados. 

## Adicionar substituições de ações refinadas
<a name="sensitive-data-fine-grained-actions-override"></a>

 Configurações adicionais de detecção e ação podem ser adicionadas à tabela de substituições de ações refinadas. Isso permite a você: 
+  **Incluir ou excluir determinadas colunas da detecção**: um esquema inferido na fonte de dados preencherá a tabela com as colunas disponíveis. 
+  **Especificar configurações específicas que sejam mais refinadas do que usar ações globais**: por exemplo, você pode especificar diferentes configurações de redação de texto para diferentes tipos de entidade. 
+  **Especificar uma ação diferente da ação global**: se uma ação diferente precisar ser aplicada em um tipo de dados confidenciais diferente, isso pode ser feito aqui. Observe que duas ações diferentes de edição no local (redação e hash) não podem ser usadas na mesma coluna, mas a detecção sempre pode ser usada. 

![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/detect-sensitive-data-fga-overrides.png)


# Gerenciar trabalhos de ETL com o AWS Glue Studio
<a name="managing-jobs-chapter"></a>

Você pode usar a interface gráfica simples no AWS Glue Studio para gerenciar seus trabalhos de ETL. Usando o menu de navegação, escolhar **Jobs** (Trabalhos) para visualizar a página **Jobs** (Trabalhos). Nessa página, você pode ver todos os trabalhos que criou com o AWS Glue Studio ou com o console do AWS Glue. Você pode exibir, gerenciar e executar seus trabalhos nessa página. 

**Topics**
+ [Iniciar uma execução de trabalho](#start-jobs)
+ [Programar execuções de trabalho](#schedule-jobs)
+ [Gerenciar programações de trabalho](#manage-schedules)
+ [Interromper execuções de trabalho](#stop-jobs)
+ [Visualizar os trabalhos](#view-jobs)
+ [Exibir informações para execuções de trabalho recentes](#view-job-run-details)
+ [Visualizar o script de trabalho](#view-job-script)
+ [Modificar as propriedades do trabalho](#edit-jobs-properties)
+ [Salvar o trabalho](#save-job)
+ [Clonar um trabalho](#clone-jobs)
+ [Excluir trabalhos](#delete-jobs)

## Iniciar uma execução de trabalho
<a name="start-jobs"></a>

No AWS Glue Studio, você pode executar seus trabalhos sob demanda. Um trabalho pode ser executado várias vezes, e cada vez que você o executa, o AWS Glue coleta informações sobre as atividades e a performance do trabalho. Essa informação é referida como uma *execução de trabalho* e é identificada por um ID de execução de trabalho.

Você pode iniciar uma execução de trabalho no AWS Glue Studio das seguintes formas:
+ Na página **Jobs** (Trabalhos), escolha o trabalho que você deseja iniciar e, em seguida, escolha o botão **Run job** (Executar trabalho).
+ Se você estiver visualizando um trabalho no editor visual e ele estiver salvo, você pode escolher o botão **Run** (Executar) para iniciar uma execução de trabalho.

Para obter mais informações sobre execuções de trabalhos, consulte [Trabalhar com trabalhos no console do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-jobs.html) no *Guia do desenvolvedor do AWS Glue*.

## Programar execuções de trabalho
<a name="schedule-jobs"></a>

No AWS Glue Studio, você pode criar uma programação para que seus trabalhos sejam executados em horários específicos. Você pode especificar restrições, como a quantidade de vezes que os trabalhos são executados. Essas restrições são feitas com base no `cron` e têm as mesmas limitações que o `cron`. Por exemplo, se você optar por executar seu trabalho no dia 31 de cada mês, lembre-se de que alguns meses não têm 31 dias. Para obter mais informações sobre o `cron`, consulte [Expressões do Cron](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions) no *Guia do desenvolvedor do AWS Glue*. 

**Para executar trabalhos de acordo com uma programação**

1. Crie uma programação de trabalho usando um dos seguintes métodos:
   + Na página **Jobs** (Trabalhos), escolha o trabalho para o qual você deseja criar uma programação, escolha **Actions** (Ações) e depois **Schedule job** (Programar trabalho).
   + Se você estiver visualizando um trabalho no editor visual e ele estiver salvo, escolha a guia **Schedules** (Programações). Em seguida, escolha **Create Schedule** (Criar programação).

1. Na página **Schedule job run** (Programar execução de trabalho), insira as seguintes informações:
   + **Name** (Nome): insira um nome para a programação do trabalho. 
   + **Frequency** (Frequência): insira a frequência da programação do trabalho. Você pode escolher uma das seguintes opções: 
     + **Hourly** (Por hora): o trabalho será executado a cada hora, começando em um minuto específico. Você pode especificar o **Minute** (Minuto) da hora em que o trabalho deve ser executado. Por padrão, quando você escolhe por hora, o trabalho é executado no início da hora (minuto 0).
     + **Daily** (Diariamente): o trabalho será executado todos os dias, iniciando em um determinado momento. Você pode especificar o **Minute** (Minuto) da hora em que o trabalho deve ser executado e a **Start hour** (Hora de início) do trabalho. As horas são especificadas usando um relógio de 23 horas, em que você usa os números 13 a 23 para as horas após meio-dia. O valor padrão para minuto e hora é zero, o que significa que se você selecionar **Daily** (Diariamente), por padrão, o trabalho será executado à meia-noite.
     + **Weekly** (Semanal): o trabalho será executado todas as semanas em um ou mais dias. Além das mesmas configurações descritas anteriormente para Daily (Diariamente), você pode escolher os dias da semana em que o trabalho será executado. Você pode escolher um ou mais dias.
     + **Monthly** (Mensalmente): o trabalho será executado todos os meses em um dia específico. Além das mesmas configurações descritas anteriormente para Daily (Diariamente), você pode escolher o dia do mês em que o trabalho será executado. Especifique o dia como um valor numérico de 1 a 31. Se você selecionar um dia que não existe em um mês, por exemplo, o 30º dia de fevereiro, então o trabalho não será executado nesse mês.
     + **Custom** (Personalizado): insira uma expressão para sua programação de trabalho usando a sintaxe do `cron`. As expressões do Cron permitem que você crie programações mais complicadas, como o último dia do mês (em vez de um dia específico do mês) ou a cada terceiro mês no 7º e 21º dias do mês. 

       Consulte [Expressões do Cron](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions) no *Guia do desenvolvedor do AWS Glue*
   + **Description** (Descrição): como opção, você pode inserir uma descrição para a programação do trabalho. Se você planeja usar a mesma programação para vários trabalhos, uma descrição facilita determinar o que a programação do trabalho faz.

1. Escolha **Create schedule** (Criar programação) para salvar a programação de trabalho.

1. Depois de criar a programação, uma mensagem de êxito é exibida na parte superior da página do console. Você pode escolher **Job details** (Detalhes do trabalho) nesse banner, para exibir os detalhes do trabalho. Isso abre a página do editor de trabalhos visual, com a guia **Schedules** (Programações) selecionada.

## Gerenciar programações de trabalho
<a name="manage-schedules"></a>

Depois de criar programações para um trabalho, você pode abri-lo no editor visual e escolher a guia **Schedules** (Programações) para gerenciar as programações.

Na guia **Schedules** (Programações) do editor visual, você pode executar as seguintes tarefas:
+ Criar uma nova programação.

  Escolha **Create schedule** (Criar programação) e insira as informações da programação, conforme descrito em [Programar execuções de trabalho](#schedule-jobs).
+ Editar uma programação existente.

  Escolha a programação que você deseja editar e selecione **Action** (Ação) e, em seguida, **Edit schedule** (Editar programação). Quando você opta por editar uma programação existente, **Frequency** (Frequência) exibe **Custom** (Personalizada) e a programação é exibida como uma expressão do `cron`. Você também pode modificar a expressão do `cron` ou especificar uma nova programação usando o botão **Frequency** (Frequência). Ao concluir as alterações, escolha **Update schedule** (Atualizar programação).
+ Pausar uma programação ativa.

  Escolha uma programação ativa, selecione **Action** (Ação) e, em seguida, **Pause schedule** (Pausar programação). A programação é desativada instantaneamente. Escolha o botão refresh (reload) [atualizar (recarregar)] para ver o status da programação de trabalho atualizada.
+ Retomar uma programação pausada.

  Escolha uma programação desativada, selecione **Action** (Ação) e, em seguida, **resume schedule** (Retomar programação). A programação é ativada instantaneamente. Escolha o botão refresh (reload) [atualizar (recarregar)] para ver o status da programação de trabalho atualizada.
+ Excluir uma programação.

  Escolha a programação que você deseja remover, selecione **Action** (Ação) e, em seguida, **Delete schedule** (Excluir programação). A programação é excluída instantaneamente. Escolha o botão refresh (reload) [atualizar (recarregar)] para ver a lista de programações de trabalho atualizada. A programação terá o status **Deleting** (Excluíndo) até que tenha sido completamente removida.

## Interromper execuções de trabalho
<a name="stop-jobs"></a>

Você pode interromper um trabalho antes que ele tenha concluído sua execução. Você pode escolher essa opção se souber que o trabalho não está configurado corretamente ou se ele está demorando muito para ser concluído.

Na página **Monitoring** (Monitoramento), na lista **Job runs** (Execuções de trabalho), selecione o trabalho que deseja interromper, escolha **Actions** (Ações) e **Stop run** (Interromper execução). 

## Visualizar os trabalhos
<a name="view-jobs"></a>

Você pode visualizar todos os trabalhos na página **Jobs** (Trabalhos). Você pode acessar essa página escolhendo **Jobs** (Trabalhos) no painel de navegação.

Na página **Jobs** (Trabalhos), você poderá ver todos os trabalhos criados na sua conta. A list **Your jobs** (Seus trabalhos) mostra o nome do trabalho, o tipo, o status da última execução desse trabalho e as datas em que ele foi criado e modificado pela última vez. Você pode escolher o nome de um trabalho para ver informações detalhadas sobre ele.

Você também pode usar o painel Monitoring (Monitoramento) para exibir todos os trabalhos. Você pode acessar o painel escolhendo **Monitoring** (Monitoramento) no painel de navegação. 

### Personalizar a exibição do trabalho
<a name="view-jobs-customize"></a>

Você pode personalizar como os trabalhos são exibidos na seção **Your jobs** (Seus trabalhos) da página **Jobs** (Trabalhos). Além disso, você pode inserir um texto no campo de pesquisa de texto para exibir somente trabalhos com um nome que contenha esse texto.

Se você escolher o ícone de configurações ![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/manage-console-icon-settings.png) na seção **Your jobs** (Seus trabalhos), poderá personalizar como AWS Glue Studio exibe as informações na tabela. Você pode optar por quebrar as linhas de texto na exibição, alterar o número de trabalhos exibidos na página e especificar quais colunas serão exibidas.

## Exibir informações para execuções de trabalho recentes
<a name="view-job-run-details"></a>

Um trabalho pode ser executado várias vezes à medida que novos dados são adicionados no local de origem. Cada vez que um trabalho é executado, um ID exclusivo é atribuído à execução do trabalho e as informações sobre essa execução são coletadas. É possível exibir essas informações usando os métodos a seguir:
+ Escolha a guia **Runs** (Execuções) do editor visual para exibir as informações de execução do trabalho exibido no momento.

  Na guia **Runs** (Execuções), página **Recent job runs** (Execuções de trabalho recentes), há um cartão para cada execução de trabalho. As informações exibidas na guia **Runs** (Execuções) incluem:
  + ID de execução de trabalho
  + Número de tentativas para execução desse trabalho
  + Status da execução do trabalho
  + Horário de início e de término da execução do trabalho
  + O runtime do trabalho
  + Um link para os arquivos de log do trabalho
  + Um link para os arquivos de log de erros do trabalho
  + O erro retornado para trabalhos com falha
+ É possível selecionar uma execução de trabalho para ver informações adicionais sobre o trabalho, incluindo:
  + **Argumentos de entrada**
  + **Logs contínuos**
  + **Métricas**: é possível ver visualizações de métricas básicas. Para obter ter mais informações sobre as métricas incluídas, consulte [Visualizar métricas do Amazon CloudWatch para uma execução de trabalho do Spark](view-job-runs.md#monitoring-job-run-metrics).
  + **Interface do usuário do Spark**: é possível visualizar os logs do Spark do seu trabalho na interface do usuário do Spark. Para obter mais informações sobre o uso da interface do usuário Web do spark , consulte o [Monitorar trabalhos usando a interface do usuário da Web do Apache Spark](monitor-spark-ui.md). Habilite esse recurso seguindo o procedimento em [Habilitar a interface do usuário da Web do Apache Spark para trabalhos do AWS Glue](monitor-spark-ui-jobs.md).

Você pode selecionar **Visualizar detalhes** para ver informações semelhantes na página de detalhes da execução do trabalho. Como alternativa, você pode navegar até a página de detalhes da execução do trabalho por meio da página **Monitoramento**. No painel de navegação, escolha **Monitoring (Monitoramento)**. Role para baixo até a lista **Job runs** (Execuções do trabalho). Escolha o trabalho e, em seguida, escolha **View run details** (Visualizar os detalhes da execução). O conteúdo está descrito em [Visualizar os detalhes de uma execução de trabalho](view-job-runs.md#monitoring-job-run-details).

Para obter mais informações sobre os logs de trabalhos, consulte [Visualizar os logs de execuções de trabalho](view-job-runs.md#monitoring-job-run-logs).

## Visualizar o script de trabalho
<a name="view-job-script"></a>

Depois de fornecer informações para todos os nós no trabalho, o AWS Glue Studio gera um script que é usado pelo trabalho para ler os dados da origem, transformá-los e gravá-los no local de destino. Se você salvar o trabalho, poderá exibir esse script a qualquer momento.

**Para exibir o script gerado para seu trabalho**

1. No painel de navegação, escolha **Jobs** (Trabalhos).

1. Na página **Jobs** (Trabalhos), na lista **Your jobs** (Seus trabalhos), escolha o nome do trabalho que você deseja revisar. Como alternativa, você pode selecionar um trabalho na lista, escolher o menu **Actions** (Ações) e, em seguida, escolher **Edit job** (Editar trabalho).

1. Na página do editor visual, escolha a guia **Script** na parte superior para exibir o script de trabalho. 

   Se quiser editar o script de trabalho, consulte [Guia de programação do AWS Glue](edit-script.md).

## Modificar as propriedades do trabalho
<a name="edit-jobs-properties"></a>

Os nós no diagrama de trabalho definem as ações executadas pelo trabalho, mas há várias propriedades que você também pode configurar para o trabalho. Essas propriedades determinam o ambiente em que o trabalho é executado, os recursos que ele usa, as configurações de limite, as configurações de segurança e muito mais.

**Para personalizar o ambiente de execução do trabalho**

1. No painel de navegação, escolha **Jobs** (Trabalhos).

1. Na página **Jobs** (Trabalhos), na lista **Your jobs** (Seus trabalhos), escolha o nome do trabalho que você deseja revisar.

1. Na página do editor visual, escolha a guia **Job details** Detalhes do trabalho) na parte superior do painel de edição do trabalho. 

1. Modifique as propriedades do trabalho, conforme necessário. 

   Para obter mais informações sobre as propriedades do trabalho, consulte [Definir propriedades do trabalho](https://docs.aws.amazon.com/glue/latest/dg/add-job.html#create-job) no *Guia do desenvolvedor do AWS Glue*. 

1. Expanda a seção **Advanced properties** (Propriedades avançadas), se você precisar especificar essas propriedades de trabalho adicionais:
   + **Script filename** (Nome de arquivo do script): o nome do arquivo que armazena o script do trabalho no Amazon S3.
   + **Script path** (Caminho do script): o local do Amazon S3 em que o script do trabalho é armazenado.
   + **Job metrics** (Métricas de trabalho): (indisponível para trabalhos de shell do Python) ativa a criação de métricas do Amazon CloudWatch quando esse trabalho é executado.
   + **Continuos logging** (Registro em log contínuo): (indisponível para trabalhos de shell do Python) ativa o registro em log contínuo no CloudWatch, para que os logs estejam disponíveis para visualização antes que o trabalho seja concluído.
   + **Spark UI** (IU do Spark) e **Spark UI logs path** (Caminho de logs da IU do Spark): (indisponível para trabalhos de shell do Python) ativa o uso da interface do usuário do Spark para monitorar o trabalho e especifica o local para os logs da interface do usuário do Spark.
   + **Maximum concurrency** (Simultaneidade máxima): define o número máximo de execuções simultâneas permitidas para o trabalho.
   + **Temporary path** (Caminho temporário): o local de um diretório de trabalho no Amazon S3 onde os resultados intermediários temporários serão gravados quando o AWS Glue executar o script. 
   + **Delay notification threshold (minutes)** (Limite de notificação de atraso [minutos]): especifica um limite de atraso para o trabalho. Se o trabalho for executado por mais tempo do que o especificado pelo limite, o AWS Glue envia uma notificação de atraso para o trabalho ao CloudWatch.
   + **Security configuration** (Configuração de segurança) e **Server-side encryption** (Criptografia do lado do servidor): use esses campos para escolher as opções de criptografia do trabalho.
   + **Use Glue Data Catalog as the Hive metastore** (Usar o Glue Data Catalog como metastore do Hive): escolha essa opção se quiser usar o AWS Glue Data Catalog como uma alternativa ao Apache Hive Metastore.
   + **Additional network connection**(Conexão de rede adicional): para uma origem dos dados em uma VPC, você pode especificar uma conexão do tipo `Network` a fim de garantir que seu trabalho acesse seus dados por meio da VPC.
   + **Python library path** (Caminho da biblioteca do Python), **Dependent jars path** (Caminho de arquivos jar dependentes, não disponível para trabalhos de shell do Python) ou **Referenced files path** (Caminho de arquivos referenciados): use esses campos para especificar o local dos arquivos adicionais usados pelo trabalho quando ele executa o script.
   + **Job Parameters** (Parâmetros do trabalho): você pode adicionar um conjunto de pares de chave-valor que são transmitidos ​​como parâmetros nomeados para o script. Nas chamadas do Python para AWS Glue APIs, é melhor transmitir os parâmetros explicitamente por nome. Para obter mais informações sobre como usar parâmetros em um script de trabalho, consulte [Transmitir e acessar parâmetros do Python no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html#aws-glue-programming-python-calling-parameters) no *Guia do desenvolvedor do AWS Glue*. 
   + **Tags**: você pode adicionar tags ao trabalho para ajudar a organizá-las e identificá-las.

1. Depois de modificar as propriedades do trabalho, salve-o.

### Armazenar arquivos de ordem aleatória do Spark no Amazon S3
<a name="configure-shuffle"></a>

Alguns trabalhos de ETL exigem leitura e combinação de informações de várias partições, por exemplo, ao usar uma transformação de união. Essa operação é referida como *shuffling* (ordenamento aleatório). Durante uma geração de ordem aleatória, os dados são gravados no disco e transferidos pela rede. Com o AWS Glue versão 3.0, você pode configurar o Amazon S3 como um local de armazenamento para esses arquivos. O AWS Glue fornece um gerenciador de ordenamento aleatório que grava e lê arquivos aleatórios de e para o Amazon S3. Gravar e ler arquivos de ordem aleatória do Amazon S3 é mais lento (de 5% a 20%) em comparação com o disco local (ou o Amazon EBS, que é altamente otimizado para o Amazon EC2). No entanto, o Amazon S3 fornece capacidade de armazenamento ilimitada, assim você não precisa se preocupar com erros de “`No space left on device`” ao executar seu trabalho.

**Para configurar seu trabalho a fim de usar o Amazon S3 para arquivos de ordem aleatória**

1. Na página **Jobs** (Trabalhos), na lista **Your jobs** (Seus trabalhos), escolha o nome do trabalho que você deseja modificar.

1. Na página do editor visual, escolha a guia **Job details** Detalhes do trabalho) na parte superior do painel de edição do trabalho. 

   Role para baixo até a seção **Job parameters** (Parâmetros do trabalho).

1. Especifique os seguintes pares de chave-valor.
   + `--write-shuffle-files-to-s3` — `true`

     Esse é o parâmetro principal que configura o gerenciador de ordenamento aleatório no AWS Glue a fim de usar buckets do Amazon S3 para gravar e ler dados de ordem aleatória. Pr padrão, esse parâmetro tem um valor `false`.
   + (Opcional) `--write-shuffle-spills-to-s3`: `true`

     Esse parâmetro permite que você descarregue arquivos de despejo em buckets do Amazon S3, o que fornece resiliência adicional ao seu trabalho do Spark no AWS Glue. Isso só é necessário para grandes workloads que despejam muitos dados no disco. Pr padrão, esse parâmetro tem um valor `false`.
   + (Opcional) `--conf spark.shuffle.glue.s3ShuffleBucket`: `S3://<shuffle-bucket>`

     Esse parâmetro especifica o bucket do Amazon S3 que deve ser usado ao gravar os arquivos de ordem aleatória. Se você não definir esse parâmetro, o local será a pasta `shuffle-data` no local especificado como **caminho temporário** (`--TempDir`).
**nota**  
Certifique-se de que o local do bucket de ordem aleatória está na mesma região da Região da AWS na qual o trabalho é executado.   
Além disso, o serviço de ordenamento aleatório não limpa os arquivos após a conclusão da execução do trabalho, portanto, você deve configurar as políticas de ciclo de vida de armazenamento do Amazon S3 no local do bucket de ordem aleatória. Para obter mais informações, consulte [Gerenciar ciclo de vida de armazenamento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) no *Manual do usuário do Amazon S3*.

## Salvar o trabalho
<a name="save-job"></a>

Um aviso em vermelho informando **Job has not being saved** (O trabalho não foi salvo) é exibido à esquerda do botão **Save** (Salvar) até que você salve o trabalho. 

![\[Uma forma oval vermelha com o rótulo “Job has not been saved” (O trabalho não foi salvo) à esquerda do botão Save (Salvar).\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/edit-graph-callout-not-saved_GA.png)


**Para salvar seu trabalho**

1. Forneça todas as informações necessárias nas guias **Visual** e **Job details** (Detalhes do trabalho).

1. Clique no botão **Salvar**.

   Depois de salvar o trabalho, o aviso “not saved” (não salvo) muda para exibir a hora e a data em que o trabalho foi salvo pela última vez.

Se você sair do AWS Glue Studio antes de salvar seu trabalho, na próxima vez que você entrar no AWS Glue Studio, uma notificação será exibida. A notificação indica que há um trabalho não salvo e pergunta se você deseja restaurá-lo. Se optar por restaurar o trabalho, poderá continuar a editá-lo.

### Solucionar problemas com erros ao salvar um trabalho
<a name="save-job-troubleshooting"></a>

Se escolher o botão **Save** (Salvar), mas houver algumas informações necessárias faltando no trabalho, um aviso em vermelho aparecerá na guia onde as informações estão faltando. O número no aviso indica quantos campos faltantes foram detectados.

![\[Uma captura de tela mostrando as guias do painel do editor visual de um trabalho chamado “Untitled job” (Trabalho sem título) com um aviso rotulado 2 na guia Visual e um aviso rotulado 1 na guia Job details (Detalhes do trabalho).\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/screenshot-save-job-error-in-graph-GA2.png)

+ Se um nó no editor visual não estiver configurado corretamente, a guia **Visual** exibirá um aviso em vermelho e o nó com o erro exibirá um símbolo de aviso ![\[A red triangle with an exclamation point in the center\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/edit-graph-warning_icon.png).

  1. Escolher o nó. No painel de detalhes do nó, um aviso em vermelho aparece na guia onde as informações ausentes ou incorretas estão localizadas. 

  1. Escolha a guia no painel de detalhes do nó que mostra um aviso em vermelho e localize os campos problemáticos, que estarão destacados. Uma mensagem de erro abaixo dos campos fornece informações adicionais sobre o problema.  
![\[Uma captura de tela mostrando a guia Visual no editor de trabalhos, que está marcada com um aviso rotulado 2. O nó da origem dos dados, que é marcado com um rótulo de aviso, é selecionado. No painel de detalhes do nó, a guia Data source properties (Propriedades da origem dos dados) tem um aviso rotulado 2 e está selecionada. Dois campos, Data base (Banco de dados) e Table (Tabela) são delineados em vermelho e apresentam mensagens abaixo deles, indicando que é obrigatório haver um valor nesses campos.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/screenshot-save-job-error-in-graph2.png)
+ Se houver um problema com as propriedades do trabalho, a guia **Job details** (Detalhes do trabalho) mostrará um aviso em vermelho. Escolha essa guia e localize os campos problemáticos, que estarão destacados. As mensagens de erro abaixo dos campos fornecem informações adicionais sobre o problema.  
![\[Uma captura de tela mostrando a guia Job details (Detalhes do trabalho) no editor de trabalhos, que está marcada com um aviso rotulado 1. O campo “IAM Role” (Função do IAM) está delineado em vermelho e apresenta uma mensagem abaixo dele, indicando que é obrigatório haver um valor nele.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/screenshot-save-job-error-in-job-details.png)

## Clonar um trabalho
<a name="clone-jobs"></a>

Você pode usar a ação **Clone job** (Clonar trabalho) para copiar um trabalho existente em um novo trabalho.

**Para criar um trabalho por cópia de um trabalho existente**

1. Na página **Jobs** (Trabalhos), na lista **Your jobs** (Seus trabalhos), escolha o nome do trabalho que você deseja duplicar.

1. No menu **Actions** (Ações), escolha **Clone job** (Clonar trabalho).

1. Insira um nome para o novo trabalho. Em seguida, você poderá salvar ou editar o trabalho.

## Excluir trabalhos
<a name="delete-jobs"></a>

É possível remover trabalhos que não sejam mais necessários. É possível excluir um ou mais trabalhos em uma única operação.

**Para remover trabalhos do AWS Glue Studio**

1. Na página **Jobs** (Trabalhos), na lista **Your jobs** (Seus trabalhos), escolha o nome do trabalho que você deseja excluir.

1. No menu **Actions** (Ações), escolha **Delete job** (Excluir trabalho).

1. Confirme que você deseja excluir o trabalho digitando **delete**.

Você também pode excluir um trabalho salvo ao visualizar a guia **Job details** (Detalhes do trabalho) desse trabalho no editor visual.