Impostare l'attività delle variabili in Azure Data Factory e Azure Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Usare l'attività Imposta variabile per impostare il valore di una variabile esistente di tipo String, Bool o Array definita in una pipeline di Data Factory o Synapse oppure usare l'attività Imposta variabile per impostare un valore restituito della pipeline (anteprima).

Creare un'attività Imposta variabile con l'interfaccia utente

Per usare un'attività Imposta variabile in una pipeline, completare la procedura seguente:

  1. Selezionare lo sfondo dell'area di disegno della pipeline e usare la scheda Variabili per aggiungere una variabile:

Screenshot of an empty pipeline canvas with the Variables tab selected with an array type variable named TestVariable.

  1. Cercare Imposta variabile nel riquadro Attività pipeline e trascinare un'attività Imposta variabile nell'area di disegno della pipeline.

  2. Selezionare l'attività Imposta variabile nell'area di disegno, se non è già selezionata, quindi selezionare la scheda Impostazioni per modificarne i dettagli.

  3. Selezionare Variabile pipeline per il tipo di variabile.

  4. Selezionare la variabile per la proprietà Name.

  5. Immettere un'espressione per impostare il valore per le variabili. Questa espressione può essere un'espressione stringa letterale o qualsiasi combinazione di espressioni dinamiche , funzioni, variabili di sistema o output di altre attività.

Screenshot of the UI for a Set variable activity.

Impostazione di un valore restituito della pipeline con l'interfaccia utente

L'attività Set Variable è stata espansa per includere una variabile di sistema speciale, denominata Valore restituito pipeline, che consente la comunicazione dalla pipeline figlio alla pipeline chiamante, nello scenario seguente.

Non è necessario definire la variabile, prima di usarla. Per altre informazioni, vedere Valore restituito della pipeline

Screenshot with ExecutePipeline Activity.

Proprietà del tipo

Proprietà Descrizione Richiesto
name Nome dell'attività nella pipeline yes
description Testo che descrive l'attività no
Tipo Il valore deve essere impostato su SetVariable yes
variableName Nome della variabile impostata da questa attività yes
value Valore letterale stringa o valore di oggetto espressione a cui è assegnata la variabile specificata yes

Incremento di una variabile

Uno scenario comune che riguarda la variabile consiste nell'usare una variabile come iteratore all'interno di un'attività Until o ForEach . In un'attività Imposta variabile non è possibile fare riferimento alla variabile impostata nel value campo, ovvero nessun riferimento automatico. Per ovviare a questa limitazione, impostare una variabile temporanea e quindi creare una seconda attività Imposta variabile . La seconda attività Imposta variabile imposta il valore dell'iteratore sulla variabile temporanea. Ecco un esempio di questo modello:

  • Prima di tutto si definiscono due variabili: una per l'iteratore e una per l'archiviazione temporanea.

Screenshot shows defining variables.

  • Quindi si usano due attività per incrementare i valori

Screenshot shows increment variable.

{
    "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": []
    }
}

Le variabili sono con ambito a livello di pipeline. Ciò significa che non sono thread-safe e possono causare comportamenti imprevisti e indesiderati se sono accessibili dall'interno di un'attività di iterazione parallela, ad esempio un ciclo ForEach, soprattutto quando il valore viene modificato anche all'interno di tale attività foreach.

Informazioni su un'altra attività del flusso di controllo correlata: