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 性能背後的工作原理,以及它們如何影響您的報告。

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 用戶最初應該了解的主要主題之一。