1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft Fabric で Dataflow Gen2 のパラメーターを Pipeline から動的に渡して実行する方法

1
Posted at

背景

image.png

Dataflow Gen2 ではパラメーターを利用することで、データフロー本体を都度作り替えなくても、入力値や処理対象を柔軟に切り替えられます。
そのため、用途ごとに似たようなデータフローを複数作成するのではなく、1 つのパラメーター化された Dataflow Gen2 を再利用しながら運用しやすくなります。

また、Fabric Pipeline から複数の Dataflow Gen2 をオーケストレーションし、Pipeline 側で定義したパラメーターを各データフローへ受け渡すことで、処理内容を動的に切り替えることもできます。

本記事では、こうしたシナリオをハンズオン形式で確認します。
あわせて、データソースが SQL Server の場合に、Dataflow Gen2 からカスタム SQL を利用しつつ、パラメーターをどのように扱えるかも確認します。

参考記事

https://learn.microsoft.com/ja-jp/fabric/data-factory/dataflow-parameters
https://learn.microsoft.com/ja-jp/fabric/data-factory/dataflow-gen2-parameterized-dataflow
https://learn.microsoft.com/en-us/powerquery-m/value-nativequery

なお、今回のシナリオでは SQL Server をデータソースとして利用するため、Dataflow Gen2 からカスタム SQL を実行する際に Value.NativeQuery を使用します。

参考


手順

1. 新規 Dataflow Gen2 を作成する

image.png

2. データフロー名を指定する

image.png

3. パブリック パラメーター モードを有効にする

参考: https://learn.microsoft.com/ja-jp/fabric/data-factory/dataflow-parameters

Dataflow Gen2 で定義したパラメーターを Pipeline から参照・上書きできるようにするため、パブリック パラメーター モードを有効にします。

image.png
image.png

4. パラメーターを定義する

image.png

今回はサンプルとして、以下の 2 つのパラメーターを定義します。

  • df_paramDB1 = SalesStarDW
    • 接続先のデータベース名
  • df_paramTable1 = DimProduct
    • 接続先のテーブル名

image.png
image.png

5. データを取得する

データを取得するボタンを選択します。

image.png

6. 空のクエリを選択する

今回は Power Query で直接クエリを記述するため、空のクエリを選択します。

image.png

7. 事前に定義したパラメーターをクエリで利用する

事前に定義した df_paramDB1df_paramTable1 を使って、以下のようにクエリを記述します。

let
    Source = Sql.Database("DB接続情報.xxx.azure.com", df_paramDB1),
    Result =
        Value.NativeQuery(
            Source,
            "SELECT * FROM dbo."& df_paramTable1 &""
        )
in
    Result

このクエリでは、接続先のデータベース名とテーブル名をパラメーターとして指定しています。
そのため、Dataflow Gen2 側で定義した値を変更することで、取得対象を切り替えられるかを確認できます。

今回は検証用のシナリオとして、Dataflow Gen2 で受け取ったパラメーターがクエリに反映されることを確認します。
image.png

8. 接続エラーが発生した場合は接続設定を確認する

接続エラーが表示された場合は、接続の構成 をクリックして、接続先や認証情報の設定を確認します。

image.png

接続情報を入力し、対象のデータソースへ接続します。

image.png

接続が成功すると、対象テーブルのプレビューが表示されます。

image.png

9. データの同期先を指定する

次に、取得したデータの書き込み先を設定します。

image.png

今回は、書き込み先として Lakehouse を選択します。

image.png

一度 戻る ボタンを押して、対象の Lakehouse を選択します。

image.png
image.png

宛先となる Lakehouse では、事前に定義した df_paramTable1 をテーブル名として指定します。

image.png

まずは既定の自動設定のままで保存します。

image.png

10. Dataflow Gen2 を保存する

これで Dataflow Gen2 の設定は完了です。最後に忘れず保存します。

image.png
image.png


Pipeline から Dataflow Gen2 をオーケストレーションする

続いて、作成した Dataflow Gen2 を Pipeline から呼び出して実行します。

11. Dataflow Gen2 を実行する Pipeline を作成する

image.png

image.png

12. データフロー アクティビティを追加する

Pipeline にデータフロー アクティビティを追加します。

image.png

その後、先ほど作成した Dataflow Gen2 を選択します。

image.png

ここでは、Dataflow Gen2 側で定義したパラメーターが自動的に認識され、Pipeline 側から値を設定できることを確認できます。

image.png

13. 検証して実行する

設定内容を確認したうえで、Pipeline を実行します。

image.png

実行前の Lakehouse は、まだテーブルが存在しない状態です。

image.png

実行中の状態です。

image.png

処理が正常に完了しました。

image.png

実行後、Lakehouse にテーブルが追加されたことを確認できます。

image.png


応用編:もう 1 つの Dataflow Gen2 を追加する

次に、別の Dataflow Gen2 を追加し、Pipeline 側のパラメーターを使って動的に値を渡す構成を確認します。

image.png

14. Pipeline にパラメーターを定義する

既存の Pipeline にパラメーターを追加します。

image.png

以下のような形でパラメーターを定義します。

image.png

15. 新しく作成した Dataflow Gen2 を Pipeline に追加する

既存の Pipeline に、新しく作成した Dataflow Gen2 を追加します。

image.png

16. Pipeline のパラメーターを動的コンテンツとして設定する

ここでは、Pipeline 側で定義したパラメーターを Dataflow Gen2 に動的コンテンツとして渡します。

image.png

候補としてパラメーターが表示されるため、対象を選択します。

image.png

OK をクリックして設定を反映します。

image.png

同様に、他のパラメーターも動的コンテンツとして設定します。

image.png

image.png

17. 実行する

設定が完了したら、Pipeline を実行します。

image.png

image.png

実行前の Lakehouse の状態です。

image.png

Pipeline の実行が成功しました。

image.png

実行後、Lakehouse に新しいテーブルが追加されたことを確認できます。

image.png


まとめ

今回は、Dataflow Gen2 のパラメーターを公開し、Pipeline からその値を渡して処理対象を動的に切り替える流れを確認しました。

今回のポイントは次のとおりです。

  • Dataflow Gen2 側でパラメーターを定義し、パブリック パラメーター モードを有効にする
  • Pipeline から Dataflow Gen2 を呼び出すと、定義済みパラメーターを利用できる
  • Pipeline 側でパラメーターを定義すると、動的コンテンツとして Dataflow Gen2 に値を渡せる
  • SQL Server をデータソースとする場合でも、Value.NativeQuery を活用してクエリ内でパラメーターを利用できる

Dataflow Gen2 単体でも柔軟なデータ取り込みは可能ですが、Pipeline と組み合わせることで、より再利用性の高い構成にしやすくなります。
複数の取り込みパターンを整理したい場合にも、有効な方法の 1 つです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?