Transformar dados usando a atividade Script no Azure Data Factory ou Synapse Analytics
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Gorjeta
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!
Você usa atividades de transformação de dados em um pipeline do Data Factory ou Synapse para transformar e processar dados brutos em previsões e insights. A atividade Script é uma das atividades de transformação suportadas pelos pipelines. Este artigo baseia-se no artigo de transformação de dados, que apresenta uma visão geral da transformação de dados e das atividades de transformação suportadas.
Usando a atividade de script, você pode executar operações comuns com DML (Data Manipulation Language) e DDL (Data Definition Language). 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 gerenciador 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 máquina virtual (VM) do Azure:
- Base de Dados SQL do Azure
- Azure Synapse Analytics
- Banco de dados SQL Server. Se você estiver usando o SQL Server, instale o tempo de execução de integração auto-hospedado na mesma máquina que hospeda o banco de dados ou em uma máquina separada que tenha acesso ao banco de dados. O tempo de execução de integração auto-hospedado é um componente que conecta fontes de dados locais/na VM do Azure com serviços de nuvem de forma segura e gerenciada. Consulte o artigo Self-hosted integration runtime para obter detalhes.
- Oracle
- Snowflake
O script pode conter uma única instrução SQL ou várias instruções SQL que são executadas sequencialmente. Você pode usar a tarefa Script para as seguintes finalidades:
- Truncar uma tabela em preparação para inserir dados.
- Crie, altere e solte objetos de banco de dados, como tabelas e exibições.
- Recrie tabelas de fatos e dimensões antes de carregar dados nelas.
- Execute procedimentos armazenados. Se a instrução SQL invocar um procedimento armazenado que retorna resultados de uma tabela temporária, use a opção WITH RESULT SETS para definir metadados para o conjunto de resultados.
- Salve o conjunto de linhas retornado de uma consulta como saída de atividade para consumo downstream.
Detalhes da sintaxe
Aqui está 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 tabela a seguir descreve essas propriedades JSON:
Property name | Description | 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 de Script. | Sim |
linkedServiceName | O banco de dados de destino no qual o script é executado. Deve ser uma referência a um serviço ligado. | Sim |
scripts | Uma matriz de objetos para representar o script. | Não |
scripts.texto | O texto simples de um bloco de consultas. | Não |
scripts.type | O tipo do bloco de consultas. Pode ser Query ou NonQuery. Padrão: Consulta. | Não |
scripts.parâmetro | A matriz de parâmetros do script. | Não |
scripts.parameter.name | O nome do parâmetro. | Não |
scripts.parâmetro.value | O valor do parâmetro. | Não |
scripts.parameter.type | O tipo de dados do parâmetro. O 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, InputOutput. O valor será ignorado se a direção for Output. O tipo ReturnValue não é suportado. Defina o valor de retorno do SP como um parâmetro de saída para recuperá-lo. | Não |
scripts.parâmetro.size | O tamanho máximo do parâmetro. Aplica-se apenas 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 que ela atinja o tempo limite. | Não |
logSettings | As configurações para armazenar os logs de saída. Se não for especificado, o log de script será desabilitado. | Não |
logSettings.logDestino | 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 se logDestination for ExternalStore. | Não |
logSettings.logLocationSettings.linkedServiceName | O serviço vinculado do local de destino. Apenas o armazenamento de blob é suportado. | Não |
logSettings.logLocationSettings.path | O caminho da pasta sob o qual armazenar logs. | Não |
Resultados da 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,
...
}
Property name | Description | Condição |
---|---|---|
resultSetCount | A contagem de conjuntos de resultados retornados pelo script. | Sempre |
resultSets | A matriz que contém todos os conjuntos de resultados. | Sempre |
resultSets.rowCount | Total de linhas no conjunto de resultados. | Sempre |
resultSets.rows | A matriz de linhas no conjunto de resultados. | Sempre |
registrosAfetados | A contagem de linhas afetadas pelo script. | Se scriptType for NonQuery |
outputParameters | Os parâmetros de saída do script. | Se o tipo de parâmetro for Output ou InputOutput. |
outputLogs | Os logs escritos pelo script, por exemplo, print statement. | Se o conector suportar a instrução log e enableScriptLogs for true e logLocationSettings não for fornecido. |
outputLogsPath | O caminho completo do arquivo de log. | Se enableScriptLogs for true e logLocationSettings for fornecido. |
outputTruncado | Indicador de se a saída excede os limites e fica truncada. | Se a saída exceder os limites. |
Nota
- 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.
- Uma vez que a saída tem limitação de tamanho / linhas, a saída será truncada na seguinte ordem: logs -> parâmetros -> linhas. Observe que 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 logs anteriores.
- Qualquer erro causado pelo log não falhará na atividade.
- Para consumir resultados de saída de atividadeDefine em atividade a jusante, consulte a documentação de resultados da atividade de pesquisa.
- Use outputLogs quando estiver usando instruções 'PRINT' para fins de registro. Se a consulta retornar resultSets, ela estará disponível na saída da atividade e será limitada a 5000 linhas / limite de tamanho de 4MB.
Configurar a atividade de script usando a interface do usuário
Script embutido
Os scripts embutidos integram-se bem com o Pipeline CI/CD, uma vez que o script é armazenado como parte dos metadados do pipeline.
Registo
Opções de registo:
- Desativar - 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 a jusante podem então consumi-lo. O tamanho da saída é limitado a 4 MB.
- Armazenamento externo - Persiste a saída para o armazenamento. Use esta 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.
Nota
Faturamento - A atividade de Script será cobrada como atividades de Pipeline.
Conteúdos relacionados
Consulte os seguintes artigos que explicam como transformar dados de outras maneiras: