Condividi tramite


Attività Set Variable in Azure Data Factory e Azure Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Prova 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à Set Variable per impostare il valore di una variabile esistente di tipo stringa, booleano o matrice definita in una pipeline di Data Factory o Synapse oppure usare l'attività Set Variable per impostare un valore restituito dalla pipeline (anteprima).

Creare un'attività Set Variable nell'interfaccia utente

Per usare un'attività Set Variable in una pipeline, completare la procedura seguente:

  1. Selezionare lo sfondo del canvas 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 Set Variable nel riquadro Attività della pipeline e trascinare un'attività Set Variable nel canvas della pipeline.

  2. Selezionare l'attività Set Variable nel canvas, se non è già selezionata, quindi selezionare la scheda Impostazioni per modificarne i dettagli.

  3. Selezionare Variabile pipeline come tipo di variabile.

  4. Selezionare la variabile per la proprietà Name.

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

Screenshot dell'interfaccia utente per un'attività Set variable.

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

L'attività Set Variable è stata espansa per includere una variabile di sistema speciale, denominata Valore restituito dalla 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 dalla pipeline

Screenshot che mostra l'attività ExecutePipeline.

Proprietà del tipo

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

Incremento di una variabile

Uno scenario comune che riguarda le variabili consiste nell'usare una variabile come iteratore in un'attività Until o ForEach. In un'attività Set variable non è possibile fare riferimento alla variabile impostata nel campo value, ovvero non è possibile alcun autoriferimento. Per ovviare a questa limitazione, impostare una variabile temporanea e quindi creare una seconda attività Set variable. La seconda attività Set variable determina il valore dell'iteratore sulla variabile temporanea. Ecco un esempio di questo schema:

  • Si definiscono innanzitutto due variabili, una per l'iteratore e una per l'archiviazione temporanea.

Screenshot che mostra la definizione delle variabili.

  • Si usa quindi 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": []
    }
}

L'ambito delle variabili è 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 in tale attività ForEach.

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