LuckyTemplates で反復関数を使用する方法

このチュートリアルでは、さまざまな反復関数と、それらを計算で効率的に使用する方法について説明します。

私は、計算を行うときに計算列がどのように不要であるかをよく議論します。これはイテレータのせいです。

イテレータまたは反復関数を使用すると、結果をテーブルに物理的に入力せずに計算を行うことができます。

この手法は、 LuckyTemplates データ モデルの読み込みに必要なメモリを節約するのに役立ちます。次のセクションでは、反復子を使用して計算を最適化する方法を説明します。

目次

イテレータ関数を使用した総売上高の計算

まず、Total Costsの新しいメジャーを作成します。この新しいメジャーを配置するメジャー グループを必ず選択してください。

最初の反復関数 ( を配置する前に、 Shift キーEnter キーを押して下の行に移動します

LuckyTemplates の数式バーでは、IntelliSense によって提案された関数の後に何を置く必要があるかをすでに正確に確認できます。SUMXの場合は、その後にテーブルを追加する必要があります。

SUMX式は、指定されたテーブルのすべての行でロジックを実行します。これが、イテレータが行コンテキストに関連付けられる理由です。メジャー内では、反復子によって数式を行コンテキストに変換できます。

SUMX関数の後にSalesテーブルを参照する必要があります。合計コストを計算するには、注文数量合計単価を乗算する必要があります。

作成された新しい列を参照する必要はまったくありません。総コストは尺度であり、それをテーブルに組み込んで総コストを評価できます。

次に、メジャーを表内にドラッグして結果を確認します。都市フィルターから初期コンテキストを選択していることを確認してください。

調べたいさまざまな領域をクリックすることで、計算の初期コンテキストを変更できます。

総コストは、初期コンテキストに関しては同様に機能します。初期コンテキストは Sales テーブルに適用されますが、これらの個々の結果では、注文数量と合計単価を乗算した値が計算されます。

データ モデルの舞台裏でフィルターをオンにし、Regions テーブルからのコンテキストと、Date テーブルからの別のコンテキストを取得しています。これらは Sales テーブルに流れ、反復関数 SUMX によってフィルターされます。

SUMX関数はSalesテーブルのすべての行を仮想的に評価するため、結果を得るために物理的な列は必要ありません。

初期コンテキストの後、SUMX は各行の注文数量合計単価の積を取得します。最後に、すべての行からのすべての計算結果を評価します。

お気づきかと思いますが、元のコスト列は計算列を使用して作成されました。すでに述べたように、イテレータはすでにその作業を実行できるため、これは不要です。モデル内で不必要なメモリを占有する可能性があるため、削除しても構いません。

反復式では単一行ごとに評価が実行されますが、集計式では評価が実行されません。

これは単純な例ですが、より高度な IF ステートメントと SWITCH ステートメントを作成することもできます。また、物理テーブルを作成する必要もありません。代わりに仮想のものを使用できます。

この情報の多くは「DAX のマスタリング コース」で詳しく説明されていますが、これは関数の反復処理の始まりと、適切な場合に関数の使用を開始する方法を示すだけです。

ファクト テーブル内に計算列を作成する必要があると感じた場合は、反復関数が自動的に機能することをほぼ保証できます。

他の DAX イテレータ関数の使用

ここで、反復子が計算でどのように驚くべきことを実現できるかを示す別の例を示します。今回は平均コストを計算してみましょう。

合計コストの式をコピーして、新しいメジャーに貼り付けるだけです。名前をAverage Costsに変更し、SUMXの代わりに使用するだけです。

新しい数式は、Salesテーブルのすべての行を評価するため、同様のロジックを実行します。さらに、 Order QuantityTotal Unit Costの積を取得する必要もあります。ここでの唯一の違いは、数式では合計ではなく平均が計算されることです。

ここで、 「Average Costs」メジャーをテーブルに追加すると、「 Total Costs」メジャーとどのように比較されるかを確認できます。

反復関数を変更するだけで、同様のロジックを実行できるのは驚くべきことです。

追加のデータ最適化手法 

テーブルを最適化するために、Total Revenue列などの冗長な情報を削除できます。

平均コストを簡単に求めることができるため、表に「総収益」列は必要なくなります。[単価] 列[合計単価]列があれば、すべて問題ありません。

SUMX関数を使用して、Total Sales (Iteration)の代わりに新しいメジャーを作成できるようになりました。Salesテーブルを参照して、 Order QuantityUnit Priceの積を取得するだけです。

その後、[Total Sales]列と[Total Sales (Iteration)]列の結果を比較できます。どちらも同じ結果になりますよね?

パフォーマンスの点では、計算列とイテレータの使用に大きな違いはありません。しかし、データ モデルに関しては、反復関数を使用すると列全体を削除し、数百行のデータを節約できます。

さらに、反復子は必要な結果を仮想的に計算できるため、冗長な列を削除できます。これを実践すると、テーブルが大幅に薄くなり、モデルが大幅に高速になります。この最適化手法を独自の計算に必ず適用してください。

結論

要約すると、反復関数はすべての行を評価しますが、アグリゲーターは評価しません。

関数の末尾に文字 X を付けると、イテレータを識別しやすくなります。例には、SUMXAVERAGEX関数などが含まれます。

反復関数を使用しても、追加の物理テーブルは作成されません。これは、LuckyTemplates でメモリを節約するのに役立ちます。

ここで取り上げたSUMXAVEAGEXの例は、単純なシナリオです。後で、IF ステートメントSWITCH ステートメントを追加することで、より高度なステートメントに進みます。

ではごきげんよう!


LuckyTemplates の DAX 関数: イテレーターの使用DAX 言語での関数の反復 – DAX での反復関数の操作の
詳細な例

*****






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