LuckyTemplates Dax 變量是常量:這意味著什麼?

LuckyTemplates Dax 變量是常量:這意味著什麼?

每當您聽到有關如何使用 LuckyTemplates DAX 變量的解釋時,您可能聽說過“變量是常量”這句話。這看起來很簡單,但這些詞中有相當多的細微差別和復雜性。在此博客中,我將向您介紹該短語的含義,以及對如何計算度量值的影響。了解這些概念對於確保您的措施產生預期結果至關重要。您可以在本博客底部觀看本教程的完整視頻。

DAX 中的變量實際上可以是任何有效的 DAX 表達式。它可以是一個值、一個計算、一個度量或一個表示表的變量、另一個變量或這些東西的某種組合。

變量有兩個部分。在初始化變量的地方有你給它一個名字,然後是一個值。另一個是RETURN語句,它會調用至少一個您聲明的變量。它不像括號那樣每個變量都需要一個 RETURN 語句,但是如果聲明了任何變量,則至少需要一個 RETURN 語句。

這裡的關鍵是,正如我之前所說,變量是常量。這意味著一旦變量被分配給一個值,該值就不能在 RETURN 語句之前更改

目錄

將 LuckyTemplates DAX 變量應用到度量中

讓我們看一個簡單的例子,我有國家和總銷售額。Total Sales度量只是我們最基本的度量,它是Sales 表中 Line Sales 的

LuckyTemplates Dax 變量是常量:這意味著什麼?

比方說,我們想要獲得 2020 年的總銷售額。在此數據集中,我們有 2019 年、2000 年和 2021 年的銷售額。要獲得 2020 年的銷售額,我們必須應用一個非常簡單的過濾條件,這是。所以,我們改變我們的過濾器上下文。我們有總銷售額指標,然後我們的年份是 2020 年。

LuckyTemplates Dax 變量是常量:這意味著什麼?

如果我們將該指標放入表中,我們將得到我們預期的結果,即 2020 年的正確數字。

LuckyTemplates Dax 變量是常量:這意味著什麼?

現在,如果我們想對此應用變量,這裡是前一個度量的略微修改版本,我在其中創建了一個名為TotSales的變量,並將其設置為等於我們的 Total Sales 度量。

LuckyTemplates Dax 變量是常量:這意味著什麼?

如果我們從代數替換的角度考慮,如果我們只是用之前的 Total Sales 度量值代替 TotSales,它等於 Total Sales 度量值,您會認為它可能是同一件事並產生相同的結果結果。但是,如果我們看一下,並將該度量放入我們的表中,我們會發現它不會產生相同的結果。

LuckyTemplates Dax 變量是常量:這意味著什麼?

變量 TotSales 已聲明,它獲取總銷售額的值。假設我們在 Moldova 行,該變量的值為 235 萬。現在請記住,在調用 RETURN 語句之前,該值不能更改。因此,當我們向下計算RESULT變量中的度量值時,我們得到的是 TotSales,它是 235 萬的常量。

然後,我們將過濾器上下文應用於它,Dates[Year] 等於 2020,但這並不重要,因為該常量無法更改。因此,我們可以說 Dates[Year] 等於 2019 年、2021 年,依此類推,它仍將是相同的 235 萬,因為TotSales 現在被鎖定為一個常數,直到 RETURN 出現

當它返回時,我們轉到下一行,變量獲取荷蘭的值(440 萬)。該過程自行重複,將其鎖定為常量,直到 RETURN 語句。我們得到的正是我們在總銷售額指標中所擁有的,而不是過濾到 2020 年的指標。

因此,您可能會認為這實際上看起來並不是很有用。在這種情況下,事實並非如此。這實際上是人們最初開始使用變量時的一個常見錯誤他們將變量放在 CALCULATE 語句的第一個表達式部分。這通常不會給出他們正在尋找的結果,因為它將其鎖定為一個常量值。

在迭代器中使用 LuckyTemplates DAX 變量

當您將變量放在迭代器中時,它們會真正發揮作用。我將通過這個案例與您交談,這是一個以前的價值案例。我們正在尋找一個日期,然後是一個符合多種條件的先前值。

LuckyTemplates Dax 變量是常量:這意味著什麼?

的函數來執行此操作。但是現在,變量實際上在這種情況下非常有效。對於變量,強烈建議不要再使用 EARLIER 函數。

那麼,讓我們看一個更複雜的例子,我們在迭代器部分而不是表達式部分有變量。中出現的一個問題的案例,其中成員想要查看一個範圍內的每個日期,然後想出第一個不是周末或假期的日期。

LuckyTemplates Dax 變量是常量:這意味著什麼?

我想特別關注 10 月 15 日星期二作為主要例子。期望的結果是查看該日期。星期一是哥倫布日,所以是假期,接下來的幾天是星期天和星期六。因此,我們想要獲得的日期是 10 月 11 日,也就是星期五。

如果您查看前一天/無週末/無假期列,週二是 11 號。週一、週日和周六也是如此。這就是我們想要得到的結果。

上表旁邊是我們用於此案例場景的度量。我們聲明了一個選定日期的變量 ( VAR SelDate ),它只是日期的它會在我們的變量中選擇 10 月 15 日,然後將其保持為常量直到 RETURN 語句。

然後,我們從外到內評估 DAX。如果我們查看過濾條件,它會刪除日期上的過濾器,然後設置一系列額外的過濾器。它採用了那個固定的選定日期,即 10 月 15 日,它說,請給我之前的所有日期。然後,確保這些日期中沒有一個是星期六、星期日或節假日。然後,它採用過濾掉的那些日期中的

您可以在這裡看到,將選定的數據作為常量是一種基礎,所有其他日期都在此之前或之後進行評估。

我們已經選擇了日期,然後過濾掉之前的所有內容。我們正在獲取該過濾表的最大值。因此,當我們排除所有其他條件時,我們得到的是 15 號的最大值,即 11 號星期五。然後,如果我們轉到 RETURN 語句,它會從第二天 16 號開始。它只是繼續遍歷表,直到到達數據的末尾。

正如您在本例中看到的,當我們將變量放入迭代器部分而不是表達式部分時,它完全按照我們的計劃工作。它利用了變量是常量這一事實。


在 LuckyTemplates 中使用變量——詳細示例
如何在 LuckyTemplates 中處理廣泛的 DAX 公式——格式化提示包括
DAX 變量和註釋以簡化公式

結論

在此博客中,我向您展示瞭如何在度量中應用 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 網關?所有你必須知道的