DAX 這是什麼?
DAX = Data Analysis Expressions
DAX 函數只能在 DAX 公式 中使用。
讓我們一起來,快速學習 DAX 基本概念 - http://office.microsoft.com/zh-tw/excel-help/HA102891601.aspx?CTT=1
範例:「Contoso 範例 DAX 公式.xlsx」活頁簿
下載:http://www.microsoft.com/en-us/download/details.aspx?id=28572
我們需要在三個重要的基礎概念上建構 DAX:語法、函數和內容。
語法
在您建立公式之前,讓我們看看 DAX 公式語法。語法包含構成公式的各種元素,簡單地說,公式如何撰寫。例如,讓我們看一個簡單 DAX 公式,該公式用來在 FactSales 資料表中針對計算結果欄 (名為 Margin) 的每個資料列建立新資料 (值):(公式文字色彩僅做為說明之用)
此公式的語法包含下列元素:
- 等號運算子 (=) 指出公式的開頭,計算此公式時會傳回結果或值。計算值的所有公式都是以等號做為開頭。
- 被參考資料行 [SalesAmount] 包含被減數的值。在公式中資料行參考一律以方括號 [] 括住。不同於參考資料格的 Excel 公式,DAX 公式一律參考資料行。
- 減法 (-) 數學運算子。
- 被參考資料行 [TotalCost] 包含要從 [SalesAmount] 資料行值減去的值。
函數
函數是預先定義的公式,可使用依特定順序或結構指定的特定值 (稱為引數) 執行計算。引數可以是其他函數、另一個公式、資料行參考、數字、文字、邏輯值 (例如 TRUE 或 FALSE) 或常數。
DAX 包含下列函數類別目錄:日期和時間、資訊、邏輯、數學、統計、文字以及時間智慧函數。如果您熟悉 Excel 公式中的函數,很多 DAX 函數似乎相似,不過,DAX 函數在以下方面不同:
- DAX 函數一律參考完整的資料行或資料表。如果您只要使用資料表或資料行中的特定值,可以將篩選加入至公式。
- 如果您需要逐資料列自訂計算,DAX 提供的函數可讓您使用目前的資料列值或相關的值來當做某種引數,以便執行依內容而改變的計算。您將在稍後學習內容。
- DAX 包含的許多函數都會傳回資料表,而不是傳回值。此資料表不會顯示,但是會用來提供其他函數的輸入。例如,您可以擷取資料表,然後計算其中相異值的數目,或是計算橫跨篩選資料表或資料行的動態總和。
- DAX 包含各種不同的時間智慧函數。這些函數可讓您定義或選取日期範圍,並根據這些日期範圍執行動態計算。例如,您可以比較平行期間的總和。
內容
內容是要了解的最重要 DAX 概念之一。DAX 有兩種內容:資料列內容和篩選內容。
資料列內容
資料列內容可以簡單地視為目前的資料列。
篩選內容
比起資料列內容,篩選內容稍微難了解。篩選內容可以簡單地視為:在計算中套用並決定結果或值的一個或多個篩選。
篩選內容不是用來取代資料列內容,而是除了資料列內容之外,還予以套用。例如,若要進一步縮小包含在計算的值,您可以套用篩選內容,這樣不僅指定資料列內容,也指定該資料列內容中的特定值 (篩選)。
樞紐分析表中可以輕易看到篩選內容。例如,當您將 TotalCost 加入至 [值] 區域,然後將 Year 和 Region 加入至資料列或資料行時,就會定義篩選內容,用以根據給定年份和區域選取資料子集。
為什麼篩選內容對 DAX 這麼重要?因為在樞紐分析表中,可藉由新增資料行和資料列標籤和交叉分析篩選器,輕鬆套用篩選內容,而在 DAX 公式中,也可以藉由使用函數 (例如 ALL、RELATED、FILTER、CALCULATE)、關聯性,以及其他導出欄位和資料行,套用篩選內容。例如,讓我們看看 StoreSales 導出欄位的下列公式:
很清楚,此公式比前述的某些其他公式更複雜。不過,若要進一步了解這個公式,我們可以將它分解,就如同其他公式一樣。
此公式包含下列語法元素:
- 導出欄位名稱 StoreSales,後面接著冒號 :。
- 等號運算子 (=) 指出公式的開頭。
- CALCULATE 函數評估內容中指定之篩選修改過的運算式 (做為引數)。
- 括號 () 括住一個或多個引數。
- 相同資料表中的導出欄位 [Sales],做為運算式。Sales 導出欄位的公式:=SUM(FactSales[SalesAmount])。
- 逗號 (,) 分隔每個篩選。
- 被參考資料行與特定的值 DimChannel[ChannelName] =”Store”,做為篩選。
此公式可確保只針對具有 “Store” 值的 DimChannel[ChannelName] 資料行的所有資料列 (做為篩選),來計算銷售值 (Sales 導出欄位所定義,做為篩選)。
沒有留言:
張貼留言