演習 - lookup 演算子を使ってテーブルの結果を結合する

完了

前の演習では、join 演算子を使って製品ごとの総売上を取得しました。 この演習では、lookup 演算子を使用して国/地域ごとの総売上を取得します。

lookup 演算子を使用します

営業チームは、会社の国/地域ごとの総売上を知りたいと考えています。 join 演算子を使って、顧客と製品の情報を取得できます。 ただし、この種のクエリは、lookup 演算子を使ってこの情報を取得する場合に、パフォーマンスが最もよくなります。

lookup 演算子は、"ディメンション" テーブルのデータを使って "ファクト" テーブルをエンリッチすることを思い出してください。 これは、本 (ファクト テーブル) を読みながら、わからない単語を辞書 (ディメンション テーブル) で調べるようなものです。

このクエリの場合は、SalesFact テーブルから始めて、lookup 演算子を使って Customer データを取得し、結果のテーブルにそれを追加します。

次の手順では、lookup 演算子を使用した結果について理解を深めるために、クエリを段階的に作成します。

  1. 次のクエリを実行し、SalesFact テーブルと Customers テーブルから 10 個の一致する任意の行を取得します。

    クエリを実行する

    SalesFact
    | lookup Customers on CustomerKey
    | take 10
    

    結果の一覧を確認します。 結果のテーブルには、SalesFact テーブルの列の後に Customers テーブルの一致する列が含まれていることに注目してください。

  2. 次のクエリを実行して、国/地域ごとの総売上を取得します。

    クエリを実行する

    SalesFact
    | lookup Customers on CustomerKey
    | summarize TotalSales = count() by RegionCountryName
    | order by TotalSales desc
    

    結果は次の図のようになるはずです。

    国/地域ごとの総売上のクエリと結果を含む lookup 演算子のスクリーンショット。

  3. 結果の一覧を確認します。 上位の売上が米国内でのものであることに注目してください。 クエリを変更して、米国の総売上を州別に表示してみましょう。

前のユニットでは、"右外部" join を使用して製品カテゴリごとの総売上を取得しました。 そのクエリの実行には 0.834 秒かかりました。 今度は、lookup 演算子を使用して同じ結果を取得するクエリを記述した後、その実行時間を比較します。

  1. 次のクエリを実行します。

    クエリを実行する

    SalesFact
    | lookup Products on ProductKey
    | summarize TotalSales = count() by ProductCategoryName
    | order by TotalSales desc
    

    結果は次の図のようになるはずです。

    製品ごとの合計売上のクエリと結果を含む lookup 演算子のスクリーンショット。

    同じ結果が得られますが、実行時間は 0.398 秒であることがわかります。 実行時間が短くなるのは、lookup 演算子がこの種のクエリ用に最適化されているためです。