使用各種關鍵字和函數的 DAX 查詢示例

使用各種關鍵字和函數的 DAX 查詢示例

在本教程中,您將了解 DAX Studio 中的各種關鍵字和函數,每個關鍵字和函數都有一個特定的查詢示例。

具體來說,您將了解 ORDER BY 和 START AT 關鍵字,以及 TOPNSKIP 和 ADDMISSINGITEMS 函數。

目錄

DAX 查詢示例:ORDER BY 關鍵字

ORDER BY關鍵字允許您對數據集進行排序。

基本示例

例如,通過使用 ORDER BY 關鍵字,您可以按字母順序對列進行排序。

使用各種關鍵字和函數的 DAX 查詢示例

您可以看到第一行數據以“A”開頭。DAX Studio 的默認排序順序是升序

如果您希望數據按降序顯示,請編寫DESC。因此,在此示例中,品牌列將以“W”開頭,而不是 A。

使用各種關鍵字和函數的 DAX 查詢示例

同樣,如果你想把它變回升序,寫ASC。您還可以一次對多個列進行排序。您可以通過編寫所需的列來完成此操作,每一列都用逗號分隔。

使用各種關鍵字和函數的 DAX 查詢示例

真實世界的例子

現在讓我們來看一個使用 ORDER BY 關鍵字的簡單實際應用程序。這與TABLE 關鍵字教程中使用的示例相同。

使用各種關鍵字和函數的 DAX 查詢示例

您可以看到該表返回 3 列。第一個是產品類型,由 Boring 和 Trendy 組成。第二列顯示按產品類型劃分的總銷售額。第三個返回銷售百分比。

在此示例中,您需要創建一個新列來對產品類型進行排序。所以在語句之後,寫上COLUMN 關鍵字,然後是要創建的列的名稱。

使用各種關鍵字和函數的 DAX 查詢示例

此列的公式與 IF 語法相同,但不是“Trendy”和“Boring”,此列將顯示“1”代表 Trendy,“2”代表 Boring。

要在表中查看此列,請將其寫在 EVALUATE 語法下。

使用各種關鍵字和函數的 DAX 查詢示例

然後您會看到一個新列 Product Type Sort 添加到由數字 1 和 2 組成的表中。

要對該列進行排序,請在語法之後寫入ORDER BY關鍵字。然後在列名之後,根據您希望列的排序順序寫入 ASC 或 DESC。

使用各種關鍵字和函數的 DAX 查詢示例

DAX 查詢示例:START AT

接下來您將學習START AT關鍵字。

START AT 是一個已棄用的關鍵字。對於大多數 DAX 查詢,不建議使用它。但是,您可能仍會找到一些使用它的 DAX 代碼。所以了解它是什麼以及在什麼情況下可以使用它仍然很重要。

基本示例

首先,編寫 EVALUATE 關鍵字。此示例使用 Products 表。在編寫 START AT 之前,請先使用ORDER BY,然後指定要包括的列。

使用各種關鍵字和函數的 DAX 查詢示例


然後你可以寫 START AT。此語法將遵循類似於您在 ORDER BY 下編寫列的順序。對於此示例,Products Key 列將從“2”開始,Brand 列將從“Contoso”開始。

使用各種關鍵字和函數的 DAX 查詢示例

當您按 F5 時,您可以在結果表中看到指定的列遵循查詢的方向。

現在讓我們看看添加另一列時會發生什麼。在這種情況下,顏色列應從“銀色”開始。

使用各種關鍵字和函數的 DAX 查詢示例

運行此查詢時,您可以看到 Color 列下的第一個條目是“white”。使用 START AT 時,不保證結果始終符合所有條件。

對於此示例,Products 表中沒有實例在同一行中包含 2、Contoso 和 Silver。相反,DAX 引擎會嘗試創建與您創建的查詢的最佳匹配。

複雜的例子

讓我們看另一個例子:

使用各種關鍵字和函數的 DAX 查詢示例

在 EVALUATE 之後,寫入 ORDER BY 關鍵字,後跟三個指定的列。之後,寫入 START AT。在這種情況下,Color 列應從“Red”開始,Gender 列應從“M”開始,而 Store Key 列應從“2”開始。

使用各種關鍵字和函數的 DAX 查詢示例

運行查詢後,您可以看到 DAX 引擎已盡力匹配指定的參數。

在結果中,您可以看到有兩列是正確的,而 Store Key 列從 199 而不是 2 開始。這是因為此示例的數據模型中不存在 2 的 Store Key。

緩慢的 DAX 引擎

單擊主頁選項卡下的服務器計時按鈕。

使用各種關鍵字和函數的 DAX 查詢示例

底部將出現一個新選項卡。單擊“運行”下拉箭頭中的“清除緩存”和“運行”按鈕。

使用各種關鍵字和函數的 DAX 查詢示例

您可以看到 DAX Studio 執行查詢需要 142 毫秒。如果您刪除 START AT 語法並再次運行代碼,您會看到這只需要 11 毫秒即可執行。

使用各種關鍵字和函數的 DAX 查詢示例

如果存在 START AT 語法,則查詢需要更長的時間才能運行,因為它會調用 DAX 引擎的行為CallBackDataID

START AT 使您的代碼非常慢。如果不需要使用它,最好避免使用它。

它對您正在編寫的 DAX 代碼的整體性能有重大影響。這就是為什麼最好使用其他類似功能的原因。

DAX 查詢示例:TOPNSKIP 函數

您將在本教程中學習的下一件事是TOPNSKIP函數。此函數類似於,但它有一個細微差別以及一個附加參數。為了進一步理解這一點,讓我們看一個例子。

TOPN 與 TOPNSKIP

首先,編寫 EVALUATE 關鍵字。然後,在下面編寫 TOPN 參數以查看 Products 表的前 100 行。

使用各種關鍵字和函數的 DAX 查詢示例

此表還根據產品密鑰列的升序進行了排序。

現在,將 TOPN 替換為 TOPNSKIP。在第二個參數中,提供要跳過的行數。在此示例中,指定了 10。

使用各種關鍵字和函數的 DAX 查詢示例

運行此命令時,您會看到產品密鑰列現在從 11 開始到 110 結束。請注意,您不能在計算表或表格數據模型中使用 TOPNSKIP 函數。

另一個例子

在下一個示例中,讓我們查看 Customer 表中的前 5000 行。此表相對於 Gender 列按升序排序。

如果使用 TOPN 函數,您可以看到該表返回 9,518 行。這意味著即使您已指定僅顯示前 5000 行,一些數據仍未過濾。

使用各種關鍵字和函數的 DAX 查詢示例

但是,如果您使用 TOPNSKIP 函數,您會看到該表僅返回 Gender 列中的前 5,000 行。

使用各種關鍵字和函數的 DAX 查詢示例

因此,即使 Customer's Gender 列對特定性別有多個規則,TOPNSKIP 函數也只會返回前 5,000 行。使用 TOPN 函數時無法保證此結果。

DAX 查詢示例:ADDMISSINGITEMS 函數

最後,讓我們看看DAX Studio 中的ADDMISSINGITEMS函數。

當您使用 SUMMARIZECOLUMNS 時,默認情況下它會嘗試從結果中刪除空白行。例如,我們可以編寫一個查詢來匯總產品顏色、產品品牌和客戶性別。

使用各種關鍵字和函數的 DAX 查詢示例

按 F5 時,您可以看到該表返回三列。Gender 列由 3 種類型的性別組成:Male、Female 和 Blank。Blank代表公司。您還可以看到它返回了 333 行。

但是,如果您創建一個 Total Sales 列,SUMMARIZECOLUMNS 過濾器將刪除包含 Total Sales 空白值的行。該表現在只包含 323 行,而不是 333 行。

使用各種關鍵字和函數的 DAX 查詢示例

有 2 個選項可以恢復這些行。第一個選項是在 Total Sales 之後添加一個零。在結果中,您可以看到有 10 行的總銷售額返回零值。

使用各種關鍵字和函數的 DAX 查詢示例

但是,此選項並不總能產生最佳結果。相反,您可以使用一個特定的函數來解決此問題:ADDMISSINGITEMS 函數

要使用此函數,請將其放在 EVALUATE 之後。在第一個參數中,寫列。您還需要將這些列粘貼到 SUMMARIZECOLUMNS 的 groupBy 參數中。

使用各種關鍵字和函數的 DAX 查詢示例

運行此查詢時,您會看到該表現在返回 333 行。

使用各種關鍵字和函數的 DAX 查詢示例

如果您對 Total Sales 列進行排序並刪除零,則該表將在 Total Sales 列下返回​​空白值。

使用各種關鍵字和函數的 DAX 查詢示例

因此,該表不會報告零,而是為 SUMMARIZECOLUMNS 函數刪除的行返回空白。

使用 ADDMISSINGITEMS 和 FILTER

您還可以將ADDMISSINGITEMS函數與一起使用。例如,讓我們過濾掉包含“Tailspin Toys”的行。在查詢中,表示 Brand 列不得包含 ( <> ) Tailspin Toys。

使用各種關鍵字和函數的 DAX 查詢示例

當您按 F5 時,您可以看到該表現在只返回 331 行。因此,包含“Tailspin Toys”品牌的那兩行被刪除了。

結論

本教程中討論的兩個關鍵字和兩個函數是您在 DAX Studio 中創建查詢時需要具備的基本知識。在處理更複雜的實際應用程序時,這些將派上用場。

DAX Studio 是用於執行和分析 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 網關?所有你必須知道的