次の方法で共有


Azure Data Factory と Azure Synapse Analytics での変数の設定アクティビティ

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

変数の設定アクティビティを使用して、Data Factory または Synapse パイプラインに定義された文字列型、ブール型、または配列型の既存の変数の値を設定、または変数の設定アクティビティを使用してパイプラインの戻り値 (プレビュー) を設定します。

UI を使用して変数の設定アクティビティを作成する

パイプライン内で変数の設定アクティビティを使用するには、次の手順を実行します。

  1. パイプライン キャンバスの背景を選び、[変数] タブを使用して変数を追加します。

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

  1. パイプラインのアクティビティ ペイン内で "変数の設定" を検索し、変数の設定アクティビティをパイプライン キャンバスにドラッグします。

  2. まだ選択していない場合は、キャンバス上で変数の設定アクティビティを選択し、[設定] タブを選択して、その詳細を編集します。

  3. [変数の種類] として [パイプライン変数] を選択します。

  4. [名前] プロパティの変数を選びます。

  5. 変数の値を設定する式を入力します。 この式には、リテラル文字列式、または動的な式、関数システム変数、または他のアクティビティからの出力の任意の組み合わせを使用できます。

Screenshot of the UI for a Set variable activity.

UI を使用したパイプラインの戻り値の設定

[変数の設定] アクティビティを展開して、パイプラインの戻り値 という名前の特別なシステム変数を含めます。次のシナリオでは、子パイプラインから呼び出し元パイプラインへの通信が可能になります。

使用する前に、変数を定義する必要はありません。 詳細については、パイプラインの戻り値に関するページを参照してください。

Screenshot with ExecutePipeline Activity.

型のプロパティ

プロパティ Description 必須
name パイプラインのアクティビティの名前 はい
description アクティビティの動作を説明するテキスト no
type SetVariable に設定する必要があります はい
variableName このアクティビティによって設定される変数の名前 はい
value 変数が割り当てられる文字列リテラルまたは式オブジェクトの値 はい

変数のインクリメント

変数に関するよくあるシナリオの 1 つに、Until または ForEach アクティビティ内で変数を反復子として使用するというものがあります。 [変数の設定] アクティビティでは、value フィールドに設定されている変数を参照することはできません。つまり、自己参照はサポートされていません。 この制限を回避するには、一時変数を設定してから、2 番目の [変数の設定] アクティビティを作成します。 2 番目の [変数の設定] アクティビティでは、反復子の値が一時変数に設定されます。 次に、このパターンの例を示します。

  • まず、イテレーター用と一時ストレージ用の 2 つの変数を定義します。

Screenshot shows defining variables.

  • 次に、2 つのアクティビティを使用して値をインクリメントします

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

変数のスコープはパイプライン レベルです。 つまり、これらはスレッド セーフではなく、ForEach ループなどの並列反復アクティビティ内からアクセスされた場合 (特に、その ForEach アクティビティ内で値も変更される場合)、予想外の望ましくない動作を引き起こす可能性があります。

制御フローに関連するその他のアクティビティを確認します。