UNION DAX 関数とパワークエリの比較

このチュートリアルでは、 UNION 関数を使用したDAX 最適化手法を学習します。このチュートリアルでは、UNION 関数のパフォーマンスと、Power Queryおよびテーブルを結合するその他の手法のパフォーマンスを比較します。

関数は、行を結合し、重複する行を削除することにより、2 つのテーブルを 1 つのテーブルに結合します。

このチュートリアルの例は、年ごとに 3 つのテーブル (2007、2008、2009) に分割された Sales テーブルです。

目次

DAX の UNION 関数

DAX Studioを開き、サーバー タイミングとクエリ プランを起動します。

UNION DAX 関数とパワークエリの比較

以下の DAX コードが例として使用されます。

UNION DAX 関数とパワークエリの比較

コードを実行した後、[サーバー タイミング]タブに移動します。コードの実行には合計 5.4 秒かかることがわかります。実行時間のほとんどはストレージ エンジンで費やされました。これら 3 つのクエリにはそれぞれ同じ操作が含まれていますが、年が異なります。

UNION DAX 関数とパワークエリの比較

これら 3 つのクエリがストレージ エンジンによって返された後、フォーミュラ エンジンはUNION を実行します。これは論理クエリ プランで確認できます。クエリ プランは、合計売上を計算するためにも実行します。

UNION DAX 関数とパワークエリの比較

物理クエリ プランでは、Sales テーブルで各年に実行された操作を含む 3 つのデータ キャッシュを確認できます。

UNION DAX 関数とパワークエリの比較

DAX パフォーマンスの比較

比較を構築するには、元の Sales テーブルを使用して Total Sales のメジャーを作成しましょう。

UNION DAX 関数とパワークエリの比較

このコードを実行して[サーバー タイミング]タブに移動すると、これが UNION 関数よりも大幅に効率的であることがわかります。

UNION 関数は 97.9 KB を消費しますが、新しいメジャーは 1 KB しか消費しません。

UNION DAX 関数とパワークエリの比較

UNION を使用すると、DAX エンジンは大量のデータ キャッシュを数式エンジンに返します。これにより、RAM に大きな負荷がかかります。

したがって、100 万行を超えるデータ モデルを扱っている場合は、UNION 関数を使用することはお勧めできません。

UNION DAX 関数の代替

この例では、UNION を使用する代わりに 3 つの SUMX 関数を使用できます。つまり、各年に 1 つの SUMX 関数です。

UNION DAX 関数とパワークエリの比較

このコードを実行して [サーバー タイミング] タブに移動すると、実行時間が大幅に短縮されていることがわかります。3 つの異なるクエリを実行しながら、所要時間は 5,400 ミリ秒から 33 ミリ秒に短縮されました。

UNION DAX 関数とパワークエリの比較

もう 1 つの方法は、Power Query またはデータ ソース自体にデータ モデル テーブルを追加することです。

ただし、最善のオプションは、これら 3 つのテーブルの結合を実行する計算テーブルを作成することです。しかし、このオプションには長所と短所があります。

計算テーブルを使用すると、Power Query で追加を実行するのとは対照的に、全体の処理時間を節約できます。ただし、これにより VertiPaq のデータベース サイズが増加します。

計算テーブルを使用すると、3 つのテーブルを結合した新しいテーブルが作成されます。ただし、これら 3 つの分割テーブルは引き続きデータベースに残ります。

UNION DAX 関数とパワークエリの比較

この例では、3 つのテーブルが合計 25 MB を消費します。計算テーブルを作成すると、RAM でさらに 25 MB が消費されます。

このような機密性の高いケースでは、取るべき最善の行動について十分な知識に基づいた決定を下す必要があります。

結論

DAX の UNION 関数は 2 つのテーブルを 1 つに結合し、データ分析を容易にします。これは、2 つのテーブルを入力として受け取り、両方の入力テーブルのすべての行を含む新しいテーブルを返すことによって機能します。ただし、この機能には独自の制限があります。

UNION 関数は、特に入力テーブルが大きい場合、データを結合する他の方法よりも遅くなる可能性があります。また、他の代替手段と比較して、ストレージ内でより多くのスペースを消費する可能性があります。

状況によってテーブルを結合する必要がある場合は、UNION 関数の使用を決定する前に、まずメリットとデメリットを比較検討することが重要です。代替手段には、SUMX 関数、データ モデル テーブル、または計算テーブルが含まれます。

ではごきげんよう、

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 を使用して数式内に仮想リレーションシップを作成する方法を説明します。