Condividi tramite


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 all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

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 di un canvas della pipeline vuoto con la scheda Variabili selezionata con una variabile di tipo matrice denominata 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 dell'interfaccia utente per un'attività Imposta variabile.

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 raffigurante l'attività ExecutePipeline.

Proprietà del tipo

Proprietà Descrizione Richiesto
name Nome dell'attività nella pipeline yes
description Testo che descrive l'attività no
type 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 che mostra la definizione delle variabili.

  • Quindi si usano due attività per incrementare i valori

Screenshot che mostra la variabile di 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": []
    }
}

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: