備註
本文著重於 資料流程 Gen2 的 CI/CD 和 ALM (應用程式生命週期管理) 解決方案架構 的解決方案架構,該架構依賴 公用參數模式功能 ,且僅適用於具有 CI/CD 支援的資料流程 Gen2。
Fabric 資料流程 Gen2 中的參數可讓您定義可重複使用的輸入,以塑造資料流程的設計方式,而使用 公用參數模式 ,這些輸入可以在執行階段透過管線或 API 設定。 它使單一資料流程具有高度的彈性和多功能性,因為您只需傳遞不同的值,就可以在許多案例中重複使用相同的邏輯,從而啟用動態的自動化工作流程,而無需重寫或複製轉換。
本教學課程將逐步引導您透過範例學習,示範如何:
- 參數化來源:使用具有 WideWorldImpoters 範例資料集作為來源的 Lakehouse
- 參數化邏輯:使用整個資料流程體驗中可用的輸入小工具
- 參數化目的地:使用倉儲作為目的地
- 提交具有參數值的執行要求:透過 Fabric 管線內的資料流程活動體驗傳遞參數值
備註
本文中展示的概念適用於 Dataflow Gen2,並適用於此處顯示以外的其他來源和目的地。
情境
此案例中使用的資料流程很簡單,但所述的核心原則適用於所有類型的資料流程。 它會連線到儲存在 Lakehouse 中的 Wide World Importers 範例資料集中名為 dimension_city 的資料表。 它會篩選 SalesTerritory 資料行等於 Southeast 的資料列,並將結果載入到名為 City in a Warehouse 的新資料表中。 所有元件 (Lakehouse、倉儲和資料流程) 都位於相同的工作區中。 若要讓資料流程動態化,您可以參數化來源資料表、篩選值和目的地資料表。 這些變更可讓資料流程使用特定值執行,而不是硬式編碼值。
在繼續之前,請前往 首頁 索引標籤,選取 選項,然後在 引數 區段中,勾選標示為 啟用引數以便探索和為執行覆寫 的方塊,並允許您的資料流在執行期間接受引數,以啟用公用引數模式。
將來源參數化
使用任何 Fabric 連接器 (例如 Lakehouse、Warehouse 或 Fabric SQL) 時,它們都會遵循相同的導覽結構,並使用相同的輸入格式。 在此案例中,任何連接器都不需要手動輸入來建立連線。 不過,每個項目都會顯示它透過查詢中的導航步驟連接到的工作區和項目。 例如,第一個導覽步驟包含查詢所連線的 workspaceId。
目標是以參數取代公式列中的硬編碼值。 具體而言,您必須為 WorkspaceId 建立一個參數,並為 LakehouseId 建立另一個參數。 若要建立參數,請移至功能區中的 [首頁] 索引標籤,選取 [管理參數],然後從下拉式功能表中選擇 [新增參數]。
建立參數時,請確定兩者都標示為 必要 ,並設定為 文字 類型。 對於其目前值,請使用符合特定環境中對應值的值。
建立這兩個參數之後,您可以更新查詢指令碼以使用它們,而不是硬式編碼值。 這牽涉到手動將公式欄中的原始值取代為工作區識別碼和湖庫識別碼參數的參考值。 原始查詢腳本如下所示:
let
Source = Lakehouse.Contents([]),
#"Navigation 1" = Source{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
#"Navigation 2" = #"Navigation 1"{[lakehouseId = "2455f240-7345-4c8b-8524-c1abbf107d07"]}[Data],
#"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
#"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
#"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
#"Removed columns"
更新導覽步驟中的參考之後,您新更新的指令碼可能如下所示:
let
Source = Lakehouse.Contents([]),
#"Navigation 1" = Source{[workspaceId = WorkspaceId]}[Data],
#"Navigation 2" = #"Navigation 1"{[lakehouseId = LakehouseId]}[Data],
#"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
#"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
#"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
#"Removed columns"
您會注意到,它依然能夠正確地評估資料流程編輯器中的資料預覽。
參數化邏輯
現在來源正在使用參數,您可以專注於參數化資料流程的轉換邏輯。 在此案例中,篩選步驟是套用邏輯的位置,而正在篩選的值(目前被硬編碼為Southeast)應該被替換為一個參數。 若要這麼做,請建立名為 Territory 的新參數,將其資料類型設定為 text,將其標示為 不需要,並將其目前值設定為 Mideast。
鑑於您的篩選步驟是使用使用者介面建立的,您可以前往 篩選的資料列 步驟,雙擊它並取得篩選步驟的設定對話方塊。 此對話方塊可讓您透過輸入小工具選取是否要使用參數而非靜態值:
選取「 選取參數」選項後,將出現一個下拉式清單,顯示符合所需資料類型的所有可用參數。 從此清單中,您可以選取新建立的 Territory 參數。
選取 [確定] 之後,請注意圖表檢視已在新建立的參數與使用中的查詢之間建立連結。 不僅如此,資料預覽現在還向您顯示 中東 地區的資訊。
參數化目的地
備註
建議您熟悉 Dataflow Gen2 中「資料目的地」的概念,以及從資料目的地和受管理設定的文章中瞭解其混搭指令碼是如何建立的。
在此案例中要參數化的最後一個元件是目的地。 雖然您可以在資料流編輯器中找到資料目的地的相關資訊,但若要引數化資料流的這一部分,您需要使用 Git 或 REST API。
本教學課程示範如何透過 Git 進行變更。 在透過 git 進行變更之前,請確保:
- 建立名稱為WarehouseId的引數:請務必使用Warehouse的對應ID作為目前值,視需要設定為文字資料型別。
- 儲存資料流程:使用功能區首頁索引標籤中的 [儲存] 按鈕。
儲存資料流程後,請務必將變更提交至您的Git存放庫,並前往您的存放庫以檢視資料流的 mashup.pq 檔案。 查看 mashup.pq 檔案時,請尋找您與資料目的地相關聯的查詢。 在此案例中,該查詢的名稱為dimension_city。 您會在此查詢名稱上方看到記錄屬性:
[DataDestinations = {[Definition = [Kind = "Reference", QueryName = "dimension_city_DataDestination", IsNewTarget = true], Settings = [Kind = "Manual", AllowCreation = true, ColumnSettings = [Mappings = {[SourceColumnName = "CityKey", DestinationColumnName = "CityKey"], [SourceColumnName = "WWICityID", DestinationColumnName = "WWICityID"], [SourceColumnName = "City", DestinationColumnName = "City"], [SourceColumnName = "StateProvince", DestinationColumnName = "StateProvince"], [SourceColumnName = "Country", DestinationColumnName = "Country"], [SourceColumnName = "Continent", DestinationColumnName = "Continent"], [SourceColumnName = "SalesTerritory", DestinationColumnName = "SalesTerritory"], [SourceColumnName = "Region", DestinationColumnName = "Region"], [SourceColumnName = "Subregion", DestinationColumnName = "Subregion"], [SourceColumnName = "Location", DestinationColumnName = "Location"], [SourceColumnName = "LatestRecordedPopulation", DestinationColumnName = "LatestRecordedPopulation"]}], DynamicSchema = false, UpdateMethod = [Kind = "Replace"], TypeSettings = [Kind = "Table"]]]}]
shared dimension_city = let
此屬性記錄具有名稱為 QueryName 的欄位,其中包含具有與此查詢相關聯的所有資料目的地邏輯的查詢名稱。 此查詢如下所示:
shared dimension_city_DataDestination = let
Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
Navigation_1 = Pattern{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
Navigation_2 = Navigation_1{[warehouseId = "527ba9c1-4077-433f-a491-9ef370e9230a"]}[Data],
TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
TableNavigation
您會注意到,與 Lakehouse 來源的腳本類似,目標端的腳本也有一個類似的模式,其中硬編碼了需要使用的 workspaceId 和 warehouseId。 將這些固定值替換為參數的標識符,您的腳本應如下所示:
shared dimension_city_DataDestination = let
Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
Navigation_1 = Pattern{[workspaceId = WorkspaceId]}[Data],
Navigation_2 = Navigation_1{[warehouseId = WarehouseId]}[Data],
TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
TableNavigation
您現在可以通過工作區中的來源控制功能,將此變更提交並利用來自資料流的變更資料更新您的資料流。 您可以開啟資料流程並檢閱資料目的地和先前新增的任何引數參照,以確認所有變更都已就緒。 這會完成資料流程的所有參數化,您現在可以透過傳遞參數值來執行資料流程。
使用參數值執行要求
您可以使用 Fabric REST API 傳送包含該特定執行作業參數值的自訂承載的執行要求,您也可以使用 REST API 來探索資料流程參數 ,並瞭解資料流程預期的內容,以便觸發執行。 在本教學課程中,您將利用 Fabric 管線的 Dataflow 活動內的功能。 首先建立管線,並將新的 資料流活動 新增至畫布。 在活動的設定中,尋找資料流所在的工作區,然後從下拉式清單中選取資料流。
此 資料流引數 區段可以展開,以顯示資料流中的所有可用引數及其預設值。 您可以取代此處的任何值,傳遞的值將用於定義應該使用哪些來源、邏輯和目的地來評估您的資料流程執行。 您還可以藉由建立新的倉儲並修改評估所需的 WarehouseId ,來嘗試新的操作情境,或在需要傳遞 WorkspaceId 和其他參數以指向對應環境中正確專案的部署管線中使用此模式。