Power BI サービス上に複数用意したデータフローをデータセットから参照する際に、テスト用、本番用など参照するデータフローを切り替えたい時があります。データフローIDをパラメータに入れることで、いちいちPower BI デスクトップを使って差し替える必要がなくなります。
データフローを用意する
今回はテストなので、適当なワークスペースで「空のテーブル」から市外局番テーブルのようなものを作りました。ちなみに、市外局番の列は「テキスト型」にしておかないと先頭の0が消えてしまいます。足したり引いたりする必要がない数字は「テキスト型」にしておきましょう。
三点リーダーから.jsonのエクスポートします。
もういちど新規>ワークフロー から、今度は「モデルのインポート」を選びます。
ダイアログからさっきエクスポートした.jsonファイルを選択します。
ワークスペースに戻ると、同名のデータフローができています。
紛らわしいので名前を変えます。三点リーダーから「プロパティ」を選択します。
ここでデータフローの名前を変えられます。ちなみに、名前が変わってもデータフローのIDは変わらず。Power BIはデータソースとしてデータフローを使う場合には、フローの名前ではなくデータフローIDを参照しているので、後で変更しても問題ありません。
保存して準備完了です。
2つのデータフローの中身が同じだと面白くないので、テストDataFlow2のほうは、中身のテーブルを修正して、変化がわかりやすくしておきます。
Power BI Desktop からテストDataFlow1へ接続する
テストDataFlow1のほうのテーブルを選択します。こちらは東京、大阪、名古屋ですね。
[ホーム]>[パラメーターの管理]>[新しいパラメーター]を開きます。
クエリを選択した状態で[ホーム]>[詳細エディタ]をクリックします。
[dataflowId="*******"]となっている部分のID文字列をコピーしておきます。
[ホーム]>[パラメーターの管理]>[新しいパラメーター]を開きます。
パラメーターに名前を付けて、テキスト、任意の値を選択します。現在の値には、先ほどコピーしたデータフローIDを張り付けておきます。
さきほど値を取得した部分をパラメーターに差し替えます。データフローIDを囲っていたダブルクォーテーションは不要です。
{[dataflowId=データフローID]}[Data]
エラーが出なければ、PowerQueryの画面は閉じて適用します。テーブルの内容を適当に表示させました。ここまで出来たら、保存してワークスペースへ「発行」しましょう。
Power BI サービスでデータセットの設定を開く
「発行」したら、Power BI Desktopで保存した名前のレポートとデータセットがワークスペース上に表示されます。データセットの三点リーダーから「設定」をクリックします。
設定画面からパラメーターの項目を確認すると、Power BI Desktopで作成したパラメーター名とその値が表示されています。ということは・・・
テストDataFlow2のデータフローIDを取得して利用する
もういちどワークスペースに戻って、今度はテストDataFlow2のほうを、名前の部分をクリックして開きます。
テストDataFlow2を開いた際のURLをよく見ると、groupsの後ろ(緑の部分)と、dataflowsの後ろ(青の部分)にIDらしきものが見えます。緑部分はワークフローIDで、青の部分はデータフローIDです。データフローIDをコピーしておきます。
ふたたびデータセットの設定画面からパラメーターを開き、先ほどコピーしたデータフローIDに差し替えて「適用」をクリックします。
パラメーターを差し替えたら、いちどデータセットの「更新」をかけます。そのあとでレポートを開いてみると・・・
先ほどまではテストDataFlow1の内容だったのが、テストDataFlow2の内容に差し変わりました。
ダイレクトクエリならデータセットの更新も不要
今回はデータセットからデータフローにインポート接続していましたが、データフローの設定で「コンピューティングエンジンの拡張設定を「オン」にした状態でデータフローを更新し、データセットからデータフローにダイレクト接続していた場合には、データセットの更新すら必要ありません。
本番とテスト用のデータフローなど切り替えに便利
パラメーターを使ってWEB上のデータセットを直接操作できるととても便利です。以前に大きなデータを取り扱う際に一時的に小さなデータだけを読み込んで処理を早くする方法を紹介しましたので、そちらも参考にしていただけると嬉しいです。
https://qiita.com/DaddyDaddy/items/c16228be486772ed18f0
良いPower BIライフを!