Azure Data Factory 和 Azure Synapse Analytics 中的資料集

適用於:Azure Data Factory Azure Synapse Analytics

提示

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

本文說明什麼是資料集、如何以 JSON 格式定義它們,以及如何在 Azure Data Factory 和 Synapse 管線中使用它們。

如果您不熟悉 Data Factory,請參閱 Azure Data Factory 簡介來概略了解。 如需 Azure Synapse 的詳細資訊,請參閱什麼是 Azure Synapse

概觀

Azure Data Factory 或 Synapse 工作區可有一或多個管線。 「管線」是一起執行某個工作的「活動」所組成的邏輯群組。 管線中活動會定義要對資料執行的動作。 現在,「資料集」是一個具名的資料檢視,指向或參考您想要在「活動」中用來作為輸入或輸出的資料。 資料集會識別不同資料存放區中的資料,例如資料表、檔案、資料夾和文件。 例如,Azure Blob 資料集會指定活動應從中讀取資料之 Blob 儲存體中的 Blob 容器和資料夾。

在您建立資料集之前,您必須建立一個連結服務,以將資料存放區連結到服務。 連結服務非常類似連接字串,定義該服務連接至外部資源所需的連接資訊。 這麼說吧:資料集代表已連結之資料存放區內的資料結構,而已連結的服務則定義與資料來源的連線。 例如,Azure 儲存體連結服務會將儲存體帳戶連結。 Azure Blob 資料集代表該 Azure 儲存體帳戶內包含要處理之輸入 Blob 的 Blob 容器和資料夾。

以下是一個範例案例。 若要將資料從 Blob 儲存體複製到 SQL 資料庫,您需建立兩個已連結的服務:「Azure Blob 儲存體」和 Azure SQL Database。 接著,建立兩個資料集:分隔文字 資料集 (此資料集參考「Azure Blob 儲存體」已連結服務,假如文字檔案是來源的話) 和「Azure SQL 資料表」資料集 (此資料集參考 Azure SQL Database 已連結服務)。 Azure Blob 儲存體和 Azure SQL Database 連結服務包含服務在執行階段分別用來連接至 Azure 儲存體和 Azure SQL Database 的連接字串。 分隔文字資料集會指定 Blob 容器和 Blob 資料夾,其中包含 Blob 儲存體中的輸入 Blob,以及格式相關的設定。 「Azure SQL 資料表」資料集會指定做為資料複製目的地的 SQL Database 中 SQL 資料表。

下圖顯示管線、活動、資料集及已連結服務之間的關聯性:

Relationship between pipeline, activity, dataset, linked services

使用 UI 建立資料集

若要使用 Azure Data Factory Studio 建立資料集,請選取 [作者] 索引標籤 (鉛筆圖示),然後選取加號圖示,來選擇 [資料集]

Shows the Author tab of the Azure Data Factory Studio with the new dataset button selected.

您會看到新的資料集視窗,選擇 Azure Data Factory 中可用的任何連接器,以設定現有的或新的連結服務。

Shows the new dataset window where you can choose the type of linked service to any of the supported data factory connectors.

接下來,系統會提示您選擇資料集格式。

Shows the dataset format window allowing you to choose a format for the new dataset.

最後,您可以為您選取的資料集類型選擇現有連結服務,或如果未定義,請建立新的連結服務。

Shows the set properties window where you can choose an existing dataset of the type selected previously, or create a new one.

建立資料集之後,您可以在 Azure Data Factory 的任何管線內使用。

資料集 JSON

Data Factory 中的資料集會以下列 JSON 格式定義:

{
    "name": "<name of dataset>",
    "properties": {
        "type": "<type of dataset: DelimitedText, AzureSqlTable etc...>",
        "linkedServiceName": {
                "referenceName": "<name of linked service>",
                "type": "LinkedServiceReference",
        },
        "schema":[

        ],
        "typeProperties": {
            "<type specific property>": "<value>",
            "<type specific property 2>": "<value 2>",
        }
    }
}

下表會描述上述 JSON 的屬性:

屬性 描述 必要
NAME 資料集的名稱。 請參閱命名規則 Yes
type 資料集的類型。 指定 Data Factory 支援的其中一種類型 (例如︰DelimitedText、AzureSqlTable)。

如需詳細資料,請參閱資料集類型
Yes
schema 資料集的結構描述代表實體資料類型和圖形。 No
typeProperties 每個類型的類型屬性均不同。 如需有關支援的類型及其屬性的詳細資料,請參閱資料集類型 Yes

當您匯入資料集的結構描述時,請選取 [匯入結構描述] 按鈕,然後選擇從來源或從本機檔案匯入。 在大部分情況下,您會直接從來源匯入結構描述。 但是,如果您已經有本機結構描述檔案 (Parquet 檔案或具有標頭的 CSV 檔案),您可以將服務導向該檔案做為結構描述的基底。

複製活動中,資料集會用於來源和接收。 資料集中定義的架構作為參考為選擇性的。 如果您想要在來源和接收之間套用資料行/欄位對應,請參閱架構和類型對應

在資料流中,會在來源和接收轉換中使用資料集。 資料集會定義基本資料結構描述。 如果您的資料沒有結構描述,您可以對來源和接收使用結構描述漂移。 資料集中的中繼資料會顯示在來源轉換中,以作為來源投影。 來源轉換中的投影代表了具有定義名稱和類型的資料流資料。

資料集類型

該服務支援許多不同類型的資料集,視您使用的資料存放區而定。 您可以從連接器概觀一文找到支援的資料存放區清單。 選取某個資料存放區,即可了解如何建立已連結的服務和資料集。

例如,針對分隔文字資料集,資料集類型會設定為 DelimitedText,如下列 JSON 範例所示:

{
    "name": "DelimitedTextInput",
    "properties": {
        "linkedServiceName": {
            "referenceName": "AzureBlobStorage",
            "type": "LinkedServiceReference"
        },
        "annotations": [],
        "type": "DelimitedText",
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "fileName": "input.log",
                "folderPath": "inputdata",
                "container": "adfgetstarted"
            },
            "columnDelimiter": ",",
            "escapeChar": "\\",
            "quoteChar": "\""
        },
        "schema": []
    }
}

建立資料集

您可以使用下列其中一個工具或 SDK 來建立資料集:.NET APIPowerShellREST API、Azure Resource Manager 範本及 Azure 入口網站

目前版本與版本 1 資料集

以下是 Data Factory 目前版本 (和Azure Synapse) 與舊版 Data Factory 第 1 版之間的一些差異:

  • 目前版本中不支援外部屬性。 已由觸發程序取代它。
  • 目前版本中不支援原則和可用性屬性。 管線的開始時間取決於觸發程序
  • 目前版本中不支援範圍資料集 (管線中定義的資料集)。

如需使用上述其中一個工具或 SDK 來建立管線和資料集的逐步指示,請參閱下列教學課程。