解釋 LuckyTemplates 中的行上下文

我發現大多數人對理解 DAX 在行上下文中的工作方式感到困惑。這是因為行上下文可能非常複雜且不必要。因此,我們將在整篇文章中討論行上下文您可以在本博客底部觀看本教程的完整視頻。

我考慮行上下文的方式是通過迭代或迭代函數。一旦我在腦海中做出這種區分,就計算引擎中實際發生的事情而言,它就更有意義了。

回顧一下,我們已經討論了三種類型的上下文:求值上下文過濾上下文行上下文

任何 DAX 計算都分兩步進行。評估上下文總是先進行,然後根據您編寫的函數分支到過濾器上下文或行上下文。

目錄

了解行上下文

行上下文就是迭代。

我將向您展示幾個示例,希望這有助於您理解行上下文在後端的實際作用。

行上下文 VS 篩選上下文

在我們的示例中,公式是通過過濾器上下文計算的,因為它是一個簡單的聚合。在所有初始過濾器就位後,它會匯總整個數量列。

解釋 LuckyTemplates 中的行上下文

Sales 表的初始篩選器是產品 1。通過對已售出的每個數量求和,我們得到 165。

解釋 LuckyTemplates 中的行上下文

現在我將向您展示如何獲得完全相同的結果,但計算方式卻截然不同。首先,我將使用迭代公式為 Quantity Sold Iteration 創建一個新度量。

解釋 LuckyTemplates 中的行上下文

迭代函數的示例包括SUMXAVERAGEXMANYXCOUNTX。在這種情況下,我們將使用SUMX

SUMX函數要求我放入一個表,所以我要放入 Sales 表。然後它要求我輸入一個表達式,所以我只輸入了數量列。

這個函數和第一個函數有很大的不同,但是當我把它拖進來的時候,我得到的結果是完全一樣的。

解釋 LuckyTemplates 中的行上下文

我們在這裡得到完全相同的結果,因為它最終是相同的計算。它只是以不同的方式計算的。

解釋 LuckyTemplates 中的行上下文

Quantity Sold Iteration 是使用row context計算的,而 Total Quantity Sold 是使用filter context計算的。

使用行上下文計算已售數量迭代

現在讓我們逐步了解如何計算迭代銷售數量。首先,您必須記住離開初始估值上下文,在本例中為 Product 1。然後通過行上下文,我們遍歷我們指定的表中的每一行。

在本例中,我們指定了 Sales 表,然後查看 Quantity 列中的每一行。

解釋 LuckyTemplates 中的行上下文

在初始評估期間,產品 1 將由產品 ID 列中篩選的任何內容確定。然後它計算數量列下的行數。每次它命中一行時,它都會進入並將結果保存到內存中。

到達表格底部後,它會評估保存在內存中的所有結果,然後執行您要求的任何計算,在本例中為SUMX

解釋 LuckyTemplates 中的行上下文

為什麼使用行上下文或迭代函數?

這是因為在迭代函數中你可以做更複雜的事情。你可以在裡面寫一些很高級的邏輯。

解釋 LuckyTemplates 中的行上下文

例如,對於 Sales 表中的每一行,數量都乘以 2。您現在會看到發生了相同的計算過程,但我們得到了不同的結果。

解釋 LuckyTemplates 中的行上下文

這是因為對於每一行,我們都在編寫一些不同的邏輯。遍歷數量列中的每一行後,我們將該值乘以二,然後將其保存到內存中。最後,我們做一個SUM

我們還可以在這裡編寫不同的東西,包括高級邏輯,例如IFSWITCH邏輯。

解釋 LuckyTemplates 中的行上下文

有大量的例子表明使用迭代函數或行上下文進行計算比使用聚合函數或篩選上下文更好。

理解 LuckyTemplates 上下文的關鍵注意事項

要回顧有關上下文的所有關鍵事項,請記住在 DAX 中進行計算是通過兩步過程進行的。第一步始終是求值上下文評估上下文是什麼非常重要。

一旦您了解了任何單個結果的評估上下文,DAX 就會分為兩種不同的方式。它可以通過過濾器上下文或行上下文進行計算。

選擇使用哪個上下文取決於您編寫的公式。因此,如果您編寫一個簡單的聚合公式,它就會通過篩選器上下文進行計算。但是如果你寫一個像 SUMX 這樣的迭代函數,那麼它會通過行上下文計算公式。

一旦您在 DAX 中稍微高級一點,您實際上可以在同一個函數中擁有多個上下文。但在你到達那里之前,你真的必須了解什麼是最簡單形式的上下文。

結論

當您學習 DAX 並希望從事更高級的工作時,了解上下文類型絕對至關重要。當你開始編寫真正高級的 DAX 公式時,你有多個上下文同時工作,你需要了解該公式的每個單獨部分正在做什麼以實現你想要的結果。

以下是一些推薦的鏈接,供您詳細了解行上下文在 LuckyTemplates 中的應用:

Evaluation Context – (1.8) DAX 終極初學者指南

Filter Context – (1.9) DAX 終極初學者指南

享受通過這個工作。

Leave a Comment

在 Power Automate 中執行直到循環控制

在 Power Automate 中執行直到循環控制

了解有關 Do Until 循環控制如何在 Power Automate 流中工作的基礎過程,並熟悉所需的變量。

使用 Deneb 為 LuckyTemplates 製作自定義視覺對象

使用 Deneb 為 LuckyTemplates 製作自定義視覺對象

受限於 LuckyTemplates 中提供的標準視覺效果?學習使用 Deneb 和 Vega-Lite 為 LuckyTemplates 創建自定義視覺對象,提升您的數據可視化能力。

在 Power Automate Desktop 中將日期添加到文件名

在 Power Automate Desktop 中將日期添加到文件名

在此博客中,您將了解如何使用 Power Automate Desktop 自動將日期添加到文件名的開頭或結尾。

Power Query:如何快速添加註釋

Power Query:如何快速添加註釋

找出幾種不同的方法在 Power Query 中添加註釋,這對於不喜歡記筆記的人非常有幫助。

Power Apps – SharePoint 集成指南

Power Apps – SharePoint 集成指南

在此博客中,您將了解 MS Power Apps 界面的基礎知識並了解 Power Apps-SharePoint 集成的過程。

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

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

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

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

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

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

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

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

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

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

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

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

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

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