DAX 查詢中的迭代器和上下文轉換

DAX 查詢中的迭代器和上下文轉換

本教程將討論上下文轉換和嵌套迭代器。您將了解這些實體的重要性以及它們如何成為優化的良好來源。

如果您還記得,上下文轉換發生在行上下文更改為等效的篩選器上下文時。當迭代器中發生上下文轉換時,您需要了解發生了什麼,因為它通常會產生緩慢的結果。

目錄

嵌套迭代器與 CALCULATE

如果在迭代期間調用上下文轉換,則會創建具體化表。這意味著上下文轉換是通過 DAX 中的公式調用的。該表是發送到公式引擎的未壓縮數據。

為了演示,第一個度量是針對大銷售,如果當前價格大於或等於 500,則獲取當前價格。

DAX 查詢中的迭代器和上下文轉換

下一個度量是使用嵌套迭代器的 Big Sales 的平均值。

DAX 查詢中的迭代器和上下文轉換

最後一個度量在沒有嵌套迭代器和 CallBackDataID 的情況下獲取 Big Sales 的平均值。

DAX 查詢中的迭代器和上下文轉換

使用嵌套迭代器運行測量。確保在運行前清除緩存,然後打開 Server Timings 和 Query Plan。

DAX 查詢中的迭代器和上下文轉換

您可以看到它生成了 3 次掃描、2 個 CallBackDataID 和 15,003 行。這是一個值得關注的原因,因為輸出只有 101 行。發生這種情況是因為度量有兩個迭代器或 X 函數。

這是已運行的度量的完全擴展形式:

DAX 查詢中的迭代器和上下文轉換

它使用迭代 Fact Sales 表。然後它使用再次使用CallBackDataID重申。此度量的縮短格式具有一個隱含的函數,該函數調用上下文轉換並具體化該表。這就是它提取 15,003 行的原因,即使只有 101 行用於輸出。

運行沒有嵌套迭代器的其他度量。它仍在使用AVERAGEX迭代 Fact Sales 表,但當前價格在函數之外。它過濾掉當前價格大於或等於500的產品,然後計算平均值。

DAX 查詢中的迭代器和上下文轉換

您可以看到它只有 2 次掃描,104 行,並且沒有 CallBackDataID。因此,如果您使用CALCULATE,則可以擺脫嵌套的迭代器和CallBackDataIDs


LuckyTemplates 中的 DAX 函數:使用迭代器
如何在 LuckyTemplates
DAX 計算中使用迭代函數 – 過濾器上下文轉換

結論

DAX 執行緩慢的原因有很多。其中之一是由於嵌套迭代器導致不必要的上下文轉換。這些迭代器具體化了比需要更多的行,這會導致您的查詢變慢。

最好的解決方案是將它放在CALCULATE中。這為公式引擎創造了更少的工作並最大化了存儲引擎的能力。


什麼是 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 網關?所有你必須知道的