注
この記事では、パブリック パラメーター モード機能に依存し、CI/CD がサポートされている Dataflow Gen2 にのみ適用される、Dataflow Gen2 の CI/CD および ALM (アプリケーション ライフサイクル管理) ソリューション アーキテクチャのソリューション アーキテクチャについて説明します。
Fabric Dataflow Gen2 のパラメーターを使用すると、データフローの設計方法を形成する再利用可能な入力を定義できます。 パブリック パラメーター モード では、これらの入力をパイプラインまたは API を介して実行時に設定できます。 単一のデータフローは柔軟性が高く、汎用性が高く、さまざまな値を渡すだけで多くのシナリオで同じロジックを再利用できるため、変換を書き換えたり複製したりする必要なく、動的で自動化されたワークフローを実現できます。
このチュートリアルでは、次の方法を示す例について説明します。
- ソースのパラメーター化: WideWorldImpoters サンプル データセットをソースとして Lakehouse を使用する
- パラメーター化ロジック: データフロー エクスペリエンス全体で使用できる入力ウィジェットの使用
- 宛先のパラメーター化: 宛先としてウェアハウスを使用する
- パラメーター値を使用して実行要求を送信する: Fabric パイプライン内のデータフロー アクティビティ エクスペリエンスを通じてパラメーター値を渡す
注
この記事で紹介する概念は、Dataflow Gen2 に共通であり、ここに示されている以外のソースと宛先にも適用できます。
シナリオ
このシナリオで使用されるデータフローは単純ですが、説明されているコア 原則はすべての種類のデータフローに適用されます。 これは、Lakehouse に格納されている Wide World Importers サンプル データセットから dimension_city という名前のテーブルに接続します。 SalesTerritory 列が Southeast と等しい行をフィルター処理し、結果を Warehouse の City という新しいテーブルに読み込みます。 すべてのコンポーネント (Lakehouse、Warehouse、Dataflow) は、同じワークスペースに配置されます。 データフローを動的にするには、ソース テーブル、フィルター値、および変換先テーブルをパラメーター化します。 これらの変更により、ハードコーディングされた値ではなく、特定の値でデータフローを実行できます。
先に進む前に、[ ホーム ] タブに移動し、[ オプション] を選択し、[ パラメーター ] セクションで、[パラメーターの検出とオーバーライドを有効にする] というラベルの付いたボックスをオンにして 、実行 中にデータフローがパラメーターを受け入れるようにします。
ソースのパラメーター化
いずれかの Fabric コネクタ (Lakehouse、Warehouse、Fabric SQL など) を使用する場合、それらはすべて同じナビゲーション構造に従い、同じ入力形式を使用します。 このシナリオでは、接続を確立するために手動入力を必要とするコネクタはありません。 ただし、それぞれが、クエリのナビゲーション手順を通じて接続するワークスペースと項目を示します。 たとえば、最初のナビゲーション ステップには、クエリが接続する workspaceId が含まれます。
目的は、数式バーのハードコーディングされた値をパラメーターに置き換することです。 具体的には、 WorkspaceId 用に 1 つのパラメーターを作成し、 LakehouseId 用に別のパラメーターを作成する必要があります。 パラメーターを作成するには、リボンの [ ホーム ] タブに移動し、[ パラメーターの管理] を選択し、ドロップダウン メニューから [ 新しいパラメーター ] を選択します。
パラメーターを作成するときは、両方とも 必須 としてマークされ、 テキスト 型に設定されていることを確認します。 現在の値には、特定の環境の対応する値と一致するものを使用します。
両方のパラメーターが作成されたら、ハードコードされた値の代わりに使用するようにクエリ スクリプトを更新できます。 これには、数式バーの元の値をワークスペース ID パラメーターと Lakehouse ID パラメーターへの参照に手動で置き換える必要があります。 元のクエリ スクリプトは次のようになります。
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"
データフロー エディターでデータ プレビューが正しく評価されていることがわかります。
ロジックのパラメーター化
ソースでパラメーターが使用されたので、データフローの変換ロジックのパラメーター化に重点を置くことができます。 このシナリオでは、フィルター ステップはロジックが適用される場所であり、現在 は南東部としてハードコーディングされているフィルター処理される値をパラメーターに置き換える必要があります。 これを行うには、Territory という名前の新しいパラメーターを作成し、そのデータ型を テキストに設定し、必須ではないとしてマークし、現在の値を Mideast に設定します。
ユーザー インターフェイスを使用してフィルター ステップが作成された場合は、[フィルター処理された行] ステップに移動し、それをダブル選択して、フィルター ステップの設定ダイアログを取得できます。 このダイアログでは、静的な値の代わりにパラメーターを使用する場合は、入力ウィジェットを使用して選択できます。
[ パラメーターの選択] オプションを選択すると、ドロップダウンが表示され、必要なデータ型に一致するすべての使用可能なパラメーターが表示されます。 この一覧から、新しく作成された Territory パラメーターを選択できます。
[OK] を選択すると、ダイアグラム ビューによって、新しく作成されたパラメーターと使用中のクエリの間のリンクが既に作成されていることに注意してください。 それだけでなく、データ プレビューに 中東 地域の情報が表示されるようになりました。
変換先をパラメーター化する
注
Dataflow Gen2 のデータ変換先の概念と、データ変換先と管理設定に関する記事からマッシュアップ スクリプトがどのように作成されるかを理解することをお勧めします。
このシナリオでパラメーター化する最後のコンポーネントは、変換先です。 これを行うには、 データ変換先クエリの高度な編集 機能を使用します。これにより、Power Query M コードを使用して、データフロー エディターで直接変換先クエリ スクリプトを変更できます。
開始する前に、 WarehouseId という名前のパラメーターを作成します。 ウェアハウスの対応する ID を現在の値として使用し、必要に応じて設定し、テキスト データ型に設定してください。
データ変換先クエリの高度な編集を有効にする
データフロー エディターで宛先クエリを直接変更するには、まず高度な編集機能を有効にする必要があります。
リボンの [ホーム] タブから [オプション] を選択します。
[ オプション] ダイアログで、[ データ変換先 ] セクションまで下にスクロールします。
[データ変換先クエリの高度な編集を有効にする] チェック ボックスをオンにします。
宛先クエリを変更すると、予期しない動作が発生したり、データフローが中断されたりする可能性があることを説明する警告ダイアログが表示されます。 警告をよく読み、[ OK] を 選択して確認します。
[ OK] を 選択して [オプション] ダイアログを閉じます。
変換先クエリを変更する
高度な編集を有効にした後は、データ変換先の宛先クエリにアクセスして変更できます。
クエリウィンドウで、設定済みのデータ宛先セクションを示す部分を見つけてください。
dimension_cityという名前の宛先クエリを右クリックします。
コンテキスト メニューの [詳細エディター] を選択します。
宛先クエリは次のようになります。
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
[ OK] を 選択して、詳細エディターに変更を保存します。
Important
高度な編集を使用して変換先クエリを変更した後、その変換先を変更するための標準 UI が機能しなくなります。 その変換先に対してさらに変更を加える場合は、引き続き高度なエディターを使用する必要があります。 詳細については、「 データ変換先クエリの高度な編集」を参照してください。
データ変換先と、追加された以前のパラメーター参照を確認することで、すべての変更が行われているかどうかを確認できます。 これにより、データフローのすべてのパラメーター化が完了し、実行用のパラメーター値を渡すことで、データフローの実行に進むことができます。
パラメーター値を使用して要求を実行する
Fabric REST API を使用して、その特定の実行操作のパラメーター値を含むカスタム ペイロードを含む実行要求を送信できます。また、REST API を使用してデータフロー パラメーターを検出し、データフローが期待する内容を理解して、実行をトリガーすることもできます。 このチュートリアルでは、Fabric パイプラインのデータフロー アクティビティ内にあるエクスペリエンスを使用します。 まず、パイプラインを作成し、キャンバスに新しい データフロー アクティビティ を追加します。 アクティビティの設定で、データフローが配置されているワークスペースを見つけて、ドロップダウンから [データフロー] を選択します。
[データフロー パラメーター] セクションを展開すると、データフローで使用可能なすべてのパラメーターとその既定値を表示できます。 ここでは、任意の値を置き換えることができます。渡された値は、データフローの実行を評価するために使用するソース、ロジック、および変換先を定義するために使用されます。 新しい Warehouse を作成し、評価のために WarehouseId を変更するか、対応する環境内の正しい項目を指すように WorkspaceId やその他のパラメーターを渡す必要があるデプロイ パイプラインでこのパターンを使用して、新しいシナリオを試すこともできます。