CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

関数がどのように動作するかを学習します。

CROSSJOIN 関数を使用すると、2 つのテーブルのデカルト積を作成できます。デカルト積は、2 つ以上のテーブルの行のすべての可能な組み合わせのセットです。

このチュートリアルでは、以下のDAX コードを使用します。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

これらの組み合わせの一部がファクト テーブルに存在しない場合でも、CROSSJOIN 関数の結果、製品のブランドと色の組み合わせが得られることがわかります。これにより、合計 176 行を含むテーブルが作成されます。

[サーバー タイミング] タブでは、最初のクエリは Products テーブルからブランドを取得し、2 番目のクエリは色を取得します。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

Logical Query Planでは、最初の行はテーブルの形式で結果を返します。製品テーブルの 2 行目と 3 行目は、それぞれ色とブランドをスキャンします。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

データを受信すると、数式エンジンはテーブルを反復処理し、両方の列の組み合わせを生成します。2 行目の CrossApply は、CROSSJOIN 関数に対応します。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

目次

DAX での CROSSJOIN 結果のフィルター

関数を使用して、CROSSJOIN の結果をフィルタリングできます。たとえば、赤色の製品のみを表示するために使用できます。

ただし、FILTER 引数内に CROSSJOIN 関数を配置できないことに注意してください。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

このコードを実行して [サーバー タイミング] タブを確認すると、フィルター コンテキストがクエリ内の WHERE 句として表示されていないことがわかります。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

CROSSJOIN 関数は、Formula Engineによってのみ解決できます。このコードは、 Storage Engineによってのみ解決できる関数である FILTER との間にあるため、機能しません。したがって、CROSSJOIN により、これら 2 つの関数間のループが中断されました。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

したがって、フィルターを機能させるには、CROSSJOIN 引数内に FILTER 関数を配置する必要があります。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

このコードを実行して [サーバー タイミング] タブを確認すると、FILTER 関数が WHERE 句で表されていることがわかります。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

論理クエリ プランでは、フィルター演算子の代わりにフィルター VertiPaqが使用されていることがわかります。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

これは、コード内の新しいフィルター条件をストレージ エンジンにプッシュダウンできるためです。結果が返された後、CROSSJOIN 引数がフォーミュラ エンジン内で実行されます。

IN オペレーター

FILTER 引数で等号の代わりに演算子を使用することもできます。

IN 演算子を FILTER 関数の式引数内で使用すると、値が値のリスト内に含まれるかテーブル内に含まれるかに基づいてテーブルをフィルタリングできます。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

FILTER – IN の組み合わせを使用する場合、DAX エンジンは製品の色が赤か黒かを確認するIsEmptyフィルターを実行する必要があります。

CROSSJOIN DAX 結果に Total Sales 列を追加

他の関数も CROSSJOIN と併用できます。

関数を使用してテーブルに別の列を追加し、表示する情報の引数を記述することができます。

この例では、Total Sales 列を追加してみましょう。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

コードを実行すると、結果は依然として 176 行を返します。ただし、一部の組み合わせでは、[総売上高] 列の値が空白になります。これは、これらの組み合わせには Sales テーブルに対応する行がないためです。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

[サーバー タイミング] タブで、コードは最初にブランドと色を選択します。次に、数量と販売正味価格の積を合計します。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

この場合、DAX エンジンはまず、Products テーブル内に存在するブランドと色のすべての組み合わせを、Sales テーブル内の対応する行と合わせて取得します。次に、ブランド列と色の列を別々に取得します。

物理クエリ プランでは、2 つのデータ キャッシュが表示されます。1 つはブランド用、もう 1 つは色用です。合計レコードを乗算すると、176 行になります。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

次に、それらの 176 行に対して検索が実行され、Sales テーブルに対応する値があるかどうかが確認されます。111 行のみに値があることがわかります。残りの 65 行は空白を返します。

さらに、CROSSJOIN 引数にさらに列を追加すると、結果としてさらに多くの行が返されます。

CROSSJOIN DAX 関数: サーバーのタイミングとクエリ プラン

結論

DAX CROSSJOIN 関数は、あるテーブルの行と別のテーブルの行を結合して、新しいテーブルを生成します。この関数は SQL の CROSS JOIN 句に似ており、データ モデルでより複雑なクエリを作成するために使用できます。

2 つ以上のテーブルからすべての可能な値の組み合わせのリストを生成できます。また、多数の行を含む新しいテーブルを迅速に作成するために使用することもできます。これは、データ分析、テスト、またはパフォーマンスのベンチマークに役立ちます。

全体として、CROSSJOIN 関数は、複数のテーブルのデータを結合したり、すべての可能な組み合わせのリストを生成したりする必要があるシナリオで便利なツールです。

ではごきげんよう、


Python における Self とは: 実際の例

Python における Self とは: 実際の例

Python における Self とは: 実際の例

RでRDSファイルを保存してロードする方法

RでRDSファイルを保存してロードする方法

R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。

最初の N 営業日の再考 – DAX コーディング言語ソリューション

最初の N 営業日の再考 – DAX コーディング言語ソリューション

この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。

LuckyTemplates のフィルター コンテキストの概要

LuckyTemplates のフィルター コンテキストの概要

この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。

LuckyTemplates を使用したビジネス レポート

LuckyTemplates を使用したビジネス レポート

これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて