Azure Data Factory 和 Synapse Analytics 中的 Common Data Model 格式
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
Common Data Model (CDM) 中繼資料系統可讓您輕鬆地跨應用程式和商務程序共用資料及其意義。 若要深入了解,請參閱 Common Data Model 概觀。
在 Azure Data Factory 和 Synapse 管線中,使用者可以使用對應資料流程,從儲存在 Azure Data Lake Store Gen2 (ADLS Gen2) 的 model.json 和資訊清單表單中的 CDM 實體轉換資料。 您也可以使用 CDM 實體參考接收 CDM 格式的資料,以 CSV 或 Parquet 格式將資料放在分割資料夾中。
對應資料流程屬性
Common Data Model 可做為對應資料流程做為來源和接收器的內嵌資料集。
注意
撰寫 CDM 實體時,您必須將現有的 CDM 實體定義 (中繼資料架構) 定義為參考。 資料流程接收會讀取 CDM 實體檔案,並將架構匯入至接收以進行欄位對應。
來源屬性
下表列出 CDM 來源所支援的屬性。 您可以在 [來源選項] 索引標籤中編輯這些屬性。
名稱 | 描述 | 必要 | 允許的值 | 資料流程指令碼屬性 |
---|---|---|---|---|
格式 | 格式必須是 cdm |
是 | cdm |
format |
中繼資料格式 | 資料實體參考所在的位置。 如果使用 CDM 1.0 版,請選擇資訊清單。 如果使用 1.0 之前的 CDM 版本,請選擇 model.json。 | Yes | 'manifest' 或 'model' |
manifestType |
根位置:容器 | CDM 資料夾的容器名稱 | 是 | String | fileSystem |
根位置:資料夾路徑 | CDM 資料夾的根資料夾位置 | 是 | String | folderPath |
資訊清單檔:實體路徑 | 根資料夾內實體的資料夾路徑 | 否 | String | entityPath |
資訊清單檔:資訊清單名稱 | 資訊清單檔的名稱。 預設值為 'default' | No | String | manifestName |
依上次修改日期來篩選 | 根據上次變更檔案的時間,選擇篩選的檔案 | 否 | 時間戳記 | modifiedAfter modifiedBefore |
架構連結服務 | 主體所在的連結服務 | 是,如果使用資訊清單 | 'adlsgen2' 或 'github' |
corpusStore |
實體參考容器 | 容器主體位於 | 是,如果在 ADLS Gen2 中使用資訊清單和主體 | String | adlsgen2_fileSystem |
實體參考存放庫 | GitHub 存放庫名稱 | 是,如果在 GitHub 中使用資訊清單和主體 | String | github_repository |
實體參考分支 | GitHub 存放庫分支 | 是,如果在 GitHub 中使用資訊清單和主體 | String | github_branch |
主體資料夾 | 主體的根位置 | 是,如果使用資訊清單 | String | corpusPath |
主體實體 | 實體參考的路徑 | 是 | String | 實體 |
允許找不到任何檔案 | 如果為 true,找不到檔案時不會擲回錯誤 | 否 | true 或 false |
ignoreNoFilesFound |
在 [來源] 和 [接收] 轉換中選取 [實體參考] 時,您可以從這三個選項中選取實體參考的位置:
- [本機] 會使用服務已用過資訊清單檔中定義的實體
- [自訂] 會要求您指向與服務所用資訊清單檔案不同的實體資訊清單檔案
- [標準] 會從
GitHub
中維護 CDM 實體的標準程式庫使用實體參考。
接收器設定
- 指向 CDM 實體參考檔案,其中包含您要寫入的實體定義。
- 對您想要服務用來寫入實體的輸出檔案定義資料分割路徑和格式。
- 設定輸出檔位置和資訊清單檔的位置與名稱。
匯入結構描述
CDM 只能做為內嵌資料集使用,而且根據預設,沒有相關聯的結構描述。 若要取得資料行中繼資料,請按一下 [投影] 索引標籤中的 [匯入結構描述] 按鈕。這可讓您參考主體所指定的資料行名稱和資料類型。 若要匯入結構描述,資料流程偵錯工作階段必須是作用中,而且您必須有要指向的現有 CDM 實體定義檔。
將資料流程資料行對應至接收轉換中的實體屬性時,按一下 [對應] 索引標籤,然後選取 [匯入架構]。 服務會讀取您在 [接收] 選項中指向的實體參考,讓您能夠對應至目標 CDM 架構。
注意
使用源自 Power BI 或 Power Platform 資料流程的 model.json 來源類型時,您可能會遭遇來源轉換的「主體路徑為 Null 或空白」錯誤。 這可能是由於 model.json 檔案中資料分割位置路徑的格式問題所造成。 若要修正此問題,請遵循下列步驟:
- 在文字編輯器中開啟 model.json 檔案
- 尋找 partitions.Location 屬性
- 將 "blob.core.windows.net" 變更為 "dfs.core.windows.net"
- 將 URL 中的任何 "%2F" 編碼修正為 "/"
- 如果使用 ADF 資料流程,分割區檔案路徑中的特殊字元必須取代為英數值,或切換至 Azure Synapse 資料流程
CDM 來源資料流指令碼範例
source(output(
ProductSizeId as integer,
ProductColor as integer,
CustomerId as string,
Note as string,
LastModifiedDate as timestamp
),
allowSchemaDrift: true,
validateSchema: false,
entity: 'Product.cdm.json/Product',
format: 'cdm',
manifestType: 'manifest',
manifestName: 'ProductManifest',
entityPath: 'Product',
corpusPath: 'Products',
corpusStore: 'adlsgen2',
adlsgen2_fileSystem: 'models',
folderPath: 'ProductData',
fileSystem: 'data') ~> CDMSource
接收屬性
下表列出 CDM 接收所支援的屬性。 您可以在 [設定] 索引標籤中編輯這些屬性。
名稱 | 描述 | 必要 | 允許的值 | 資料流程指令碼屬性 |
---|---|---|---|---|
格式 | 格式必須是 cdm |
是 | cdm |
format |
根位置:容器 | CDM 資料夾的容器名稱 | 是 | String | fileSystem |
根位置:資料夾路徑 | CDM 資料夾的根資料夾位置 | 是 | String | folderPath |
資訊清單檔:實體路徑 | 根資料夾內實體的資料夾路徑 | 否 | String | entityPath |
資訊清單檔:資訊清單名稱 | 資訊清單檔的名稱。 預設值為 'default' | No | String | manifestName |
架構連結服務 | 主體所在的連結服務 | 是 | 'adlsgen2' 或 'github' |
corpusStore |
實體參考容器 | 容器主體位於 | 是,如果主體位於 ADLS Gen2 中 | String | adlsgen2_fileSystem |
實體參考存放庫 | GitHub 存放庫名稱 | 是,如果主體位於 GitHub 中 | String | github_repository |
實體參考分支 | GitHub 存放庫分支 | 是,如果主體位於 GitHub 中 | String | github_branch |
主體資料夾 | 主體的根位置 | 是 | String | corpusPath |
主體實體 | 實體參考的路徑 | 是 | String | 實體 |
資料分割路徑 | 將寫入資料分割的位置 | 否 | String | partitionPath |
清除資料夾 | 如果在進行寫入之前清除目的地資料夾 | 否 | true 或 false |
truncate |
格式類型 | 選擇指定 Parquet 格式 | 否 | 如果指定,則為 parquet |
subformat |
資料行分隔符號 | 如果寫入至 DelimitedText,如何分隔資料行 | 是,如果寫入至 DelimitedText | String | columnDelimiter |
第一列作為標題 | 如果使用 DelimitedText,是否要將資料行名稱新增為標頭 | 否 | true 或 false |
columnNamesAsHeader |
CDM 接收資料流程指令碼範例
相關的資料流程指令碼:
CDMSource sink(allowSchemaDrift: true,
validateSchema: false,
entity: 'Product.cdm.json/Product',
format: 'cdm',
entityPath: 'ProductSize',
manifestName: 'ProductSizeManifest',
corpusPath: 'Products',
partitionPath: 'adf',
folderPath: 'ProductSizeData',
fileSystem: 'cdm',
subformat: 'parquet',
corpusStore: 'adlsgen2',
adlsgen2_fileSystem: 'models',
truncate: true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> CDMSink
相關內容
在對應資料流中建立來源轉換。