在 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 ,但它也與AVERAGEXMINXMAXX相關。它們都是非常相似的東西。

這些迭代函數要記住的另一個關鍵是它們在每一行都運行邏輯,並將結果保存到內存中。

一旦所有這些值都保存到內存中,總體計算就完成了——比如SUMAVERAGE

在 DAX 中使用迭代函數

回到我們的示例,您可以在此處看到該列中的金額略低於前幾列。

在 DAX 中使用迭代函數

使用SUMX迭代函數,我想遍歷 Sales 表中的每一行。在每一行中,我想計算該特定銷售額是否大於 2,000 美元。如果是,我想計算該行的總銷售額。但如果銷售總額低於 2000 美元,那麼我想返回零。所以我只想計算更高價值的銷售額。

有些人會建議我可以將邏輯放在計算列中。但我們不想這樣做,因為有更好的方法在DAX內部運行此邏輯,而不是將其物理地放在列中。

遍歷表

這就是迭代函數非常驚人的地方。您不僅可以像我們之前那樣遍歷物理表,還可以遍歷您作為參數輸入的其他一些虛擬表。

在 DAX 中使用迭代函數

我們會認為這裡的每個結果都有特定的上下文。在這種特殊情況下,我們有客戶背景。

在 DAX 中使用迭代函數

在這種情況下,我想遍歷每個位置並查看特定客戶的銷售額是否超過 5,000 美元。

如果是這樣,我想計算總銷售��。但如果沒有,我希望它返回零。

在 DAX 中使用迭代函數

因此,在這種特殊情況下,我正在計算該客戶購買的高價值地點以及他們在這些地點的總銷售額。

在 DAX 中使用迭代函數

VALUES在這裡做是創建一個虛擬表。所以SUMX在這裡甚至沒有處理任何物理問題。它實際上是在處理完全虛擬的東西。

使用 MINX 進行簡單迭代

在 DAX 中使用迭代函數

這與前面的示例類似,但不是SUMX,一旦我們遍歷每一行,我們將運行一些其他類型的 in 聚合。

在 DAX 中使用迭代函數

在這種特殊情況下,我們正在為每個客戶寫下每個位置,併計算出每個位置的總銷售額。

在 DAX 中使用迭代函數

然後我們要返回他們購買位置的最低金額。

使用 MAXX 的簡單迭代

在 DAX 中使用迭代函數

我在這裡也做了類似的事情,只是為了向您展示迭代函數的多功能性。我正在遍歷每個地點,查看他們的銷售額,然後返回這些地點銷售額的最大值,這就是我們在這裡看到更高數字的原因。

結論

在本文中,我想談的關鍵是迭代函數中的選項範圍與簡單的總和或平均值。

一旦開始深入研究更複雜的計算,您就會發現這些特定函數對於在上下文級別返回值是多麼重要。

如果您只知道如何操作參數,那麼您可以使用一個簡單的公式來運行這些計算的多功能性和多種方法。

如果您喜歡學習這些迭代函數,您可以瀏覽這些鏈接以獲取有關此主題的更多信息:

LuckyTemplates 中迭代函數的關鍵概念

通過虛擬表迭代邏輯——LuckyTemplates 中的高級 DAX 概念

享受通過這個工作。


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的