簡體   English   中英

使用 Azure 數據工廠將源文件中的列與接收器表列匹配以確保它們匹配

[英]matching the columns in a source file with sink table columns to make sure they match using Azure Data Factory

我有一個 Azure 數據工廠觸發器,當文件被放置在 blob 存儲中時,該觸發器將被觸發,該觸發器將開始管道執行並將文件名傳遞給數據流活動。 我想確保文件中 header 行的所有列名都在接收器表中。 匯表中有一個不應該在比較中的標識列。 不確定如何解決這個任務,我已經閱讀了“派生列”活動,這是我應該采取的路線嗎?

戰略:

使用兩個 ADF 管道,一個獲取所有文件的列表,另一個處理每個文件,將其內容復制到特定的 SQL 表。

設置:

我創建了 4 個 CSV 文件,遵循您需要的模式:“[CustomerID] [TableName] [FileID].csv”和 4 個 SQL 表,每種文件一個。

  • A_inventory_0001.csv:客戶A的庫存記錄,插入SQL表“A_Inventory”。
  • A_sales_0003.csv:客戶A的銷售記錄,插入SQL表“A_Sales”。
  • B_inventory_0002.csv:客戶B的庫存記錄,插入SQL表“B_Inventory”。
  • B_sales_0004.csv:客戶B的銷售記錄,插入SQL表“B_Sales”

戰略

關聯服務

在 Azure 數據工廠中,使用 Key Vault 創建了以下鏈接服務(Key Vault 是可選的)。

鏈接服務

數據集

創建了以下數據集。 請注意,我們已經創建了一些參數以允許管道指定源文件和目標 SQL 表。

數據集“AzureSQLTable”有一個參數來指定目標 SQL 表的名稱。

數據集-AzureSQLTable

數據集“DelimitedTextFile”有一個參數來指定源文件的名稱 CSV。

數據集分隔文本文件

數據集“DelimitedTextFiles”沒有參數,因為它將用於列出源文件夾中的所有文件。

數據集分隔文本文件

流水線

第一個管道“獲取文件”將從源文件夾(獲取元數據活動)中獲取 CSV 個文件的列表,然后,對於每個文件,調用第二個管道將 CSV 文件名作為參數傳遞。

管道-GetFiles1

管道-GetFiles2

在 foreach 循環內,調用第二個管道“Process File”,將文件名作為參數傳遞。

管道-GetFiles3

第二個管道有一個參數“pFileName”,用於接收要處理的文件的名稱和一個根據文件名計算目標表名稱的變量。

管道-ProcessFile1

第一個活動是在文件名中使用拆分來提取組成目標表名所需的部分。 在下面的表達式中,我們使用“__”分隔符拆分文件名,然后使用第一部分和第二部分組成目標表名。 @concat(string(split(pipeline().parameters.pFileName, '_')[0]),'_',string(split(pipeline().parameters.pFileName, '_')[10]))

管道-ProcessFile2

然后,第二個活動將使用動態映射將文件從源“pFileName”復制到目標表“vTableName”,即不添加特定的列名稱,因為這將是動態的。

管道-ProcessFileCopy

我在此示例中使用的文件和 ADF 代碼可在此處獲得: https://github.com/diegoeick/stack-overflow/tree/main/69340699

我希望這能解決您的問題。

如果您仍然需要將 CustomerID 和 FileID 保存在數據庫表中,您可以使用動態映射並使用可用參數(文件名)並在復制活動的映射選項卡中使用動態映射創建 json。 您可以在此處找到更多詳細信息: https://learn.microsoft.com/en-us/azure/data-factory/copy-activity-schema-and-type-mapping#parameterize-mapping

您可以 select 或使用“字段映射”過濾哪些列駐留在接收器數據集或表中。 您可以選擇使用“ derived columns ”轉換,但是在“接收sink transformation ”中您將默認使用它並設置為“自動映射”。 您可以在此處添加或刪除寫入接收器的列。

在下面的示例中,列“ id ”可以假定為類似於表中的“ Identity ”列。 假設所有文件都有相同的列:

在此處輸入圖像描述

在此處輸入圖像描述

根據需要修改后,您可以在運行前從“ inspect ”選項卡中確認相同內容。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM