初學者終極 DAX 指南

初學者終極 DAX 指南

LuckyTemplates 開發的第三個支柱是 DAX 計算。本教程包含面向初學者的全面 DAX 指南,涵蓋格式化和編輯的基礎知識。討論中還包括常用的 DAX 函數。

目錄

DAX 編輯器指南

首先,您需要了解以下 DAX 編輯器提示:

使用Ctrl + 鼠標滾輪可增大或減小 DAX 編輯器窗口中的字體大小。

初學者終極 DAX 指南

使用Ctrl + Shift + L一次更新名稱的所有實例。

初學者終極 DAX 指南

在 DAX 中為虛擬表或臨時列名稱添加“ @ ”前綴。

初學者終極 DAX 指南

DAX 格式化指南

您的 DAX 代碼需要井井有條並且易於用戶理解。

您不僅在為今天的自己編寫代碼,而且還在為未來的自己編寫代碼。

重要的是開發您自己和其他人現在和以後都易於閱讀和理解的 DAX 代碼。

如果編輯和組織最終會破壞您的代碼,請不要擔心。電腦很聰明;只要語法正確,他們就能夠解釋和執行您編寫的代碼。

Marco Russo 的一句名言是:

如果未格式化,則不是 DAX。

有多種格式化 DAX 的方法。推薦的選項是使用LuckyTemplates Analyst Hub 上提供的DAX 清理工具。

初學者終極 DAX 指南

訪問此工具。另一種方法是訪問 LuckyTemplates 網站,然後選擇資源。在頁面底部,您會找到 DAX 清理工具。

要使用此工具,請將 DAX 編輯器中的代碼複製到 LuckyTemplates 文件中。將其粘貼到 DAX 清理工具中,然後單擊格式。

初學者終極 DAX 指南

清理完成後,您可以將格式化的代碼粘貼回您的 LuckyTemplates 文件。

初學者終極 DAX 指南

您還可以在該工具中編輯代碼。

在 DAX 代碼中評論

在處理複雜的 DAX 代碼時,最好添加註釋。您將從偽代碼解釋中受益匪淺。但也有例外。

發表評論是一項非常個人化的活動。開發者和用戶對合適的評論水平可能會有不同的看法。同樣,在創建代碼和評論時,重要的是要考慮它們在未來的情況下將如何被用戶或開發人員接受和理解。從長遠來看,這樣做將使您和企業受益匪淺。

DAX 變量指南

使用冗長的變量名。關鍵是清晰。創建清晰易懂的名稱非常重要。

同樣,計算機很聰明,可以很容易地弄清楚正在寫什麼。所以請記住,您不是在為計算機或 LuckyTemplates 寫作;而是在為計算機或 LuckyTemplates 寫作。您正在為自己以及在接下來的幾個月中將使用和維護您的代碼的任何人編寫代碼。

在 DAX 代碼中使用變量時,最佳做法是在變量名稱前使用前綴,以幫助確保您將在後續行中選擇正確的變量。下劃線( _ )是推薦使用的前綴。這也有助於減少 LuckyTemplates 中 IntelliSense 功能中顯示的列表。

這是一個例子:

初學者終極 DAX 指南

您可以看到,當鍵入下劃線時,只會出現兩個選項。選擇的數量大大減少,從而提高了編碼時的效率。

另一個最佳實踐是使用RETURN Result結構。

初學者終極 DAX 指南

這使得增量開發和調試 DAX 代碼變得更加容易。

DAX 計算資格

在 DAX 表達式中使用列時,您需要具體說明,因為多個表中可能有相同的列名。

例如,Customers 和 Sales 表中都可能出現 Customer Key 列。

初學者終極 DAX 指南

儘管它們通常表示相同的事物並包含相同的數據,但情況並非總是如此。要獲得所需的結果,您應該始終限定列名。

此外,您需要確保度量未綁定到表。它們可以從一個表移動到另一個表,因此確保度量名稱沒有限定是很重要的。

要了解的重要 DAX 函數

1. 計算

是最重要的 DAX 函數之一,因為它使您能夠更改計算的上下文。

然而,這個函數常常引起混淆,不是因為它難用,而是因為它的名字。即使它被稱為 CALCULATE,它實際上並沒有執行計算。相反,它正在改變計算的上下文。

例如,在此 Sales LY 度量中,CALCULATE 函數用於將 Total Sales 的計算上下文更改為當前評估上下文之前的一年。

初學者終極 DAX 指南

2.日期添加

DAX 中有許多可用的時間智能函數。等函數。但是最通用的 DAX 時間智能函數之一。而這個功能應該是你的首選。

使用 DATEADD,相同的語法可用於多次計算,無論是在時間上向後還是向前,以及 YEAR、QUARTER、MONTH 或 DAY。這使得使用複制粘貼和少量編輯創建多個時間智能測量變得非常容易。

初學者終極 DAX 指南

3.除法

LuckyTemplates 中的除法可以通過多種方式完成。最基本的方法是使用簡單的算術除法。

初學者終極 DAX 指南

但是,除以零個案例通常需要在繼續之前進行詳細的測試。幸運的是,有一個 DAX 函數可以為您處理這個問題。

DIVIDE函數自動處理被零除的情況,還允許您添加替代結果因為這比 LuckyTemplates 中的算術除法更簡單,所以代碼更易讀。

初學者終極 DAX 指南

4.開關真

另一個 DAX 代碼是 邏輯。

當您有多個條件要評估時,這將導致您創建多個嵌套的語句,這些語句通常難以閱讀和跟踪。

SWITCH TRUE 語句提供了在以後修改代碼和將條件調整為新條件的靈活性。它也更緊湊,更易於閱讀。

初學者終極 DAX 指南

DAX 虛擬表指南

在 DAX 代碼中構建虛擬表時,使用 函數將列分組到基表中。構造包圍它以添加列。

重申一下,在使用 ADDCOLUMNS 函數的列上使用“ @ ”前綴以防止歧義並確保選擇的虛擬表列是正確的。

此外,在處理虛擬表時,建議使用 DAX Studio 或表格編輯器來協助您。

LuckyTemplates 中的一對錶之間可以有很多關係。默認情況下,DAX 代碼將使用活動關係。但是可以通過使用命令修改它以使用特定的非活動關係。

例如,Dates 表和 Sales 表的 Date 列之間可能存在許多關係。銷售 [Order Date]是活動關係,而Sales [Invoice Date]是非活動關係。當您想在計算中使用銷售額 [訂單日期] 時,不需要額外的努力。但是,如果要在計算中使用銷售 [發票日期],則需要將其與USERELATIONSHIP命令一起使用。

初學者終極 DAX 指南

在 LuckyTemplates 的模型視圖中,將鼠標懸停在實線上會顯示活動關係。而兩條虛線顯示了兩個表中每個元素之間的非活動關係。

初學者終極 DAX 指南

查看示例報表,還可以看出 Sales by Order Date 列、Sales by Invoice Date 列和 Sales by Ship Date 列之間存在差異。

初學者終極 DAX 指南

度量與計算列

對於那些具有 Excel 背景的人來說,使用計算列是一個舒適的地方,因為它允許您查看數據。但 DAX 和 LuckyTemplates 中的最佳實踐是盡可能使用Measures 。

在某些情況下會使用計算列。它們通常被開發為幫助計算可視化的起點。但是,一旦您的頭腦中的計算完全可視化,您就需要隨後用度量替換它們。此外,與度量相比,計算列可以在切片器中使用。

度量不會在計算時增加數據模型的物理大小;它僅在視覺中使用時才起作用。但是,計算列確實會增加數據模型的物理大小,因為它會在每次刷新文件時進行計算和物理存儲。

DAX 分支度量指南

LuckyTemplates 中最有價值的技術之一是度量分支

模塊化代碼的一種好方法是從執行簡單計算的簡單或基本度量開始,然後根據需要組合它們以執行更複雜的計算。將基本和臨時措施放在表格中以查看正在執行的計算。

關於具體措施應該放在哪裡,存在不同的思想流派,所有方法都有利弊。但是在 LuckyTemplates 開發中使用專門的度量值組更有優勢。如果所有度量值都位於“字段”窗格頂部的相同位置,則可以更輕鬆地跟踪 DAX 計算中的邏輯。

初學者終極 DAX 指南

DAX 計算中的上下文

LuckyTemplates 的主要優勢之一是上下文。這也是開發人員最難掌握的概念之一。

上下文是執行計算的環境。

通常會出現兩個上下文:行上下文過濾器上下文。但實際上,還有第三個:求值上下文

這使您回到CALCULATE命令,它再次允許用戶更改計算的上下文。DAX 和 LuckyTemplates 中主要有兩類函數:聚合函數迭代函數

聚合函數是聚合單個列的值的函數。聚合函數的示例包括。雖然大多數聚合函數僅適用於數字或日期值,但 MAX 和 MIN 也適用於文本值。

迭代函數是為表的每一行計算表達式的函數。它們也稱為X 函數。示例包括。它們有兩個參數:要迭代的表和執行計算的表達式。這可以使用來自基表或其他相關表的多個列。

下面是聚合函數和迭代函數如何以不同方式使用但提供相同結果的簡要示例:

初學者終極 DAX 指南

結論

本 DAX 指南旨在幫助仍在探索和學習的 LuckyTemplates 新用戶。對於需要快速復習課程的有經驗的開發人員來說,這作為一站式清單也非常有用。本教程是在 LuckyTemplates 中進行高級報表開發的重要組成部分。

LuckyTemplates 擁有從基礎知識到高級編碼的各種 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 網關?所有你必須知道的