Microsoft Fabric での SQL から KQL への移行:開発者のためのガイド
By Mirko Peters ·
Microsoft Fabric で SQL から KQL に移行する方法を解説する開発者向けガイドです。句の対応関係、構文の違い、時系列クエリを扱います。
Automatically translated with AI from the original post. Read the English original

従来の SQL から Microsoft Fabric の Kusto Query Language(KQL)へ分析ワークロードを移行するのは、データベース管理者にとって負担に感じられるかもしれません。本ガイドでは、SQL の句と KQL オペレーターの直接的な対応関係を解説します。既存のデータベースの知識を活かし、初期の学習コストを抑えながら、高速な時系列データの調査に取り組めるようにすることが目的です。
重要なポイント
- KQL では、クエリの先頭にテーブル名を記述することで、SQL の「FROM」句に相当する指定を行います。
- KQL のパイプ記号(|)は一連の処理を順番につなぎます。これは、クエリエンジンがデータを論理的に処理する流れを反映しています。
- SQL の「SELECT」は KQL の「project」オペレーターに、「GROUP BY」の処理は「summarize」に直接対応します。
- Microsoft Fabric には組み込みの変換支援機能があり、開発者は実用的なコマンドの対応例を使って試しながら学べます。
- 本番環境で使える KQL クエリを書くには、大文字と小文字の区別と、時間単位でのビニング(binning)を理解することが欠かせません。
SQL から KQL への考え方の転換
Microsoft Fabric で KQL データベースを初めて開くと、最初の5分ほどは構文に違和感を覚えるかもしれません。従来の SQL では、多くの場合「SELECT」から始め、データソースとなるテーブルを文の途中の「FROM」句で指定します。KQL はこの流れを完全に逆転させます。
KQL では、必ずテーブル名から始めます。テーブル名が service_events であれば、それが最初の行になります。クエリを囲む余分なキーワードはありません。テーブルを指定したら、以降の処理はすべてパイプ記号(|)でつなぎます。この書き方により、クエリを上から下へ自然に読めます。たとえば「すべてのイベントを取得し、失敗したものだけを残し、時間単位で件数を数え、問題の多い順に並べる」という流れです。
SQL の句と KQL オペレーターの対応
SQL の知識は、障壁ではなく橋渡しとして活用してください。Fabric のイベントハウスで使われる Kusto エンジンには、ほぼすべての標準的な SQL 操作に直接対応する機能があります。ただし、テレメトリーやログ分析に最適化された順序で記述します。
データのサンプリングと射影
不慣れなテーブルを調べる際、SQL では行数を制限したクエリを書くことがあるでしょう。KQL では take オペレーターを使用します。service_events | take 10 を実行すると、列名、日付形式、ステータス値を確認するための少数のレコードが得られます。
SQL の「SELECT」文に相当する特定の列の選択には、KQL では project オペレーターを使用します。重要なのは、project がクエリの流れの後半で処理される点です。射影の際に列名をその場で変更することもできます。これは、エンジニアリングチーム以外の関係者向けにレポートを作成する場合に非常に役立ちます。
フィルターと属性の拡張
KQL で行を絞り込むには where オペレーターを使用します。複数の where 条件を別々の行に続けて書けるため、複雑なロジックを扱う際のクエリの読みやすさが大きく向上します。
service_events | where timestamp > ago(24h) | where status_code == 500
データに分析に必要な特定の属性がない場合、extend 演算子を使うと、基になるソーステーブルを変更せずに一時的な計算列を作成できます。未加工のエラー文字列から値を抽出したり、タイムスタンプを分類して今後の集計に備えたりする場合に最適です。
集計と時系列データの処理
SQL でデータをグループ化するには「GROUP BY」句が必要です。KQL では、件数、平均、最小値、最大値などのグループ化された計算はすべて summarize 演算子で行います。たとえば、サービス名ごとに失敗件数を数える場合は次のようになります。
service_events | summarize failure_count = count() by service_name
Fabric でログやテレメトリを扱う場合、多くは時間が主要なグループ化の軸になります。KQL では bin() 関数を使って、タイムスタンプを時間単位や 5 分単位などの一定間隔にまとめられます。これにより、膨大でノイズの多い個々のトランザクションログが、整理された実用的なタイムラインに変わります。
まとめと次のステップ
Microsoft Fabric で KQL を習得すると、リアルタイム インテリジェンス、テレメトリ監視、ログ分析における強力な機能を活用できるようになります。既存の SQL の知識をパイプラインに適した KQL 演算子に対応づけることで、トラブルシューティングの時間を短縮し、ストリーミング データから即座に価値を引き出せます。これらのイベント ハウスやリアルタイム分析エンジンの全体的なアーキテクチャをさらに深く知るには、エピソード全編を聴いて、専門家の知見と実践的な戦略をご覧ください。