チュートリアル: 複数のテーブルからデータを結合する
複数のテーブルからデータを結合すると、さまざまなソースからの情報を組み合わせ、データ ポイント間に新しいリレーションシップを作成することで、より包括的な分析を行うことができます。 Kusto 照会言語 (KQL) では、結合演算子と参照演算子を使用して、テーブル間でデータを結合します。
このチュートリアルで学習する内容は次のとおりです。
このチュートリアルの例では、一般公開されている ヘルプ クラスターを使用します。 独自のデータを使用して探索するには、 独自の無料クラスターを作成します。
前提条件
- ヘルプ クラスターにサインインするための Microsoft アカウントまたはMicrosoft Entraユーザー ID
join 演算子を使用する
サンプル データベースには、Storm イベントに関連する 2 つのテーブルがあります。 1 つは と呼ばれ StormEvents
、もう 1 つは と呼ばれます PopulationData
。 このセクションでは、テーブルを結合して、1 つのテーブルだけでは不可能なデータ分析を実行します。
データを理解する
take 演算子を使用して、各テーブルに含まれるデータを確認します。
StormEvents
| take 5
次の表は、返される 22 個の列のうち 6 つだけを示しています。
StartTime | EndTime | EpisodeId | EventId | 状態 | EventType | ... |
---|---|---|---|---|---|---|
2007-09-20T21:57:00Z | 2007-09-20T22:05:00Z | 11078 | 60913 | FLORIDA | Tornado | ... |
2007-12-20T07:50:00Z | 2007-12-20T07:53:00Z | 12554 | 68796 | MISSISSIPPI | 雷雨風 | ... |
2007-12-30T16:00:00Z | 2007-12-30T16:05:00Z | 11749 | 64588 | GEORGIA | 雷雨風 | ... |
2007-09-29T08:11:00Z | 2007-09-29T08:11:00Z | 11091 | 61032 | ATLANTIC SOUTH | Waterspout | ... |
2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | FLORIDA | Heavy Rain | ... |
PopulationData
| take 5
出力
State | [母集団] |
---|---|
ALABAMA | 4918690 |
ALASKA | 727951 |
ARIZONA | 7399410 |
ARKANSAS | 3025880 |
CALIFORNIA | 39562900 |
両方のテーブルに列が State
含まれています。 テーブル StormEvents
にはさらに多くの列があり PopulationData
、 には、指定された状態の母集団を含む他の列が 1 つしかありません。
テーブルを結合する
共通State
列の PopulationData
テーブルを とStormEvents
結合して、州別の一人当たりの嵐によって引き起こされたプロパティの損害の合計を見つけます。
StormEvents
| summarize PropertyDamage = sum(DamageProperty) by State
| join kind=innerunique PopulationData on State
| project State, PropertyDamagePerCapita = PropertyDamage / Population
| sort by PropertyDamagePerCapita
クエリに を追加 | render columnchart
して、結果を視覚化します。
ヒント
演算子で実行 join
できる結合には多くの種類があります。 結合フレーバーの一覧を参照してください。
ルックアップ演算子を使用する
ルックアップ演算子は、ファクト テーブルがディメンション テーブルのデータでエンリッチされるクエリのパフォーマンスを最適化します。 これは、ディメンション テーブルで検索された値でファクト テーブルを拡充します。 最適なパフォーマンスを得るためのシステムでは、既定では、左側のテーブルが大きなファクト テーブルであり、右側のテーブルが小さいディメンション テーブルであると想定しています。 これは、join
演算子で使用される仮定とは完全に逆です。
ヘルプ クラスターには、売上データを含む という名前 ContosoSales
の別のデータベースがあります。 次のクエリでは、 を使用lookup
して、このデータベースの テーブルと Products
テーブルをマージSalesFact
して、製品カテゴリ別の売上合計を取得します。
SalesFact
| lookup Products on ProductKey
| summarize TotalSales = count() by ProductCategoryName
| order by TotalSales desc
出力
ProductCategoryName | TotalSales |
---|---|
ゲームと玩具 | 966782 |
テレビとビデオ | 715024 |
カメラとカムコーダー | 323003 |
[Computers (コンピューター)] | 313487 |
家庭電化製品 | 237508 |
オーディオ | 192671 |
携帯電話 | 50342 |
音楽、映画、およびオーディオ ブック | 33376 |
注意
演算子はlookup
、 と inner
の 2 つの結合フレーバーleftouter
のみをサポートします。
クエリによって生成されたテーブルを結合する
結合は、同じテーブルからのクエリ結果に基づいて行うこともできます。
稲妻と雪崩の両方のイベントが発生した状態の一覧を作成するとします。 結合演算子を使用して、2 つのテーブルの行 (1 つは稲妻イベントのデータを含み、もう 1 つは雪崩イベントのデータを含む) の行を State
列に基づいてマージします。
StormEvents
| where EventType == "Lightning"
| distinct State
| join kind=inner (
StormEvents
| where EventType == "Avalanche"
| distinct State
)
on State
| project State
出力
State |
---|
オレゴン |
ユタ 州 |
WYOMING |
WASHINGTON |
コロラド |
アイダホ |
ネバダ |
関連コンテンツ
- さまざまな種類の結合演算子について学習する
- データベース間クエリとクラスター間クエリを実行する方法について説明します
- 地理空間視覚化の作成に関するチュートリアルに従います
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示