如何在 LuckyTemplates 中使用迭代函數

本教程將向您介紹不同的迭代函數以及如何在計算中有效地使用它們。

我經常討論在進行某些計算時如何不需要計算列。這是因為迭代器。

迭代器或迭代函數可以幫助您進行計算,而無需將結果實際放入表中。

此技術可以幫助您節省加載LuckyTemplates 數據模型所需的內存。在接下來的部分中,我將向您展示如何使用迭代器優化您的計算。

目錄

使用迭代器函數計算總銷售額

首先,為Total Costs創建一個新度量。確保選擇您希望此新度量登陸的度量組。

之前,按ShiftEnter向下移動一行

在 LuckyTemplates 的公式欄中,您已經可以準確地看到您需要按照 IntelliSense 的建議在函數後面放置什麼。對於SUMX,您需要在其後添加一個表格。

SUMX公式將在給定表的每一行運行邏輯。這就是迭代器與行上下文相關聯的原因。在度量中,迭代器可以將公式轉換為行上下文。

您需要在SUMX函數之後引用Sales表。要計算總成本,您必須將訂單數量乘以總單位成本

我們根本不需要引用創建的新列。總成本是一種衡量標準,我可以將其放入我的表格中以評估我們的總成本。

現在,將度量拖動到表內以查看結果。確保您從城市過濾器中選擇了一個初始上下文。

我們可以通過單擊我們想要查看的不同區域來更改計算的初始上下文。

就初始上下文而言,總成本以類似的方式工作。初始上下文被應用到 Sales 表,但隨後在每個單獨的結果中,我們計算訂單數量乘以總單位成本。

在我們的數據模型的幕後,我們已經打開了我們的過濾器,我們有來自我們的區域表的上下文和來自我們的日期表的另一個上下文。這些流向下流到我們的 Sales 表,該表由迭代函數 SUMX 過濾。

由於SUMX函數對Sales表的每一行進行虛擬計算,因此結果不需要物理列。

在初始上下文之後,SUMX獲取每一行的訂單數量總單位成本的乘積。最後,它評估所有行的所有計算結果。

如果您注意到,原始成本列是通過計算列創建的。正如我所說,這是不必要的,因為迭代器已經可以完成它的工作了。您可以刪除它,因為它會佔用模型中不必要的內存。

迭代公式在每一行運行評估,而聚合公式則不會。

這是一個簡單的示例,但您可以在這裡更高級並編寫 IF 語句和 SWITCH 語句。此外,您不必創建物理表;您可以改用虛擬的。

掌握 DAX 課程中深入介紹了很多此類信息,但這只是為了向您展示迭代函數的開始以及如何在適當的時候開始使用它們。

如果您覺得需要在事實表中創建一個計算列,我幾乎可以保證迭代函數會為您完成這項工作。

使用其他 DAX 迭代器函數

現在,我將向您展示迭代器如何在您的計算中創造奇蹟的另一個示例。這次,讓我們算出平均成本。

只需複制總成本公式並將其粘貼到新度量中。您只需將名稱更改為平均成本,然後使用而不是SUMX

新公式運行類似的邏輯,因為它計算Sales表的每一行。此外,您還需要獲得Order QuantityTotal Unit Cost的乘積。這裡唯一的區別是公式計算平均值而不是求和。

現在,如果您將平均成本度量帶到表中,您可以看到它與總成本度量的比較情況。

令人驚奇的是,如何僅通過更改迭代函數就可以運行類似的邏輯。

其他數據優化技術 

要優化您的表格,您可以刪除冗餘信息,例如總收入列。

由於您可以很容易地獲得平均成本,您將不再需要表中的總收入列。只要您有單價總單位成本列,一切都很好。

現在,您可以使用SUMX函數為總銷售額(迭代)創建一個新度量。您只需參考Sales表,然後獲取Order QuantityUnit Price的乘積。

之後,您可以比較Total SalesTotal Sales (Iteration)列中的結果。他們都有相同的結果,對吧?

在性能方面,使用計算列和迭代器之間沒有太大區別。但是當涉及到數據模型時,迭代器函數可以去掉一整列並為您保存數百行數據。

此外,您可以刪除冗餘列,因為迭代器可以虛擬地計算出必要的結果。這種做法將使你的桌子更薄,你的模型更快。確保在您自己的計算中應用此優化技術。

結論

總而言之,迭代函數會評估每一行,而聚合器則不會。

函數末尾的字母 X 可以更容易地識別迭代器。示例包括SUMXAVERAGEX函數等。

使用迭代函數不會創建額外的物理表。這可以幫助你節省 LuckyTemplates 中的內存。

我介紹的SUMXAVERAGEX示例是簡單的場景。稍後,我們將通過添加IF 語句SWITCH 語句來進行更高級的操作。

一切順利!


LuckyTemplates 中的 DAX 函數:使用迭代器在 DAX 語言中迭代函數——在 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 網關?所有你必須知道的