Power BIの参照するデータフローをパラメーターで切り替える

Power BI サービス上に複数用意したデータフローをデータセットから参照する際に、テスト用、本番用など参照するデータフローを切り替えたい時があります。データフローIDをパラメータに入れることで、いちいちPower BI デスクトップを使って差し替える必要がなくなります。
# データフローを用意する
今回はテストなので、適当なワークスペースで「空のテーブル」から市外局番テーブルのようなものを作りました。ちなみに、市外局番の列は「テキスト型」にしておかないと先頭の0が消えてしまいます。足したり引いたりする必要がない数字は「テキスト型」にしておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/c283bf2d-061a-8992-22dc-ce76a191d964.png)
三点リーダーから.jsonのエクスポートします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/17ea88b3-d102-0605-d7c7-acc6cd623184.png)
もういちど新規＞ワークフロー　から、今度は「モデルのインポート」を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/a04be690-c50d-6cae-0252-307efa221f37.png)
ダイアログからさっきエクスポートした.jsonファイルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/78c7ab5d-3bea-efce-5b0b-683055079394.png)
ワークスペースに戻ると、同名のデータフローができています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/913e43d5-8e1b-3e8e-ade2-2a7d45f2b909.png)
紛らわしいので名前を変えます。三点リーダーから「プロパティ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/37fb26d9-bade-6987-6b2d-023c8fe97b9e.png)
ここでデータフローの名前を変えられます。ちなみに、名前が変わってもデータフローのIDは変わらず。Power BIはデータソースとしてデータフローを使う場合には、フローの名前ではなくデータフローIDを参照しているので、後で変更しても問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/e1b1e364-22e4-96d0-fcaf-3565d7e9a364.png)
保存して準備完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/d4cc930c-2c6a-9403-c38b-4baaf93a9744.png)
２つのデータフローの中身が同じだと面白くないので、テストDataFlow2のほうは、中身のテーブルを修正して、変化がわかりやすくしておきます。

# Power BI Desktop からテストDataFlow1へ接続する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/bf0b44d7-c5e0-ef72-7a05-31f18476c4d7.png)
テストDataFlow1のほうのテーブルを選択します。こちらは東京、大阪、名古屋ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/34505469-6ee3-3fac-0b1e-5bcad422a41c.png)
[ホーム]>[パラメーターの管理]>[新しいパラメーター]を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/218be569-15b2-a451-e3c9-ecd2eefc0649.png)

クエリを選択した状態で[ホーム]>[詳細エディタ]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/cce86a5f-532e-e690-3fc5-f1221c37b01e.png)
[dataflowId="*******"]となっている部分のID文字列をコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/13d5773d-3115-1fc5-045d-b2f3cf787d10.png)
[ホーム]>[パラメーターの管理]>[新しいパラメーター]を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/218be569-15b2-a451-e3c9-ecd2eefc0649.png)
パラメーターに名前を付けて、テキスト、任意の値を選択します。現在の値には、先ほどコピーしたデータフローIDを張り付けておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/e1af0301-b82b-407d-9b57-4fd4be0e5881.png)
さきほど値を取得した部分をパラメーターに差し替えます。データフローIDを囲っていたダブルクォーテーションは不要です。
`{[dataflowId=データフローID]}[Data]
`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/09356493-5b64-8fee-4fdb-e8601254e24c.png)
エラーが出なければ、PowerQueryの画面は閉じて適用します。テーブルの内容を適当に表示させました。ここまで出来たら、保存してワークスペースへ「発行」しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/a3c027c8-b7e8-7da6-ad2a-75fe1536c1a5.png)
# Power BI サービスでデータセットの設定を開く
「発行」したら、Power BI Desktopで保存した名前のレポートとデータセットがワークスペース上に表示されます。データセットの三点リーダーから「設定」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/a30f931d-80a2-7433-0d9a-f4582ef6cf65.png)
設定画面からパラメーターの項目を確認すると、Power BI Desktopで作成したパラメーター名とその値が表示されています。ということは・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/fb3b0dc6-81b4-ffab-b986-689a86c5d6a7.png)
# テストDataFlow2のデータフローIDを取得して利用する
もういちどワークスペースに戻って、今度はテストDataFlow2のほうを、名前の部分をクリックして開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/fb85bbdd-c553-34a6-c1aa-0f693e1fa5a4.png)
テストDataFlow2を開いた際のURLをよく見ると、groupsの後ろ（緑の部分）と、dataflowsの後ろ（青の部分）にIDらしきものが見えます。緑部分はワークフローIDで、青の部分はデータフローIDです。データフローIDをコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/791faba8-0241-9b78-e381-8f839d2cbf1a.png)
ふたたびデータセットの設定画面からパラメーターを開き、先ほどコピーしたデータフローIDに差し替えて「適用」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/811d4a1a-78d1-345d-6e15-901bb71107c6.png)
パラメーターを差し替えたら、いちどデータセットの「更新」をかけます。そのあとでレポートを開いてみると・・・
先ほどまではテストDataFlow1の内容だったのが、テストDataFlow2の内容に差し変わりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/5d9671e7-91af-c4d5-4246-ef0941def2c2.png)
# ダイレクトクエリならデータセットの更新も不要
今回はデータセットからデータフローにインポート接続していましたが、データフローの設定で「コンピューティングエンジンの拡張設定を「オン」にした状態でデータフローを更新し、データセットからデータフローにダイレクト接続していた場合には、データセットの更新すら必要ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285141/97a9597f-68af-7426-8601-6147146c1e4e.png)
# 本番とテスト用のデータフローなど切り替えに便利
パラメーターを使ってWEB上のデータセットを直接操作できるととても便利です。以前に大きなデータを取り扱う際に一時的に小さなデータだけを読み込んで処理を早くする方法を紹介しましたので、そちらも参考にしていただけると嬉しいです。
https://qiita.com/DaddyDaddy/items/c16228be486772ed18f0

良いPower BIライフを！