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 関数は、複数のテーブルのデータを結合したり、すべての可能な組み合わせのリストを生成したりする必要があるシナリオで便利なツールです。

ではごきげんよう、

Leave a Comment

Power Automate の文字列関数: Substring と IndexOf

Power Automate の文字列関数: Substring と IndexOf

Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates ツールチップを使用すると、より多くの情報を 1 つのレポート ページに圧縮できます。効果的な視覚化の手法を学ぶことができます。

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を作成し、データを受信する方法を学んでいます。

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で簡単に日付テーブルを作成する方法について学びましょう。データの分析と視覚化のための効果的なツールとして活用できます。

2 つの方法による SharePoint 列の検証

2 つの方法による SharePoint 列の検証

SharePoint 列の検証の数式を使用して、ユーザーからの入力を制限および検証する方法を学びます。

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel ファイルおよび CSV ファイルにエクスポートする方法を学び、さまざまな状況に最適なエクスポート方法を決定できるようにします。

Power Automate のオンプレミス データ ゲートウェイ

Power Automate のオンプレミス データ ゲートウェイ

ユーザーがコンピューターから離れているときに、オンプレミス データ ゲートウェイを使用して Power Automate がデスクトップ アプリケーションにアクセスできるようにする方法を説明します。

DAX 数式での LASTNONBLANK の使用

DAX 数式での LASTNONBLANK の使用

DAX 数式で LASTNONBLANK 関数を使用して、データ分析の深い洞察を得る方法を学びます。

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

LuckyTemplates で予算分析とレポートを実行しながら、CROSSJOIN 関数を使用して 2 つのデータ テーブルをバインドする方法を学びます。

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

このチュートリアルでは、LuckyTemplates TREATAS を使用して数式内に仮想リレーションシップを作成する方法を説明します。