LuckyTemplates 中的 DAX 查詢結構——兩個引擎和 DAX Studio

LuckyTemplates 中的 DAX 查詢結構——兩個引擎和 DAX Studio

本教程將介紹 DAX 查詢結構和 DAX Studio 中的兩個引擎。您將看到 DAX 公式產生結果的背後過程。您還將了解每個引擎在您的計算中是如何工作的。

有兩個引擎負責產生數據:公式引擎VertiPaq 存儲引擎

目錄

DAX 查詢結構

本教程將深入展示 DAX 查詢結構,了解 DAX 如何在報表背後運行。

LuckyTemplates 中的 DAX 查詢結構——兩個引擎和 DAX Studio

您創建的每個度量都是一個查詢。它處理一組數據並返回答案。然後查詢與 SQL Server Analysis Services 對話。它是在後台運行的 LuckyTemplates 的定製版本。

編寫查詢後,它會被發送到公式引擎。它回答所有 DAX 但不如存儲引擎高效。

一旦公式引擎收到查詢,它就會向 VertiPaq 存儲引擎請求要處理的數據。然後,存儲引擎從壓縮數據緩存中獲取數據。

VertiPaq 之所以高效,是因為它適用於壓縮列。它可以在幾毫秒內計算出很多行。

在圖表的末尾,您可以看到數據源。此事務僅在您進行數據刷新時發生。

您需要了解的另一件事是存儲引擎可以回答簡單的查詢。否則,它將數據緩存發送回公式引擎以計算答案。

當它將該數據發送回公式引擎時,它不再被壓縮。它使用內存中的完整列。 

因此,在公式引擎取回數據後,它會計算並填充 DAX 查詢的答案。

DAX 查詢結構的引擎

了解公式引擎和存儲引擎之間的區別很重要。它們中的每一個都是為不同的目的而設計的,因此您可以應用您的 DAX 知識並獲得快速準確的查詢。這些是兩個引擎之間的差異:

LuckyTemplates 中的 DAX 查詢結構——兩個引擎和 DAX Studio

每個引擎的圖標代表它們的性能有多快。存儲引擎比公式引擎更快,因為它處理簡單的請求。如果您的 DAX 查詢很簡單並且需要 、  ,則存儲引擎可以自行完成所有工作。

另一方面,公式引擎可以處理複雜的 DAX 函數。請記住,查詢越複雜,表達式中的公式引擎就越多。

兩個引擎使用的數據也不同。公式引擎使用存儲引擎未壓縮的數據緩存,佔用大量內存和時間,而存儲引擎使用壓縮數據

存儲引擎速度很快,因為它一次使用多個內核。這意味著它是一個多線程引擎。如果您的表有段,它會根據您擁有的核心數來掃描它們。然而,公式引擎一次只能做一個核心。

存儲引擎的另一個重要功能是當您的度量產生答案時,它會將答案存儲在內存中,這與公式引擎不同。如果詢問相同的問題,它會在不運行完整計算的情況下為您提供答案。

存儲引擎針對速度進行了優化,而公式引擎針對複雜性進行了優化。

DAX計算背後

了解 DAX 性能背後的過程的唯一方法是通過 DAX Studio。這是 DAX Studio 中的示例文件。

LuckyTemplates 中的 DAX 查詢結構——兩個引擎和 DAX Studio

如果您按 F5 並運行它,您將得到結果。

LuckyTemplates 中的 DAX 查詢結構——兩個引擎和 DAX Studio

要了解計算背後的兩個引擎發生了什麼,請打開 Server Timings 和 Query Plan。然後再次運行 DAX。

LuckyTemplates 中的 DAX 查詢結構——兩個引擎和 DAX Studio

完成後,轉到“服務器計時”選項卡。

LuckyTemplates 中的 DAX 查詢結構——兩個引擎和 DAX Studio

您可以看到查詢、公式引擎和存儲引擎的總執行時間。您還將看到運行了多少存儲引擎。公式引擎佔整個查詢的83.3%,而存儲引擎只佔16.7%。

如果轉到查詢計劃選項卡,您將看到物理查詢和邏輯查詢計劃。這些都是關於公式引擎正在做什麼的公式查詢。

LuckyTemplates 中的 DAX 查詢結構——兩個引擎和 DAX Studio


LuckyTemplates 中的 DAX 計算:最佳實踐通過LuckyTemplates 中的
這一新課程度量優化 DAX 函數:優化技巧和技術

結論

公式和存儲引擎在從 DAX 代碼生成結果方面都發揮著重要作用。它們是 DAX 查詢結構中最重要的部分。

我希望您了解了這些引擎在 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 網關?所有你必須知道的