DAX での反復関数の操作

DAX での反復関数の操作

フォーラムで LuckyTemplates メンバーと作業するたびに、DAX で関数を反復する際に混乱が生じることがあります。そこで、これらの関数を使用して何が実現できるのか、またなぜそれらの関数を使用する必要があるのか​​を確認します。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。

DAX数式に詳しくなると、これらの反復関数を思ったよりも頻繁に使用するようになります。これらは、 SUMAVERAGEのような単純な集計関数よりもはるかに多用途です。

ここにはいくつかの例があります。これらの数式を介してロジックを実行すると実際に何が起こるかをよく理解できるように、これらの各例のロジックを詳しく見ていきたいと思います。

関数の反復で重要なことは、関数が何かを反復することです。

目次

SUMX を使用した単純な反復

DAX での反復関数の操作

この場合、何かを集計したいのですが、この Sales テーブルのすべての行を反復処理したいと考えています。

DAX での反復関数の操作

そして、すべての単一行で、この特定のロジックをここで実行したいと考えています。

DAX での反復関数の操作

非常に単純な Sales テーブルにすぐにジャンプしましょう。ここでは、すべての単一行でロジックを実行します。次に、数量と価格を掛けたいと思います。

DAX での反復関数の操作

この表には価格が存在しません。この特定のモデルについては、実際には Product テーブルにあります。

DAX での反復関数の操作

次に行う必要があるのは、 Product テーブルに戻ることです。これはRELATEDを使用して実行できます。数量と関連する価格の積を計算する場合、これを単一行ごとに実行します。これはまさにこの式の内部で起こっていることです。

これらは、より高度な作業を開始するときに覚えておくべき重要な概念です。

SUMX を使用して売上を獲得するための別のアプローチ

DAX での反復関数の操作

この例では、SUMXでSales テーブルを再度反復処理します。したがって、そのロジックをすべての単一行で実行し、すべての単一行で数量と価格を掛けて計算し、すべての反復が完了したらそれを集計します。

DAX での反復関数の操作

この結果は、最初の例 (SUMX チュートリアル 2) または合計売上高の結果とまったく同じであることがわかります。

ここにはさまざまなものを配置できます。メジャーにすることも、反復関数で分岐させることもできます。実際に計算を正しく行うために、特定の列を参照する必要はありません。

DAX での反復関数の操作

ここでわかるように、ここでメジャー (総売上高) を配置するだけで、まったく同じ結果が得られます。

SUMX と論理関数

DAX での反復関数の操作

ここではSUMX を使用していますが、AVEAGEXMINX、およびMAXXにも関連します。それらはすべて非常に似たものです。

これらの反復関数で覚えておくべきもう 1 つの重要な点は、単一行ごとにロジックを実行し、結果をメモリに保存することです。

これらすべての値がメモリに保存されると、 SUMAVERAGEなどの包括的な計算が実行されます。

DAX での反復関数の操作

例に戻ると、この列の金額が前の列よりわずかに少ないことがわかります。

DAX での反復関数の操作

SUMX反復関数を使用して、Sales テーブルのすべての行を反復処理したいと考えています。そして、すべての行で、その特定の売上が 2,000 ドルを超えているかどうかを計算したいと考えています。そうであれば、その行の合計売上高を計算したいと思います。ただし、売上総額が 2000 ドル未満の場合は、ゼロを返したいと考えています。したがって、より価値の高い売上のみを計算したいと考えています。

ロジックを計算列の中に入れればいいのではないかと提案する人もいます。ただし、このロジックを列内に物理的に配置するよりも、DAX内でこのロジックを実行する方がはるかに優れた方法があるため、このようなことは行いません。

テーブルの反復処理

ここが反復関数の素晴らしいところです。以前のように物理テーブルを反復処理できるだけでなく、パラメータとして入力した他の仮想テーブルを反復処理することもできます。

DAX での反復関数の操作

ここでのすべての結果には特定のコンテキストがあると考えます。この特定のケースでは、顧客のコンテキストがあります。

DAX での反復関数の操作

このコンテキストで、すべての場所を反復処理して、特定の顧客が 5,000 ドルを超える売上に達したかどうかを確認したいと考えています。

そうであれば、総売上高を計算したいと思います。しかし、そうでない場合は、ゼロを返すようにします。

DAX での反復関数の操作

したがって、この特定のケースでは、この顧客が購入している高額の場所と、それらの場所での総売上高を計算しています。

DAX での反復関数の操作

ここでVALUESが行っていることは、仮想テーブルを作成していることです。したがって、ここではSUMXは物理的な作業を行っていません。実際には、完全に仮想的なものに取り組んでいます。

MINX を使用した単純な反復

DAX での反復関数の操作

これは前の例と似ていますが、 SUMXの代わりに、すべての単一行を反復処理した後で、他のタイプの集計を実行します。

DAX での反復関数の操作

この特定のケースでは、各顧客のすべての場所を調べて、それらの場所ごとの総売上高を計算しています。

DAX での反復関数の操作

次に、購入した場所の最小限の金額を返金したいと考えています。

MAXX を使用した単純な反復

DAX での反復関数の操作

ここでも、反復関数の多用途性を示すために、同様のことを行っています。私はすべての拠点を調べて売上を調べていますが、その拠点の売上の最大値を返しています。それが、ここでより高い数字が見られる理由です。

結論

この記事で私が触れたかった重要な点は、反復関数内で使用できるオプションの範囲と、単純な合計または平均についてです。

より複雑な計算を掘り下げ始めると、コンテキスト レベルで値を返すためにこれらの特定の関数がいかに重要であるかがわかります。

パラメーターの操作方法さえ知っていれば、単純な式を使用してこれらの計算を実行できる汎用性と方法が非常に豊富です。

これらの反復関数について楽しく学習できた場合は、次のリンクを参照して、このトピックに関する詳細情報を取得できます。

LuckyTemplates で関数を反復するための重要な概念

仮想テーブルによるロジックの反復 – LuckyTemplates の高度な DAX 概念

この作業を楽しんでください。


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