Partilhar via


Definir atividade variável no Azure Data Factory e no Azure 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!

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 Synapse ou use a atividade Definir variável para definir um valor de retorno de pipeline (visualização).

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

Para usar uma atividade Definir variável em um pipeline, conclua as seguintes etapas:

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

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

  1. Procure Definir variável no painel Atividades do pipeline e arraste uma atividade Definir variável para a tela do pipeline.

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

  3. Selecione Variável de pipeline para seu 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 uma expressão de cadeia de caracteres literal ou qualquer combinação de expressões dinâmicas , funções, variáveis de sistema ou saídas de outras atividades.

Captura de tela da interface do usuário para uma atividade variável set.

Definindo um valor de retorno de 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, consulte Valor de retorno de pipeline

Captura de tela com ExecutePipeline Activity.

Propriedades do tipo

Property Descrição Obrigatório
nome Nome da atividade em pipeline sim
descrição Texto descrevendo o que a atividade faz não
tipo Deve ser definido como SetVariable sim
nomevariável Nome da variável definida por esta atividade sim
valor Literal de cadeia de caracteres ou valor de objeto de expressão ao qual a variável é atribuída sim

Incrementando uma variável

Um cenário comum envolvendo variável é usar uma variável como iterador dentro de uma atividade Until ou ForEach . Em uma atividade Definir variável , não é possível fazer referência à variável que está sendo value definida no campo, ou seja, não é autorreferenciada. Para contornar essa limitação, defina uma variável temporária e, em seguida, crie uma segunda atividade de variável set. A segunda atividade da variável set define o valor do iterador como 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 o armazenamento temporário.

A captura de tela mostra variáveis definidoras.

  • Em seguida, você usa duas atividades para incrementar valores

A captura de tela 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 eles não são seguros para threads e podem causar um 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 está sendo modificado dentro dessa atividade foreach.

Saiba mais sobre outra atividade de fluxo de controle relacionada: