參數化資料流 Gen2

備註

本文著重於 資料流程 Gen2 的 CI/CD 和 ALM (應用程式生命週期管理) 解決方案架構 的解決方案架構,該架構依賴 公用參數模式功能 ,且僅適用於具有 CI/CD 支援的資料流程 Gen2。

Fabric 資料流程 Gen2 中的參數可讓您定義可重複使用的輸入,以塑造資料流程的設計方式,而使用 公用參數模式 ,這些輸入可以在執行階段透過管線或 API 設定。 它使單一資料流程具有高度的彈性和多功能性,因為您只需傳遞不同的值,就可以在許多案例中重複使用相同的邏輯,從而啟用動態的自動化工作流程,而無需重寫或複製轉換。

本教學課程將逐步引導您透過範例學習,示範如何:

  • 參數化來源:使用具有 WideWorldImpoters 範例資料集作為來源的 Lakehouse
  • 參數化邏輯:使用整個資料流程體驗中可用的輸入小工具
  • 參數化目的地:使用倉儲作為目的地
  • 提交具有參數值的執行要求:透過 Fabric 管線內的資料流程活動體驗傳遞參數值

Dataflow Gen2 中參數化資料流程解決方案架構的圖表。

備註

本文中展示的概念適用於 Dataflow Gen2,並適用於此處顯示以外的其他來源和目的地。

情境

Dataflow Gen2 內案例名稱為 dimension_city 的查詢螢幕擷取畫面。

此案例中使用的資料流程很簡單,但所述的核心原則適用於所有類型的資料流程。 它會連線到儲存在 Lakehouse 中的 Wide World Importers 範例資料集中名為 dimension_city 的資料表。 它會篩選 SalesTerritory 資料行等於 Southeast 的資料列,並將結果載入到名為 City in a Warehouse 的新資料表中。 所有元件 (Lakehouse、倉儲和資料流程) 都位於相同的工作區中。 若要讓資料流程動態化,您可以參數化來源資料表、篩選值和目的地資料表。 這些變更可讓資料流程使用特定值執行,而不是硬式編碼值。

在繼續之前,請前往 首頁 索引標籤,選取 選項,然後在 引數 區段中,勾選標示為 啟用引數以便探索和為執行覆寫 的方塊,並允許您的資料流在執行期間接受引數,以啟用公用引數模式。

Dataflow Gen2 中選項對話框的截圖,參數區塊顯示「啟用被發現並覆寫以執行」設定。

將來源參數化

使用任何 Fabric 連接器 (例如 Lakehouse、Warehouse 或 Fabric SQL) 時,它們都會遵循相同的導覽結構,並使用相同的輸入格式。 在此案例中,任何連接器都不需要手動輸入來建立連線。 不過,每個項目都會顯示它透過查詢中的導航步驟連接到的工作區和項目。 例如,第一個導覽步驟包含查詢所連線的 workspaceId。

導覽 1 步驟的螢幕擷取畫面,其中包含 workspaceId 值,位於 dimension_city 查詢的公式列中。

目標是以參數取代公式列中的硬編碼值。 具體而言,您必須為 WorkspaceId 建立一個參數,並為 LakehouseId 建立另一個參數。 若要建立參數,請移至功能區中的 [首頁] 索引標籤,選取 [管理參數],然後從下拉式功能表中選擇 [新增參數]。

「首頁」標籤中用於建立新參數的條目的螢幕截圖。

建立參數時,請確定兩者都標示為 必要 ,並設定為 文字 類型。 對於其目前值,請使用符合特定環境中對應值的值。

在 [管理參數] 對話方塊內建立的 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 參數的螢幕擷取畫面。

鑑於您的篩選步驟是使用使用者介面建立的,您可以前往 篩選的資料列 步驟,雙擊它並取得篩選步驟的設定對話方塊。 此對話方塊可讓您透過輸入小工具選取是否要使用參數而非靜態值:

篩選器列對話方塊中輸入小工具的螢幕擷取畫面,其中包含參考參數的選項。

選取「 選取參數」選項後,將出現一個下拉式清單,顯示符合所需資料類型的所有可用參數。 從此清單中,您可以選取新建立的 Territory 參數。

從篩選器列對話方塊在輸入小工具內選取的 Territory 參數的螢幕擷取畫面。

選取 [確定] 之後,請注意圖表檢視已在新建立的參數與使用中的查詢之間建立連結。 不僅如此,資料預覽現在還向您顯示 中東 地區的資訊。

此螢幕擷取畫面展示了 dimension_city 查詢在「中東銷售區域」中的「圖表檢視」、「查詢設定」和「資料預覽」的資料。

參數化目的地

備註

建議您熟悉 Dataflow Gen2 中「資料目的地」的概念,以及從資料目的地和受管理設定的文章中瞭解其混搭指令碼是如何建立的。

在此案例中要參數化的最後一個元件是目的地。 為此,你可以使用 進階資料目的地查詢 編輯功能,直接在資料流編輯器中使用 Power Query M 程式碼修改目標查詢腳本。

彈出式視窗的螢幕擷取畫面,其中包含 dimension_city 查詢語句的資料目的地設定。

在開始之前,先建立一個名為 WarehouseID 的參數。 務必使用你倉庫對應的 ID 作為目前值,並依需求設定,並設定為文字資料型別。

啟用資料目的地查詢的進階編輯

若要直接在資料流編輯器中修改目標查詢,首先需要啟用進階編輯功能:

  1. 從功能區的主頁籤選擇選項。

  2. 在 選項 對話框中,往下滑到 資料目的地 區塊。

  3. 勾選「 啟用資料目的地查詢的進階編輯」勾選框。

  4. 會跳出警告對話框說明修改目的查詢可能導致意外行為或中斷資料流。 請仔細閱讀警告並選擇 確定 以確認。

  5. 選擇 確定 以關閉選項對話框。

修改目的地查詢

啟用進階編輯後,你可以存取並修改資料目的地的查詢:

  1. 在 查詢 窗格中,找到顯示你設定目的地的資料目的地區塊。

  2. 右鍵點擊名為 dimension_city 的目標查詢。

  3. 從右鍵選單中,選擇 進階編輯器。

目的查詢如下:

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 硬編碼。 將這些固定值替換成參數的識別碼,腳本看起來如下:

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 和其他參數以指向對應環境中正確專案的部署管線中使用此模式。