Compartilhar via


Atividade Definir a Variável no Azure Data Factory e no Azure Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!

Use a atividade Definir Variável para definir o valor de uma variável existente do tipo String, Bool ou Array definida em um pipeline do Data Factory ou do Synapse ou use a atividade Definir Variável para definir um valor retornado do pipeline (versão prévia).

Criar uma atividade Definir Variável com a interface do usuário

Para usar uma atividade de definição de variável em um pipeline, conclua as seguintes etapas:

  1. Selecione a tela de fundo da tela de pipeline e use a guia Variáveis para adicionar uma variável:

Captura de tela de uma pipeline vazia com a guia Variáveis selecionada com uma variável de tipo de matriz chamada TestVariable.

  1. Pesquise Definir Variável no painel Atividades do pipeline e arraste uma atividade Set Variable para a tela do pipeline.

  2. Selecione a atividade "Definir variável" na tela se ela ainda não estiver selecionada, e selecione a guia Configurações para editar os detalhes.

  3. Selecione Variável de pipeline para o Tipo de variável.

  4. Selecione a variável para a propriedade Name.

  5. Insira uma expressão para definir o valor das variáveis. Essa expressão pode ser de cadeia de caracteres literal ou uma combinação de expressões e funções dinâmicas, variáveis de sistema ou saídas de outras atividades.

Captura de tela mostrando a IU de uma atividade de variável definida.

Definindo um valor retornado do pipeline com a interface do usuário

Expandimos a atividade Set Variable para incluir uma variável de sistema especial, chamada Pipeline Return Value, permitindo a comunicação do pipeline filho para o pipeline de chamada, no cenário a seguir.

Você não precisa definir a variável antes de usá-la. Para obter mais informações, veja o Valor retornado de pipeline

Captura de tela com a atividade ExecutePipeline.

Propriedades de tipo

Propriedade Descrição Obrigatório
name Nome da atividade no pipeline sim
descrição Texto descrevendo o que a atividade realiza não
type Deve ser definido como SetVariable sim
variableName O nome da variável definida por essa atividade sim
value Valor de objeto de expressão ou literal de cadeia de caracteres ao qual a variável é atribuída sim

Incrementando uma variável

Um cenário comum envolvendo variáveis é usar uma variável como um iterador dentro de uma atividade Until ou Foreach. Em uma atividade Definir variável, você não pode referenciar a variável que está sendo configurada no campo value, ou seja, nenhuma autorreferência. Para contornar essa limitação, defina uma variável temporária e, em seguida, crie uma segunda atividade Definir Variável. A segunda atividade Definir Variável define o valor do iterador para a variável temporária. Aqui está um exemplo desse padrão:

  • Primeiro você define duas variáveis: uma para o iterador e outra para armazenamento temporário.

A captura de tela mostra a definição de variáveis.

  • Então você usa duas atividades para incrementar valores

Captura de tela que mostra a variável de incremento.

{
    "name": "pipeline1",
    "properties": {
        "activities": [
            {
                "name": "Increment J",
                "type": "SetVariable",
                "dependsOn": [],
                "policy": {
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "variableName": "temp_j",
                    "value": {
                        "value": "@add(variables('counter_i'),1)",
                        "type": "Expression"
                    }
                }
            },
            {
                "name": "Set I",
                "type": "SetVariable",
                "dependsOn": [
                    {
                        "activity": "Increment J",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "policy": {
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "variableName": "counter_i",
                    "value": {
                        "value": "@variables('temp_j')",
                        "type": "Expression"
                    }
                }
            }
        ],
        "variables": {
            "counter_i": {
                "type": "Integer",
                "defaultValue": 0
            },
            "temp_j": {
                "type": "Integer",
                "defaultValue": 0
            }
        },
        "annotations": []
    }
}

As variáveis têm escopo no nível do pipeline. Isso significa que elas não são thread-safe e podem causar comportamento inesperado e indesejado se forem acessados de dentro de uma atividade de iteração paralela, como um loop ForEach, especialmente quando o valor também estiver sendo modificado dentro dessa atividade foreach.

Saiba mais sobre outra atividade de fluxo de controle relacionada: