Microsoft FabricでBIへのデータ取り込みをImport方式からDirect Lake方式に変更する
会社の取り組みとしてZennへの投稿を積極的に行っています。
以下の記事で紹介したように、APIを利用してMicrosoft Fabricで投稿状況を可視化しています。
年が変わったということもあって、メンテナンスも兼ねてFabric内の構成も変更しました。
変更に至った背景
1. Dataflow Gen2がやけに容量を食って困っている
現在社内の勉強用はF2プランを使用しています。
プラン的には1番下というのはあるものの、スケールオーバーエラーが頻発するようになりました。
Microsoft Fabric Capacity Metricsで調査してみたところ、Dataflow Gen2が圧倒的に容量を消費していました。
そもそもDataflow Gen2を使用していた理由は、サービス的な仕様をキャッチアップするためというのもありますが、
BI DesktopでMicrosoft Fabric環境にあるデータを取り込むためにはDataflow Gen2を使わざるを得ませんでした。(1年前はね)
2. Power BI DesktopでもDirectLakeを使用できるようになった
BIレポートはPower BI Desktopで作成しています。
理由はテーマカラーの設定がBI Desktopじゃないとできないからです。
上記の記事を作成した約1年前は、まだDirect Lakeでのデータ取り込み方法がBI Desktopで出来ませんでした。(気がする...)
しかし久しぶりに更新情報やBI Desktopのことを調べたらどうやら出来るようになっていました。
使用するセマンティックモデルはBI Serviceで作成が必要ですが、その後の編集もBI Desktop側で出来るようです。
3. 単なる好奇心
Direct Lakeという第3の取り込み方法が登場してから気になってはいたものの試す機会がなかったので、ちょうど良い機会だなと。
ImportとDirect Lakeの違い
そもそもデータの取り込み方法はImportとDirect Lakeともう一つDirect Queryがあります。
それぞの違いがこちら。
Import方式
使用する元データをBI側に一度取り込む方法。
BI側に取り込んでからの使用になるため、データの量が多いとメモリを多く消費してしまいます。
元データを直接参照しているわけではないので、リアルタイム性がありません。
そのため1日に何度か更新をかけないと最新の情報がBIに反映されません。
リアルタイム性が求められるようなBIレポートには不向きです。
しかし、BIレポートを開く度に毎回データを取得してくる必要がないため、BIでの描画速度は1番速いです。
それ以外にもImport方式じゃないと使用できないBIのビジュアル(Q&A機能)とか一部メジャーもあったりします。
Direct Query方式
BIレポートを開くたびに元データに直接アクセスして取得する方式。
そのためリアルタイムな情報をBIレポートに反映することができます。
BI側に取り込む必要もないため、データの容量に制限がありません。
しかし毎回元データにクエリを実行して取得するため、取得するデータ量が増えたりクエリの実行回数が増えると著しくパフォーマンスが低下してしまいます。
また元データへの依存度が高いこともあって、予期せぬエラーが起きがちです。
BIの描画スピードという点ではImport方式より圧倒的に遅いです。
Direct Lake方式
最近登場した第3の方式で、データをインポートしたりクエリを実行したりする必要なく、直接parquent形式のファイルを読み込みます。
Deltaテーブルの更新情報を検知して、OneLakeにある最新のparquentファイルを参照する仕組みなので、ほぼリアルタイムな情報をBIレポートに表示することができます。
OneLakeのparquestファイルを参照して最新の情報を取得しつつ、メモリ内キャッシュを使用するため描画速度も速いです。
またImport方式では取り込めないような量の大規模データも取り込みが可能です。
方法
1. セマンティックモデルの作成
Lakehouseに既にデフォルトのセマンティックモデルがありますが、こちらは使用しません。
Direct Lakeを使用したい場合はデフォルトのセマンティックモデルではなくて、別途新規で作る必要があるらしいです。
Microsoft Fabricにアクセスして、Lakehouseを開く。
「新しいセマンティックモデル」を選択。
セマンティックモデルの名前の入力と使用したいTableを選択して、作成する。
ここでリレーションシップを設定したり、メジャーを作成したりします。
BI Desktopのモデルビューでやっていることと同じ作業です。
ちなみにテーブルの上部がこのような模様になっていると、Direct Lake方式でデータが取り込まれているという印になります。
上部が青線のみだったら、Direct Query方式、何も線がなかったらImport方式です。
2. BI Desktop側でDirect Lakeを使用する設定
プレビュー状態なので、設定からオンにする必要があります。
Power BI Desktopを立ち上げて、左下の「オプションと設定」→「オプション」を選択。
「Live edit of ...Direct Lake mode」にチェックを付ける。
チェックを反映するために、Power BI Desktopを再起動してください。
3. BI Desktop側でデータを取り込む
既にImport方式でデータを取り込んでいる場合は、Direct Lakeでのデータ取り込みが出来ない?っぽいので、Import方式で取り込んでいるデータを削除する必要があります。
※もしかしたらですが僕は出来ませんでした、、、
「One Lakeデータハブ」を選択。
先ほどBI Serviceで作成したセマンティックモデルが出てくると思うので、選択して接続する。
これでモデルビューにデータが取り込まれたと思います。
感想
Direct LakeはImportとDirect Query両者の長所を兼ね備えている方式というわけではないです。
描画速度という面だとImportの方が速いし、計算列や計算テーブルも使用できません。
リアルタイム性もDirect Queryには劣るようです。
正直今回のZennの投稿状況を可視化するBIレポートではImport方式が最適かと思いました。
要件に応じて使い分けていく必要があります。
Discussion