注
この記事では、変数ライブラリの統合に依存し、CI/CD がサポートされている Dataflow Gen2 にのみ適用される、Dataflow Gen2 の CI/CD および ALM (アプリケーション ライフサイクル管理) ソリューション アーキテクチャのソリューション アーキテクチャに焦点を当てています。
Dataflow Gen2 のファブリック変数ライブラリを使用すると、環境全体で一元的で再利用可能な構成管理が可能になります。 データフロー スクリプトで変数を直接参照することで、値をハードコーディングせずに動的に動作を調整できます。これは CI/CD ワークフローに最適です。 この統合により、ワークスペース固有の値 (Lakehouse やワークスペース ID など) を実行時に挿入できるため、ステージ間でのデプロイが簡素化され、データフローの適応性と保守性が向上します。
このチュートリアルでは、データフローで変数参照を使用するソリューションの例について説明し、次の方法を示します。
- 変数の設定: Fabric 変数ライブラリとその個別のデータ型を使用する
- 変数駆動型ソース: WideWorldImpoters サンプル データセットをソースとして使用した Lakehouse の使用
- 変数駆動型ロジック: データフロー エクスペリエンス全体で使用できる入力ウィジェットの使用
- 変数駆動型の宛先: 倉庫を宛先として使用する
注
この記事で紹介する概念は、Dataflow Gen2 に共通であり、ここに示されている以外のソースと宛先にも適用できます。
シナリオ
このシナリオで使用されるデータフローは単純ですが、説明されているコア 原則はすべての種類のデータフローに適用されます。 これは、Lakehouse に格納されている Wide World Importers サンプル データセットから dimension_city という名前のテーブルに接続します。 SalesTerritory 列が Southeast と等しい行をフィルター処理し、結果を Warehouse の City という新しいテーブルに読み込みます。 すべてのコンポーネント (Lakehouse、Warehouse、Dataflow) は、同じワークスペースに配置されます。 データフローを動的にするには、変数を使用して、ソース テーブル、フィルター値、および変換先テーブルを駆動します。 これらの変更により、ハードコーディングされた値ではなく、Fabric 変数ライブラリに格納されている値を使用してデータフローを実行できます。
変数を設定する
注
組織またはセキュリティ グループに対して Fabric 変数ライブラリが有効になっていることを確認します。 変数ライブラリの使用を開始する方法の詳細について説明します。
ベスト プラクティスとして、ソリューションを作成する前に設計を念頭に置き、データフローのコンポーネントが変数ライブラリから動的にソース化されることを常にお勧めします。 ワークスペース内に複数のライブラリを作成できますが、この例では、Dataflow Gen2 で使用される変数を保持する My Library という名前の 1 つのライブラリを使用します。
| 変数名 | タイプ | 目的 |
|---|---|---|
| WorkspaceId | Guid | データフローのデータソーススクリプトと宛先スクリプトに使用されます |
| LakehouseId | Guid | ソースとして使用されている Lakehouse の ID を決定します |
| WarehouseId | Guid | 使用する宛先ウェアハウスのIDを特定します。 |
| 領土 | String | データフローでフィルター ロジックを駆動するために使用する値を設定します。 |
独自の環境に対応する既定値を設定し、変数ライブラリを保存してください。
変数駆動ソース
いずれかの Fabric コネクタ (Lakehouse、Warehouse、Fabric SQL など) を使用する場合、それらはすべて同じナビゲーション構造に従い、同じ入力形式を使用します。 このシナリオでは、接続を確立するために手動入力を必要とするコネクタはありません。 ただし、それぞれが、クエリのナビゲーション手順を通じて接続するワークスペースと項目を示します。 たとえば、最初のナビゲーション ステップには、クエリが接続する workspaceId が含まれます。
目標は、数式バーのハードコーディングされた値を変数に置き換することです。 具体的には、 変数 WorkspaceId と LakehouseId を使用してこのロジックを実行します。 まず、これらの変数を Dataflow Gen2 に取り込む必要があります。 使用する予定の変数を一元化して簡単に管理できるように、個別の変数ごとにクエリを作成することをお勧めします。 そのためには、リボンの [ データの取得 ] エントリに移動し、ドロップダウン メニューから [空のクエリ] オプションを選択して、空のクエリを作成します。
このオプションを選択すると、新しいダイアログが表示され、作成された空のクエリを確認できます。 [OK] を選択すると、この新しい空のクエリを表示できます。
クエリが作成され、データフローに表示されたら、その名前を WorkspaceId に変更し、ソース ステップの数式を次のように置き換えます。
Variable.ValueOrDefault("$(/**/My Library/WorkspaceId)", "Your Workspace ID")
このスクリプトは基本的に、フェッチするライブラリと変数を決定できるスクリプトです。
Variable.ValueOrDefault関数の 2 番目の引数は、変数をフェッチできない場合に提供する値を決定します。
注
関数の 2 番目の引数 である "Your Workspace ID" の文字列を、環境内の独自の対応する値に置き換えて、クエリを保存してください。
LakehouseId 変数に対してこのプロセスを繰り返し、変数と同じ名前のクエリを作成しますが、ソース ステップには次の式を使用します。
Variable.ValueOrDefault("$(/**/My Library/LakehouseId)", "Your Lakehouse ID")
注
必ず、関数の 2 番目の引数 である "Your Lakehouse ID" の文字列を、環境内の独自の対応する値に置き換えて、クエリを保存してください。
両方のクエリが作成されたら、ハードコーディングされた値の代わりに使用するようにクエリ スクリプトを更新できます。 これには、数式バーの元の値を 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"
また、関連するすべてのクエリの間でダイアグラム ビューで作成された直接参照を使用して、データフロー エディターのデータ プレビューが正しく評価されていることがわかります。
可変駆動ロジック
ソースで変数が使用されたので、データフローの変換ロジックの変更に集中できます。 このシナリオでは、フィルター ステップはロジックが適用される場所であり、フィルター処理される値 (現在 は南東部としてハードコーディング) は、変数を参照するクエリに置き換える必要があります。 これを行うには、新しい空白のクエリを作成するのと同じプロセスを繰り返し、そのソース ステップの数式を再利用して Territory の変数を保持し、クエリの名前を変数名に変更します。 次のスクリプトを使用します。
Variable.ValueOrDefault("$(/**/My Library/Territory)", "Mideast")
ユーザー インターフェイスを使用してフィルター ステップが作成された場合は、[フィルター処理された行] ステップに移動し、それをダブル選択して、フィルター ステップの設定ダイアログを取得できます。 このダイアログでは、静的な値の代わりにクエリを使用する場合は、入力ウィジェットを使用して選択できます。
[ クエリの選択] オプションを選択すると、ドロップダウンが表示され、選択できるすべてのクエリが表示されます。 この一覧から、新しく作成された Territory クエリを選択できます。
[OK] を選択すると、ダイアグラム ビューによって Territory クエリと使用中のクエリの間のリンクが既に作成されていることに注意してください。 それだけでなく、データ プレビューに 中東 地域の情報が表示されるようになりました。
可変駆動行き先
注
Dataflow Gen2 のデータ変換先の概念と、データ変換先と管理設定に関する記事からマッシュアップ スクリプトがどのように作成されるかを理解することをお勧めします。
このシナリオで変更する最後のコンポーネントは、変換先です。 これを行うには、 データ変換先クエリの高度な編集 機能を使用します。これにより、Power Query M コードを使用して、データフロー エディターで直接変換先クエリ スクリプトを変更できます。
開始する前に、 WarehouseId 変数のクエリを作成します。 前のセクションで説明したのと同じプロセスに従って、新しい空のクエリを作成し、ソース ステップの数式を置き換えます。
Variable.ValueOrDefault("$(/**/My Library/WarehouseId)", "Your Warehouse ID")
注
必ず、関数の 2 番目の引数 である "Your Warehouse ID" の文字列を、環境内の独自の対応する値に置き換えて、クエリを保存してください。
Important
変数を保持するすべてのクエリでステージングが無効になっていることを確認します。
データ変換先クエリの高度な編集を有効にする
データフロー エディターで宛先クエリを直接変更するには、まず高度な編集機能を有効にする必要があります。
リボンの [ホーム] タブから [オプション] を選択します。
[ オプション] ダイアログで、[ データ変換先 ] セクションまで下にスクロールします。
[データ変換先クエリの高度な編集を有効にする] チェック ボックスをオンにします。
宛先クエリを変更すると、予期しない動作が発生したり、データフローが中断されたりする可能性があることを説明する警告ダイアログが表示されます。 警告をよく読み、[ 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 が機能しなくなります。 その変換先に対してさらに変更を加える場合は、引き続き高度なエディターを使用する必要があります。 詳細については、「 データ変換先クエリの高度な編集」を参照してください。
変数ライブラリの値を使用するデータフローを実行できるようになりました。