使用變量和重要函數的 DAX 查詢

本教程將討論變量,包括CALCULATE函數。您將了解這些如何幫助提高 DAX 查詢的性能並提供準確的結果。

盡量使用變量,因為變量可以方便地定位代碼進行優化。它們可以防止您獲得不正確的輸出並節省您查找錯誤的時間。但是,變量有時會阻止重新計算值。因此,一旦用值定義了它們,就無法更改該值,即使通過CALCULATE也無法更改。

知道應該在哪裡定義和使用變量很重要,因為在迭代內部和外部使用它們會產生不同的結果。它們的定義應該靠近它們將被使用的地方。這也有助於分解長代碼,使它們更易於理解和調試。

目錄

使用 CALCULATE 和 FILTER 創建 DAX 查詢

在 DAX 中獲取結果和答案有不同的方法。您需要在創建報告時形成自己的風格和流程,這樣您才能對自己的工作感到滿意。即使您有自己的風格,您仍然必須遵循特定的準則,其中包括對FILTER等不同方法使用CALCULATE

FILTER可能會向公式引擎發送大量未壓縮的數據,並可能觸發 CallBackDataID 此處將使用度量來顯示CALCULATEFILTER的結果。這也有一個定義的度量,該度量是查詢的本地。在數據模型中找不到已定義的度量,但它們可以更快地開發和排除代碼故障。

使用變量和重要函數的 DAX 查詢

在第一行中,您可以看到一個為日期定義變量的度量。這意味著它針對 2016 年 3 月 31 日或之後發生的日期篩選事實表。您還可以看到總銷售額的簡單度量,它迭代事實銷售額表並將數量和當前價格相乘。

下一個措施是在。如果您回憶起CallBackDataID模塊,在 SUMX 函數中使用 IF 將創建一個CallBackDataID

使用變量和重要函數的 DAX 查詢

此度量正在篩選整個 Fact Sales 表。它刪除來自日期表的過濾器。

使用變量和重要函數的 DAX 查詢

過濾整個表時必須小心,因為它還會過濾一對多關係一側的所有列。

這項措施與之前的措施相同;唯一的區別是它不會過濾整個表格。它使用SUMX僅迭代過濾表。

使用變量和重要函數的 DAX 查詢

這是過濾 Fact Sales 表的另一個度量,但這次它只在它所在的列上。

使用變量和重要函數的 DAX 查詢

最後一項措施是使用CALCULATE和數據模型來過濾和檢索數據。

使用變量和重要函數的 DAX 查詢

運行並檢查每項措施

首先,運行IF測量。確保在運行查詢之前清除緩存並打開服務器計時和查詢計劃。

使用變量和重要函數的 DAX 查詢

使用變量和重要函數的 DAX 查詢

雖然它提供了正確的數據,但由於CallBackDataID和 3 個持續時間,性能很慢。

如果您運行過濾整個 Fact Sales 表的度量,您仍然可以看到CallBackDataID。它還將生成 15,003 行並提供不正確的結果。

使用變量和重要函數的 DAX 查詢

使用變量和重要函數的 DAX 查詢

當���運行未篩選所有 Fact Sales 表的度量時,您將獲得正確的結果。但是,您仍然會看到CallBackDataID和具體化的 15,003 行,但只有 7 行輸出。

使用變量和重要函數的 DAX 查詢

使用變量和重要函數的 DAX 查詢

運行對列進行篩選的下一個度量。您將獲得正確的結果並消除CallBackDataID。但是您仍然可以看到它具體化了很多行。

使用變量和重要函數的 DAX 查詢

使用變量和重要函數的 DAX 查詢

運行計算度量。您可以看到它只具體化了 10 行並在 5 毫秒內生成了正確的數據。

使用變量和重要函數的 DAX 查詢

使用變量和重要函數的 DAX 查詢

它是上述所有措施中最快的,因為它沒有 CallBackDataID並且 只拉取了 10 行。這表明CALCULATE在獲得快速和精確的結果方面是多麼令人印象深刻。

如果您運行所有 DAX 查詢或度量,您可以根據持續時間查看哪個最慢和最快。您還可以查看每個度量的結果。

使用變量和重要函數的 DAX 查詢

使用變量和重要函數的 DAX 查詢

結論

通過將過濾器移至 CALCULATE,您將節省時間和具體化,因為 CallBackDataID被消除。您不必重複數據兩次。這還將最大限度地提高 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 用戶最初應該了解的主要主題之一。