在微軟表格模型中,DAX語法的概論

by adonisy 7. 五月 2019 10:05

.DB World國際中文電子雜誌 
作 者:楊先民 
審 稿:張智凱 

前言

你可以透過Data Analysis Expressions (DAX)語言來擴充 Microsoft® SQL Server® Analysis Services tabular。

DAX是一種高度靈活的語言,可以讓你建立量值和計算欄位,以及使用在PivotTable tables 與 PivotChart charts

而本期就來簡單介紹一下 DAX語言。

DAX概論

DAX語言包含了一些函式庫,運算和常數,你可以使用它們來建立公式,用以定義計算欄位和量值,用以擴充微軟
表格模型的內容。

DAX被引入了 第一版PowerPivotforExcel®的 add-in,
作為編寫公式的語言,在PowerPivot for Excel中定義業務邏輯工作簿。
在SQL Server中,你也可以使用DAX用在 SQL Server Analysis中的表格模型中。

DAX使用的種類

你可以透過 DAX來擴充表格模型,使用 DAX,你可以:
 建立基於一些複雜客制運算的欄位和量值。
 建立一個參考到別的資料表的欄位。
 定義父子式的階層。
 建立Key Performance Indicators (KPIs)。

DAX的語法

DAX是基於 Microsoft Excel的公式語法,並且使用一系列的函數,運算和值。
但是,與Excel中的公式不同,DAX不適用於單個單元格或單元格範圍。相反的,你
使用它來處理關聯表格。 DAX也包括Excel公式提供的更高級的功能。 
DAX和Excel公式之間的相似性最大限度地減少了想要學習使用DAX的信息工作者的學習時間
快地採用語言並減少訓練的時間

DAX Function

DAX提供了一系列可用於的功能建立公式。其中許多功能都是
與用於構建公式的那些相同或相似在Excel中。但是,DAX還包括許多附加功能,可以幫助您創建更多
比你複雜而復雜的報表。
僅使用Excel函數。例如,DAX 包括 PivotTable的函數關係,考慮上下文來計算數據透視表中的值,或比較時間
產生期望結果的時期。一個DAX公式可以包含多個可以的函數嵌套在其他功能中(最多64層)

DAX包括幾類功能,包括:

文字:這些功能包括CONCATENATE,TRIM和BLANK。它們基於Excel字符串函數,並使您能夠操縱字串。

資訊:這些功能包括PATH,ISBLANK和ISERROR。它們使您可以測試行值以查看它們是否匹配某種類型的值,例如錯誤或null,以及處理
表中的關係。此類別還包括您可以使用的USERNAME等功能 在SQL Server Analysis Services表格數據模型中實現資料行層級的安全性。

過濾和值:這些功能包括CALCULATE,ALL和FILTER。你可以使用它們以各種方式操縱數據,例如修改計算的上下文,或使用表之間的關係返回特定結果。
這些功能在 Excel中並沒有對應的功能。

邏輯:這些功能包括TRUE,IF,SWITCH和NOT。使用這些功能,您可以執行 SWITCH 進行邏輯測試,以返回有關測試值狀態的信息,並使用
條件邏輯。

數學和三角學:這些功能包括ROUND,FLOOR和POWER。他們是類似於Excel中的數學和三角函數。

統計和匯總。這些函數包括SUM,COUNT,RANKX和DISTINCTCOUNT。它們類似於Excel中的聚合函數

日期和時間:這些功能包括DATE,MONTH和YEAR。它們相當於日期和Excel中的時間函數。

時間智能:這些功能包括PARALLELPERIOD,TOTALYTD和OPENINGBALANCEYEAR。您可以使用這些函數使用Date數據類型處理列
以更複雜的方式;例如,通過比較特定的業務指標週期。

導航和尋查。 DAX旨在處理表格數據中的多個表和列模型。它提供了諸如RELATEDTABLE,USERELATIONSHIP,CROSSJOIN和
LOOKUPVALUE,可用於組合來自多個表的數據。您也可以使用功能例如PATH和PATHITEM,用於在單個表中定義列值的可導航層次結構


DAX的語法和資料型別

DAX在語法上與Excel公式類似語言,所以用戶已經熟練掌握這一領域應該能夠開始創建DAX公式
很快。以下列表總結了基本的DAX語法和約定:


1.所有DAX公式必須以等號開頭(=),然後才是其運算式。

2.運算式可以包含函數,運算,常數和參考資料表中的欄位。
引用的對象名稱運算式,例如資料表名稱,不區分大小寫,可以包含空格。


3.DAX函數若使用資料表和資料列作為輸入的話,為避免歧義,您應該使用完全限定引用列時的名稱。
完全限定名稱唯一標識列,因為它包括列所屬的表的名稱。在列周圍使用方括號
包含空格的表名周圍的名稱和單引號;例如,'Order Date'[Calendar Year].。
您可以使用非限定名稱來引用同一表中的列。
例如,在訂單日期表的上下文中使用時,'Order Date'[Calendar Year].,列可以引用為[Calendar Year]。


4.當你編寫並將一個量值參照到另一個量值時,應該包含該量值方括號中的名稱;例如,[Total Profit]。


雖然DAX公式與Excel公式類似,但有兩個重要區別:

1.Excel公式可以引用單元格或單個單元格的範圍。 DAX公式只能作用於完整的數據表或列。要使用表或列中的行子集,必須使用
用於限制數據的過濾功能

2.DAX所支援的資料型別與Excel識別的資料型別不一定相同。


DAX所支援的資料型別

1.I8 (八位元的整數)
2.R8 (八位元的小數)
3.Boolean,就是TRUE 或 FALSE.
4.String
5.Date/time
6.Currency
7.BLANK,其實在 null有點像,代表空白或是沒有值,可以利用 ISBLANK 函數來測試。
8.Table

在下一期我們將來介紹 DAX的函數。

Tags:

SQL Server資料庫 | 楊先民Adonis Young

不允許評論

NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List