演習 - lookup 演算子を使ってテーブルの結果を結合する
前の演習では、join
演算子を使って製品ごとの総売上を取得しました。 この演習では、lookup
演算子を使用して国/地域ごとの総売上を取得します。
lookup
演算子を使用します
営業チームは、会社の国/地域ごとの総売上を知りたいと考えています。 join
演算子を使って、顧客と製品の情報を取得できます。 ただし、この種のクエリは、lookup
演算子を使ってこの情報を取得する場合に、パフォーマンスが最もよくなります。
lookup
演算子は、"ディメンション" テーブルのデータを使って "ファクト" テーブルをエンリッチすることを思い出してください。 これは、本 (ファクト テーブル) を読みながら、わからない単語を辞書 (ディメンション テーブル) で調べるようなものです。
このクエリの場合は、SalesFact テーブルから始めて、lookup
演算子を使って Customer データを取得し、結果のテーブルにそれを追加します。
次の手順では、lookup
演算子を使用した結果について理解を深めるために、クエリを段階的に作成します。
次のクエリを実行し、SalesFact テーブルと Customers テーブルから 10 個の一致する任意の行を取得します。
SalesFact | lookup Customers on CustomerKey | take 10
結果の一覧を確認します。 結果のテーブルには、SalesFact テーブルの列の後に Customers テーブルの一致する列が含まれていることに注目してください。
次のクエリを実行して、国/地域ごとの総売上を取得します。
SalesFact | lookup Customers on CustomerKey | summarize TotalSales = count() by RegionCountryName | order by TotalSales desc
結果は次の図のようになるはずです。
結果の一覧を確認します。 上位の売上が米国内でのものであることに注目してください。 クエリを変更して、米国の総売上を州別に表示してみましょう。
前のユニットでは、"右外部" join
を使用して製品カテゴリごとの総売上を取得しました。 そのクエリの実行には 0.834 秒かかりました。 今度は、lookup
演算子を使用して同じ結果を取得するクエリを記述した後、その実行時間を比較します。
次のクエリを実行します。
SalesFact | lookup Products on ProductKey | summarize TotalSales = count() by ProductCategoryName | order by TotalSales desc
結果は次の図のようになるはずです。
同じ結果が得られますが、実行時間は 0.398 秒であることがわかります。 実行時間が短くなるのは、
lookup
演算子がこの種のクエリ用に最適化されているためです。