Compartilhar via


Transformar dados usando a atividade Script no Azure Data Factory ou no Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

Você usa atividades de transformação de dados em um pipeline do Data Factory ou do Synapse para transformar e processar dados brutos em previsões e insights. A atividade Script é uma das atividades de transformação compatíveis com os pipelines. Este artigo baseia-se no artigo Transformar dados, que apresenta uma visão geral da transformação de dados e das atividades de transformação compatíveis.

Usando a atividade Script, você pode executar operações comuns com a DML (linguagem de manipulação de dados) e a DDL (linguagem de definição de dados). Instruções DML como INSERT, UPDATE, DELETE e SELECT permitem que os usuários insiram, modifiquem, excluam e recuperem dados no banco de dados. Instruções DDL como CREATE, ALTER e DROP permitem que um gerente de banco de dados crie, modifique e remova objetos de banco de dados, como tabelas, índices e usuários.

Você pode usar a atividade Script para invocar um script SQL em um dos seguintes armazenamentos de dados em sua empresa ou em uma VM (máquina virtual) Azure):

  • Banco de Dados do Azure para PostgreSQL (versão 2.0)
  • Banco de Dados SQL do Azure
  • Azure Synapse Analytics
  • banco de dados SQL Server. Se você estiver usando SQL Server, instale o runtime de integração auto-hospedada no mesmo computador que hospeda o banco de dados ou em um computador separado que tenha acesso ao banco de dados. O Integration Runtime (auto-hospedado) é um componente que conecta fontes de dados locais ou em uma VM do Azure aos serviços de nuvem de maneira segura e gerenciada. Confira o artigo Runtime de integração auto-hospedada para obter detalhes.
  • Oracle
  • Snowflake

O script pode conter uma única instrução SQL ou várias instruções SQL executadas sequencialmente. A tarefa Script pode ser usada para os seguintes propósitos:

  • Corte uma tabela em preparação para inserir dados.
  • Criar, alterar e descartar objetos de banco de dados como tabelas e exibições.
  • Recriar tabelas de fatos e de dimensões antes de carregar dados nelas.
  • Executar procedimentos armazenados. Se a instrução SQL invocar um procedimento armazenado que retorne resultados de uma tabela temporária, use a opção de WITH RESULT SETS para definir metadados para o conjunto de resultados.
  • Salve o conjunto de linhas retornado de uma consulta como um resultado da atividade para uso posterior.

Detalhes da sintaxe

Este é o formato JSON para definir uma atividade de Script:

{ 
   "name": "<activity name>", 
   "type": "Script", 
   "linkedServiceName": { 
      "referenceName": "<name>", 
      "type": "LinkedServiceReference" 
    }, 
   "typeProperties": { 
      "scripts" : [ 
         { 
            "text": "<Script Block>", 
            "type": "<Query> or <NonQuery>", 
            "parameters":[ 
               { 
                  "name": "<name>", 
                  "value": "<value>", 
                  "type": "<type>", 
                  "direction": "<Input> or <Output> or <InputOutput>", 
                  "size": 256 
               }, 
               ... 
            ] 
         }, 
         ... 
      ],     
         ... 
         ] 
      }, 
      "scriptBlockExecutionTimeout": "<time>",  
      "logSettings": { 
         "logDestination": "<ActivityOutput> or <ExternalStore>", 
         "logLocationSettings":{ 
            "linkedServiceName":{ 
               "referenceName": "<name>", 
               "type": "<LinkedServiceReference>" 
            }, 
            "path": "<folder path>" 
         } 
      } 
    } 
} 

A seguinte tabela descreve essas propriedades JSON:

Nome da propriedade Descrição Obrigatório
nome O nome da atividade. Sim
tipo O tipo de atividade, definido como "Script". Sim
typeProperties Especifique as propriedades para configurar a atividade Script. Sim
nomeDoServiçoVinculado O banco de dados de destino em que o script será executado. Ele deve ser uma referência a um serviço vinculado. Sim
scripts Uma matriz de objetos para representar o script. Não
scripts.text O texto sem formatação de um bloco de consultas. Não
scripts.type O tipo do bloco de consultas. Pode ser Query ou NonQuery. Padrão: Query. Não
scripts.parameter A matriz de parâmetros do script. Não
scripts.parameter.name O nome do parâmetro. Não
scripts.parameter.value O valor do parâmetro. Não
scripts.parameter.type O tipo de dados do parâmetro. O tipo é do tipo lógico e segue o mapeamento de tipo de cada conector. Não
scripts.parameter.direction A direção do parâmetro. Pode ser Input, Output ou InputOutput. O valor será ignorado se a direção for Output. O tipo ReturnValue não é suportado. Defina o valor retornado de SP como um parâmetro de saída para recuperá-lo. Não
scripts.parameter.size O tamanho máximo do parâmetro. Aplica-se somente ao parâmetro de direção Output/InputOutput do tipo string/byte[]. Não
scriptBlockExecutionTimeout O tempo de espera para que a operação de execução do bloco de script seja concluída antes de atingir o tempo limite. Não
configurações de log As configurações usadas para armazenar os logs de saída. Se isso não for especificado, o log de script será desabilitado. Não
logSettings.logDestination O destino da saída de log. Pode ser ActivityOutput ou ExternalStore. Padrão: ActivityOutput. Não
logSettings.logLocationSettings As configurações do local de destino caso o logDestination seja ExternalStore. Não
logSettings.logLocationSettings.linkedServiceName O serviço vinculado do local de destino. Só há suporte para o armazenamento de blobs. Não
logSettings.logLocationSettings.path O caminho da pasta onde os logs serão armazenados. Não

Saída de Atividade

Saída de exemplo:

{ 
    "resultSetCount": 2, 
    "resultSets": [ 
        { 
            "rowCount": 10, 
            "rows":[ 
                { 
                    "<columnName1>": "<value1>", 
                    "<columnName2>": "<value2>", 
                    ... 
                } 
            ] 
        }, 
        ... 
    ], 
    "recordsAffected": 123, 
    "outputParameters":{ 
        "<parameterName1>": "<value1>", 
        "<parameterName2>": "<value2>" 
    }, 
    "outputLogs": "<logs>", 
    "outputLogsLocation": "<folder path>", 
    "outputTruncated": true, 
    ... 
} 
Nome da propriedade Descrição Condição
resultSetCount O número de conjuntos de resultados retornados pelo script. Sempre
conjuntos de resultados A matriz que contém todos os conjuntos de resultados. Sempre
resultSets.rowCount Número total de linhas no conjunto de resultados. Sempre
resultSets.rows A matriz de linhas no conjunto de resultados. Sempre
recordsAffected A contagem de linhas afetadas pelo script. Se scriptType for NonQuery
parâmetrosDeSaída Os parâmetros de saída do script. Se o tipo de parâmetro for Output ou InputOutput.
outputLogs Os logs gravados pelo script, por exemplo, a instrução print. Se o conector suportar instruções de log e enableScriptLogs is true and logLocationSettings não for fornecido.
outputLogsPath O caminho completo do arquivo de log. Se enableScriptLogs for verdadeiro e logLocationSettings for fornecido.
outputTruncated Indica se a saída excede os limites e se fica truncada. Caso a saída ultrapasse os limites.

Observação

  • A saída é coletada toda vez que um bloco de script é executado. A saída final é o resultado mesclado de todas as saídas de bloco de script. O parâmetro de saída com o mesmo nome em um bloco de script diferente será substituído.
  • Como a saída tem limitação de tamanho/linhas, ela será truncada na seguinte ordem: logs -> parâmetros -> linhas. Isso se aplica a um único bloco de script, o que significa que as linhas de saída do próximo bloco de script não removerão os logs anteriores.
  • Qualquer erro causado pelo log não causará uma falha na atividade.
  • Para consumir conjuntos de resultados de saída de atividades em atividades subsequentes, consulte a documentação de resultados de atividades de pesquisa.
  • Use outputLogs quando estiver usando instruções 'PRINT' para fins de registro em log. Se a consulta retornar resultSets, ela estará disponível na saída da atividade e será limitada a 5 mil linhas/limite de tamanho de 4 MB.

Configurar a atividade de script através da interface do usuário

Script embutido

Captura de tela mostrando a interface do usuário para configurar um script embutido.

Os scripts embutidos se integram bem ao CI/CD do pipeline, pois o script é armazenado como parte dos metadados do pipeline.

Registro em log

Captura de tela mostrando a interface do usuário para as configurações de log de um script.

Opções de log:

  • Desabilitar – nenhuma saída de execução é registrada.
  • Saída da atividade - A saída da execução do script é anexada à saída da atividade. As atividades subsequentes podem então consumi-los. O tamanho de saída é limitado a 4 MB.
  • Armazenamento externo — Persiste a saída no armazenamento. Use essa opção se o tamanho da saída for maior que 2 MB ou se você quiser persistir explicitamente a saída na sua conta de armazenamento.

Observação

Faturamento — A atividade de script será faturada como atividades de pipeline.

Consulte os seguintes artigos que explicam como transformar dados de outras maneiras: