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:
- Selecione a tela de fundo da tela de pipeline e use a guia Variáveis para adicionar uma variável:
Pesquise Definir Variável no painel Atividades do pipeline e arraste uma atividade Set Variable para a tela do pipeline.
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.
Selecione Variável de pipeline para o Tipo de variável.
Selecione a variável para a propriedade Name.
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.
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
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.
- Então você usa duas atividades para incrementar valores
{
"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.
Conteúdo relacionado
Saiba mais sobre outra atividade de fluxo de controle relacionada: