Microsoft Fabric内のPower BIでデータをImport方式で取得できるようにする
やりたいこと
以下の記事でFabricのNotebook上で作成したテーブルをBIに取り込んで、可視化することができました。
しかし、取得方法がDirectQueryのため、表示速度が遅いです。
可視化している内容はリアルタイムな情報を見るわけではないので、そもそもDirectQueryである必要がありません。
ビジュアルもたくさん使っているためImport方式に変えたいです。
実装
前提
「やりたいこと」にある、以下の記事をベースに修正を加えます。
1. Notebook上ではCSVファイルの作成までにする
元々Notebookでは、
- ZennAPIを叩いてデータ取得
- 必要なデータのみ取り出してCSVファイルを作成
- Tableを作成
をしてましたが、「3」の内容を全て無くします。
Tableを作成している処理は全てコメントアウトします。
2. Dataflowを使用してテーブルを作成
新たにDataflowを活用します。
「Dataflow(Gen2)」を選択
名前も適当につけておく
「データを取得」の一番下にある「詳細」を選択
「OneLake データ ハブ」から対象のレイクハウスを選択
CSVファイルは「ファイル」フォルダ内にあるので、階層を下げる
今回は全てのCSVファイルを選択する
「作成」をクリックすることで、データが取り込まれると思います。
ヘッダーがずれているので設定します。
1行目を選択
「1行目をヘッダーとして使用」 を選択
ヘッダーが意図したものに変更されました。
次にデータの同期先(テーブルの作成)の設定をします。
右下の「データ同期先」のプラスボタンから「レイクハウス」を選択
本来は新しいテーブルを作ることになると思いますが、今回は既にテーブルがあるので「既存のテーブル」を選択して、同じ名前のテーブル名を選択します
更新方法は「置換」、列マッピングは合ってるのでそのままにします
以下のように問題なく設定できていることを確認
名前もテーブル名と同じにしたいので、「csv」を削除
全てのテーブル設定ができたら「公開」を選択して、Dataflowの設定は完了です。
3. BI側ではDataflowから取得する
以前はFabric側で作成したセマンティックモデルを読み込んでましたが、Dataflowからに変わります。
そのため、各テーブルとのリレーション・DAXはPower BI Desktop側で作り込む必要があります。
Power BI Desktopの上部から「データを取得」を選択
「Microsoft Fabric」内にある「データフロー」を選択
対象のデータフローをクリックして、テーブルを全て選択
「データの読み込み」をクリック
データを取り込めました。
データの変換はPower Queryからも出来るのですが、Dataflow側で既に整形しているし、両方で色々手加えると管理が大変なのでPower Query側では何もしないようにします。
左上の「閉じて適用」を選択
モデルビューからリレーションを作成します。
以前作成したセマンティックモデルを参考に再度設定します
Daxも以前作ったものを参考(コピペ)で作成
できた。
表示速度もめちゃくちゃ速くなりました。
DirectQueryが10秒以上かかったのに対して、Importは1秒ほどで表示されます。
Import方式に変えるだけで速度はかなり変わる
今回のようにリアルタイムのデータを見たいわけではない、ビジュアルを沢山使う、1日2,3回程度の更新で大丈夫な場合はImport方式がいいと思います。
Discussion