本記事では、「Microsoft Fabric」の機能の一つである、Real Time Intelligenceを利用し、次の流れでサンプルデータをストリーミングしたリアルタイムデータを可視化する手順を解説します。
- KQL DB作成
- Eventstreamでサンプルデータ(ロンドン市内のレンタル自転車データ)をKQL DBへ取り込み
- KQL クエリセット作成
- KQL クエリセットからPower BIレポート作成
※Fabric は試用版を使用しています
なお、Microsoft Fabricでは、KQL(Kusto 照会言語)を使ってテーブルへのKQLクエリの実行が可能です。
KQL データベースはリアルタイム分析ソリューションに最適化されているため、リアルタイム(数秒以内)にデータを活用したいといったような、低レイテンシの要件を満たすために最適です。
KQLデータベースの作成
データベースの作成
Microsoft Fabric ポータルで、Real-Time Intelligence を選択します。
※Microsoft Build 2024以降、Real-Time Analytics (RTA)から、Real-Time Intelligence (RTI) に変更され、UIも変わりました
イベントハウスをクリックします。
Eventhouse名を入力して「作成」をクリックします。
KQL databaseの右側の+マークをクリックして新規のKQLデータベースを作成します。
今回は自転車のサンプルデータを使うため、「bike_sample_DB」という名前で作成します。
左ペインで作成されたことを確認します。
OneLakeフォルダーの有効化
上記画面の、OneLakeフォルダ:非アクティブ の右にある鉛筆マークをクリックします。
※デフォルトでは、OneLake フォルダが非アクティブになっているので有効にします。 後でも変更できますが、設定が有効化された後に作成されたテーブルのみがOneLakeに保存されます。
アクティブを有効化し「完了」をクリックします。
アクティブになったことを確認します。
EventstreamでサンプルデータをKQL DBへストリーミング
Eventstreamの作成
次に、先ほど作成したKQLデータベースにサンプルデータを格納するためのEventstreamを作成します。
Get data、Eventstreamを選択して、New Eventstreamをクリックします。
任意の名前を入力して「作成」をクリックします。
Eventsreamsが作成されます。
ソースデータの設定
今回はFabricであらかじめ用意されているロンド市内のレンタルバイクデータをソースとして使用します。
New sourceをクリックしSample dataを選択します。
任意のソース名を入力し、Sample dataにBicycleを選択します。
左のボックスがActiveになっていることを確認します。
画面下部のData previewをクリックするとサンプルデータの中身を確認できます。
sampleデータの中身を簡単に説明すると以下のとおりです
- BikepointID: バイクのレンタルポイントの一意の識別子です。各バイクレンタルポイントには固有のIDが割り当てられています。
- Street: バイクレンタルポイントの所在地の通りの名前です。
- Neighbourhood: バイクレンタルポイントが位置する地域または近隣地域の名前です。
- Latitude: バイクレンタルポイントの緯度座標です
- Longitude: バイクレンタルポイントの経度座標です
- No_Bikes: バイクレンタルポイントに現在ある利用可能な自転車の数です。
- No_Empty_Docks: バイクレンタルポイントに現在ある利用可能な空きドック(バイクの駐車スペース)の数です。
これらのカラムは、バイクレンタルポイントの位置、利用可能な自転車の数、および空きドックの数など、ロンドン市内のバイクレンタルポイントに関する情報を提供します。
このサンプルデータを上記のデータを1分間隔で連携してます。
サンプルデータの格納先を設定する
次に、データの格納先を設定します。
右側のKQL Databaseのボックスをクリックします。
Direct ingestion にチェックし、任意のDestination name を入力し、作成したKQL データベースを指定します。
+新しいテーブルをクリックします。
任意のテーブル名を入力し、「次へ」をクリックします。
「終了」をクリックします。
補足: この画面で、右上の「列の編集」を選択すると以下の画面が表示され、不要なカラムの削除やカラムの追加などが可能です。
データ準備がすべてチェックマークになったら「閉じる」をクリックします。
これでサンプルデータをKQLデータベースに格納するEventstreamが完成しました。
KQLクエリによるデータ参照
レンタルバイクポイントのデータをリアルタイムにKQLデータベースに格納できたのでKQLクエリを使ってテーブルの中身を参照します。
左下のReal-Time intelligenceをクリックして、メニューからReal-Time intelligenceをクリックしてトップ画面に戻ります。
KQLクエリセットをクリックします。
KQL Queryset名に任意の名前を入力して「作成」をクリックします。
「Connect」をクリックします。
デフォルトのクエリが表示されます。
クエリの内容は下記の通りです。
YOUR_TABLE_HERE の箇所を作成したKQLテーブル名に書き換えれば、そのままクエリを実行できます。
クエリが記載されている箇所にカーソルを持ってくると自動でクエリが薄い水色で選択された状態になります。
この状態でShift+Enterもしくは、 Run をクリックでクエリを実行します。
いくつかqueryを実行してみます。
//空きドッグが20つ以上あるバイクレンタルポイントの情報を取得
bike_sample_table
| where No_Empty_Docks >= 20
毎分連携されるサンプルデータはKQLデータベースに追加されていくため、上記のようなクエリだと過去のデータも取得してしまいます。
また、同一のバイクレンタルポイントの情報が表示されており、どれが最新の情報か分からないため、直近の1分で連携されたデータに対象を絞りたいと思います。
連携されてくるデータには連携時間を表すタイムスタンプ情報はありませんが、ingestion_time() を使用すると、レコードの取り込みが完了したおおよその datetime を返してくれます。
参考:
ingestion_time() - Azure Data Explorer & Real-Time Analytics | Microsoft Learn
//空きドッグが20以上あるバイクレンタルポイントの情報を取得
bike_sample_table
| where ingestion_time() > ago(1m)
| where No_Empty_Docks >= 20
過去1分以内で空きドッグ数が20以上あるバイクレンタルポイントが表示できました。
//利用可能な自転車数が最も多いバイクレンタルポイント トップ5を取得
bike_sample_table
| where ingestion_time() > ago(1m)
| top 5 by No_Bikes desc;
次に、全部で120か所あるバイクレンタルポイント最新情報を表示させます。
//各バイクレンタルポイントの最新情報取得
bike_sample_table
| where ingestion_time() > ago(5m)
| extend ingestionTime = ingestion_time()
| summarize max_ingestionTime = max(ingestionTime) by BikepointID, Street, Neighbourhood, Latitude, Longitude, No_Bikes, No_Empty_Docks
| order by max_ingestionTime desc
PowerBIでの可視化
クエリを選択した状態で、Power BIレポートを構築 をクリックします。
選択したクエリの結果をデータとしてPowerBIで扱うことができます。 視覚化からマップをクリックします。
データを設定していきます。
- 場所
- Neighbourhood(バイクレンタルポイントが位置する地域の名前 )
- Street(バイクレンタルポイントの所在地の通りの名前 )
- 凡例:BikepointID
- 緯度:Latitude
- 経度:Longitude
- ヒント:
- No_Bikes
- No_Empty_Docks
テーブルをクリックし、列に以下を追加します。
- BikepointID
- Street
- No_Bikesの合計
- No_Empty_Docksの合計
ダッシュボードが作成されました。利用可能な自転車が一番多いBikepointIDを選択します。
フィルタリングがかかり、マップが該当のBikePointsの箇所にクローズアップされます。次はマップ側のポイントをクリックしてみます。
テーブル側にフィルタリングがかかり、クリックしたバイクレンタルポイントの現在の利用可能自転車の台数と利用可能な空きドック(駐車スペース)の数が確認できます。
まとめ
今回ご紹介したように、Microsoft Fabricではサンプルデータを使って簡単にデモができるので、本記事を参考にして触ってみることをおすすめします。
土山 和也(日本ビジネスシステムズ株式会社)
ユーザーサポート、開発、運用、構築業務を経験し、現在はアーキテクトとして提案・プロジェクト支援に従事。専門はデータベースでDBA歴十数年。Azure/AWSを担当。
担当記事一覧