分享方式:


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

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

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

使用 UI 建立執行管線活動

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

  1. 在管線 [活動] 窗格中搜尋「管線」,並將執行管線活動拖曳至管線畫布。

  2. 在畫布上選取新的執行管線活動 (如未選取) 及其 [設定] 索引標籤,以編輯詳細資料。

    Shows the UI for an execute pipeline activity.

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

類型屬性

屬性 說明 允許的值 必要
NAME 執行管線活動的名稱。 String Yes
type 必須設為:ExecutePipeline String Yes
管線 此管線叫用之相依管線的管線參考。 管線參考物件有兩個屬性:referenceNametype。 referenceName 屬性指定參考管線的名稱。 type 屬性必須設為 PipelineReference。 PipelineReference Yes
parameters 要傳遞至叫用之管線的參數 將參數名稱對應到引數值的 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"
        }
      },

      ....
}

警告

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

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