LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

本教程將討論 LuckyTemplates 中的兩個 DAX 查詢計劃。

查詢計劃會影響 DAX 在生成有價值數據方面的性能。它們還有助於優化DAX 代碼,使您的報告更具吸引力。

這些是由公式引擎生成的兩個查詢計劃:

  • 邏輯查詢計劃
  • 物理查詢計劃

每個 DAX 查詢都會觸發這兩個事件。

目錄

LuckyTemplates 中的邏輯查詢計劃

這是 DAX 查詢流程。對於這一部分,重點關注第三步,即Simplify Logical Query Plan Tree

LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

此查詢類似於您的 DAX 查詢。當您運行 DAX 查詢時,它主要與邏輯查詢計劃正在執行的操作相匹配。

為了說明,這裡有一個示例查詢。

LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

如果你運行這個,你會得到 29,138 的結果。

LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

如果您在 DAX Studio 中運行查詢並打開查詢計劃事件選項卡,您將看到查詢計劃。在這兩種類型中,邏輯查詢計劃首先出現。

LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

每個縮進行都是一個相互構建的子任務。第一行是 DAX 的最終結果。其他行求和並掃描 FactSales 的數量列。

冒號前的第一個詞稱為operator

LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

冒號後面的詞稱為運算符類型

LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

有兩種類型的運算符類型:

  • 相對日誌操作
  • ScaLogOp

RelLogOp是一個表格輸出。DAX 使用 VertiPaq 掃描列以生成表格。另一方面,ScaLogOp是標量輸出;這意味著它是一個匯總數字。如果您查看查詢計劃的第二行和最後一行,您會看到它求和並獲取 FactSales 的數量。

邏輯查詢計劃創建一個名為 Total Quantity 的單行表,其中包含 FactSales 表中的 Quantity 總和。

查詢計劃更容易解碼,因為它使用簡單的 DAX 查詢。DAX 越複雜,越難解碼。

努力爭取的一件好事是看到盡可能多的“_VertiPaq”運營商。這意味著它會自行完成所有工作,以幫助優化您的 DAX 代碼。

LuckyTemplates 中的物理查詢計劃

物理查詢計劃在這兩種類型中排名第二。這是 DAX 查詢流程中的第四步。它具有與邏輯查詢計劃相同的樹結構。

一旦構建了邏輯查詢計劃,它就會被發送到要執行的物理查詢計劃。如果您運行相同的示例查詢,您將得到相同的答案。

LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

具體來說,DAX 查詢流程的第四步是構建物理查詢計劃樹

LuckyTemplates 中的 DAX 查詢——邏輯和物理查詢計劃

它可能看起來類似於邏輯查詢計劃,但它是不同的。通常,物理查詢計劃很難與LuckyTemplates中的 DAX 查詢相匹配,但由於它是一個簡單的示例查詢,您可以按照該過程進行操作。

這些是物理查詢計劃中的三種運算符類型:

  • 查找PhyOp
  • InterPhyOp
  • 假脫機物理操作

LookupPhyOp在給定的行上下文中給出標量值。InterPhyOp逐行遍歷表中的數據SpoolPhyOp從 VertiPaq 查詢中接收結果,將其具體化,並將其存儲到內存中。

在查詢計劃的第四行,您可以看到一個 ProjectionSpool 運算符,這意味著將查詢發送到存儲引擎。它使用記錄數迭代查詢的結果。

查詢計劃中顯示的記錄量應該是完成答案所需的最少記錄量。這個簡單查詢的結果只有 1 行,所以它在查詢計劃中返回了 1 條記錄。

與ProjectionSpool 的SpoolPhyOp 對應的Records 列顯示了從存儲引擎向公式引擎發送了多少數據因此,您擁有的記錄越多,查詢速度就越慢。

如果 DAX 性能緩慢,記錄列是開始查找的好地方。



LuckyTemplates 中的 DAX 計算:通過這門新課程優化 DAX 函數的最佳實踐
5 種策略來增強您的 LuckyTemplates DAX 技能

結論

當您運行 DAX 查詢時,它會經過一系列步驟才能為您提供答案。其中兩個步驟是邏輯和物理查詢計劃。他們負責逐步處理和執行計算中使用的公式。

如果您想學習和了解有關這些查詢計劃的更多信息,請閱讀本教程,然後嘗試使用DAX Studio親身體驗。


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