什麼是 Python 中的自我:真實世界的例子
什麼是 Python 中的自我:真實世界的例子
在本教程中,您將學習使用 UNION 函數的DAX 優化技術。本教程將比較 UNION 函數與Power Query和其他組合表技術的性能。
UNION函數通過合併兩個表的行並刪除所有重複行,將兩個表合併為一個表
本教程中的示例是一個 Sales 表,該表每年被拆分為三個表(2007 年、2008 年、2009 年)。
目錄
DAX中的UNION函數
打開DAX Studio並啟動服務器計時和查詢計劃。
以下面的 DAX 代碼為例:
運行代碼後,轉到“服務器計時”選項卡。您可以看到代碼總共需要 5.4 秒才能執行。大部分執行時間都花在了存儲引擎上。這三個查詢中的每一個都包含相同的操作,但年份不同。
Storage Engine返回這三個query後,Formula Engine進行UNION,可以在Logical Query Plan中看到。查詢計劃還執行來計算總銷售額。
在 Physical Query Plan 中,您可以看到三個數據緩存,其中包含每年在 Sales 表中執行的操作。
���較 DAX 性能
為了進行比較,讓我們使用原始 Sales 表為 Total Sales 創建一個度量。
如果您運行此代碼並轉到Server Timings選項卡,您會發現這比 UNION 函數效率高得多。
UNION 函數消耗 97.9 KB,而新度量僅消耗 1KB。
使用 UNION 時,DAX 引擎會將大量數據緩存返回給公式引擎。這給RAM帶來了很大的壓力。
因此,如果您正在處理包含超過一百萬行的數據模型,則不建議使用 UNION 函數
UNION DAX 函數替代方案
對於此示例,您可以使用三個 SUMX 函數來代替 UNION 。也就是說,每年一個 SUMX 函數。
當您運行此代碼並轉到 Server Timings 選項卡時,您可以看到執行時間明顯縮短。它從 5,400 毫秒減少到 33 毫秒,同時仍然執行三個不同的查詢。
另一種方法是在 Power Query 或數據源本身中附加數據模型表。
但最好的選擇是創建一個計算表來執行這三個表的聯合。但是這個選項有其優點和缺點。
使用計算表可以節省總體處理時間,而不是在 Power Query 中執行追加。但是,這會導致 VertiPaq 中的數據庫大小增加。
當您使用計算表時,您正在創建一個組合了三個表的新表。但是這三個拆分錶會繼續保留在數據庫中。
在此示例中,三個表總共消耗 25 MB。如果您創建一個計算表,它將在您的 RAM 中再消耗 25 MB。
對於此類敏感案例,您需要就最佳行動方案做出明智的決定。
結論
DAX中的UNION功能將兩張表合二為一,方便分析數據。它的工作原理是將兩個表作為輸入並返回一個包含兩個輸入表中所有行的新表。但是,此功能有其自身的局限性。
UNION 函數可能比其他合併數據的方法慢,尤其是在輸入表很大的情況下。與其他替代方案相比,它還可以佔用更多存儲空間。
每當情況需要組合表時,在決定使用 UNION 函數之前首先權衡利弊是很重要的。您的備選方案包括 SUMX 函數、數據模型表或計算表。
一切順利,
什麼是 Python 中的自我:真實世界的例子
您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。
在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。
本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。
在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。
我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。
了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。
本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。
如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。
什麼是 LuckyTemplates 網關?所有你必須知道的