共用方式為


在 Azure Data Factory 和 Synapse Analytics 中執行管道活動

適用於: Azure Data Factory Azure Synapse Analytics

提示

Data Factory in Microsoft Fabric 是下一代的 Azure Data Factory,擁有更簡單的架構、內建 AI 及新功能。 如果你是資料整合新手,建議先從 Fabric Data Factory 開始。 現有的 ADF 工作負載可升級至 Fabric,以存取資料科學、即時分析與報告等新能力。

執行管線活動允許 Data Factory 或 Synapse 管線叫用另一個管線。

使用使用者介面 (UI) 建立執行管線活動

若要在管線中使用執行管線活動,請完成下列步驟:

  1. 在管線活動窗格中搜尋管線,然後將執行管線活動拖曳至管線畫布。

  2. 如果尚未選取畫布上的新執行管線活動,請先選取它,再選取其設定索引標籤,以編輯詳細資料。

    顯示執行管線活動的UI。

  3. 選取現有的管線,或使用 [新增] 按鈕建立新的管線。 選取其他選項,並視需要設定管線的任何參數,以完成您的設定。

語法

{
    "name": "MyPipeline",
    "properties": {
        "activities": [
            {
                "name": "ExecutePipelineActivity",
                "type": "ExecutePipeline",
                "typeProperties": {
                    "parameters": {                        
                        "mySourceDatasetFolderPath": {
                            "value": "@pipeline().parameters.mySourceDatasetFolderPath",
                            "type": "Expression"
                        }
                    },
                    "pipeline": {
                        "referenceName": "<InvokedPipelineName>",
                        "type": "PipelineReference"
                    },
                    "waitOnCompletion": true
                 }
            }
        ],
        "parameters": [
            {
                "mySourceDatasetFolderPath": {
                    "type": "String"
                }
            }
        ]
    }
}

類型屬性

屬性 說明 允許的值 必要
名稱 執行管線活動的名稱。 字符串 Yes
型別 必須設為:ExecutePipeline 字符串 Yes
準銷售案源 此管線調用之相依管線的管線參考。 管線參考物件有兩個屬性:referenceNametype。 referenceName 屬性指定參考管線的名稱。 type 屬性必須設為 PipelineReference。 PipelineReference Yes
參數 要傳遞至叫用之管線的參數 將參數名稱對應到引數值的 JSON 物件 No
waitOnCompletion 定義活動執行是否會等待相依管線執行完成。 預設為「true」。 布林值 No

範例

此案例有兩個管道:

  • 主管線 - 此管線有一個執行管線活動,會呼叫被調用的管線。 主要管線採用兩個參數:masterSourceBlobContainermasterSinkBlobContainer
  • 調用管線 - 此管線包含一個複製活動,可將資料從 Azure Blob 來源複製到 Azure Blob 接收端。 叫用的管線採用兩個參數:sourceBlobContainersinkBlobContainer

主要管線定義

{
  "name": "masterPipeline",
  "properties": {
    "activities": [
      {
        "type": "ExecutePipeline",
        "typeProperties": {
          "pipeline": {
            "referenceName": "invokedPipeline",
            "type": "PipelineReference"
          },
          "parameters": {
            "sourceBlobContainer": {
              "value": "@pipeline().parameters.masterSourceBlobContainer",
              "type": "Expression"
            },
            "sinkBlobContainer": {
              "value": "@pipeline().parameters.masterSinkBlobContainer",
              "type": "Expression"
            }
          },
          "waitOnCompletion": true
        },
        "name": "MyExecutePipelineActivity"
      }
    ],
    "parameters": {
      "masterSourceBlobContainer": {
        "type": "String"
      },
      "masterSinkBlobContainer": {
        "type": "String"
      }
    }
  }
}

被調用的管線定義

{
  "name": "invokedPipeline",
  "properties": {
    "activities": [
      {
        "type": "Copy",
        "typeProperties": {
          "source": {
            "type": "BlobSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
        "name": "CopyBlobtoBlob",
        "inputs": [
          {
            "referenceName": "SourceBlobDataset",
            "type": "DatasetReference"
          }
        ],
        "outputs": [
          {
            "referenceName": "sinkBlobDataset",
            "type": "DatasetReference"
          }
        ]
      }
    ],
    "parameters": {
      "sourceBlobContainer": {
        "type": "String"
      },
      "sinkBlobContainer": {
        "type": "String"
      }
    }
  }
}

連結服務

{
    "name": "BlobStorageLinkedService",
    "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=*****;AccountKey=*****"
    }
  }
}

來源資料集

{
    "name": "SourceBlobDataset",
    "properties": {
    "type": "AzureBlob",
    "typeProperties": {
      "folderPath": {
        "value": "@pipeline().parameters.sourceBlobContainer",
        "type": "Expression"
      },
      "fileName": "salesforce.txt"
    },
    "linkedServiceName": {
      "referenceName": "BlobStorageLinkedService",
      "type": "LinkedServiceReference"
    }
  }
}

接收資料集

{
    "name": "sinkBlobDataset",
    "properties": {
    "type": "AzureBlob",
    "typeProperties": {
      "folderPath": {
        "value": "@pipeline().parameters.sinkBlobContainer",
        "type": "Expression"
      }
    },
    "linkedServiceName": {
      "referenceName": "BlobStorageLinkedService",
      "type": "LinkedServiceReference"
    }
  }
}

執行管線

為執行此範例中的主要管線,下列值會傳遞給 masterSourceBlobContainer 和 masterSinkBlobContainer 參數:

{
  "masterSourceBlobContainer": "executetest",
  "masterSinkBlobContainer": "executesink"
}

主要管線會將這些值轉送到叫用的管線,如下列範例所示:

{
    "type": "ExecutePipeline",
    "typeProperties": {
      "pipeline": {
        "referenceName": "invokedPipeline",
        "type": "PipelineReference"
      },
      "parameters": {
        "sourceBlobContainer": {
          "value": "@pipeline().parameters.masterSourceBlobContainer",
          "type": "Expression"
        },
        "sinkBlobContainer": {
          "value": "@pipeline().parameters.masterSinkBlobContainer",
          "type": "Expression"
        }
      },

      ....
}

警告

執行管線活動會將陣列參數當做字串傳遞至子管線,這是因為承載會以字串格式從父管線傳遞至 >子系。 當我們檢查傳遞給子管線的輸入時,就能看見它。 如需詳細資訊,請參閱本節

查看其他支援的控制流程活動: