DAX 基本知識

程闯發表於2024-03-11

資料型別

整數 Integer
十進位制數 Decimal
日期時間DateTime
布林值Boolean
文字String

//這三個我沒用過
貨幣 Currency
變體Variant
二進位制Binary

運算子

( )	 優先計算 ,函式的括號,元組
+    日期型別也可直接加, date(2024,1,1)+1 = date(2024,1,2)
−
*
/
=  
<>   dax裡面沒 != , 只能用這個,或者 前面加 not
>     
>=  
<
<=	
&	 字串拼接的 , 和excel一樣
&&   [CountryRegion] = "USA" && [Quantity]>0
||   [CountryRegion] = "USA" || [Quantity]>0
IN   注意用花括號 ,[CountryRegion] IN {"USA", "Canada"}  
NOT  NOT [Quantity] > 0  && not [CountryRegion] IN {"USA", "Canada"}  

dax建立新表

{
    ( "A", 10, 1.5, DATE ( 2017, 1, 1 ), CURRENCY ( 199.99 ), TRUE ),
    ( "B", 20, 2.5, DATE ( 2017, 1, 2 ), CURRENCY ( 249.99 ), FALSE ),
    ( "C", 30, 3.5, DATE ( 2017, 1, 3 ), CURRENCY ( 299.99 ), FALSE )
}

計算列和度量值

計算列

計算列是新增到模型中的新列 , 類似excel ,每次載入模型的時候計算(有點耗記憶體) ,不參與篩選 可以理解為以下SQL

select a ,b, a+b as c
from table

其中c就是計算列 , 在使用模型的時候和其他列非計算列一模一樣

度量值

可以稱之為一組資料集的聚合,只能是一個值,這個值根據不同的篩選條件生成不同結果,可以理解為以下SQL:

select sum(a)
from table 
where b>1

其中 where條件是可以實時變化的,然後生成不同的結果

變數

只需要兩個關鍵字  VAR RETURN , 必須同時出現
比如下面計算同比:

var a = sum([1])
var b = calculate(sum(1),peryear([date]))
return divide(a-b,b)

使用變數使可讀性增強

常用函式

聚合函式             SUM、AVERAGE、MIN 和 MAX
邏輯函式             AND、FALSE、IF、IFERROR、NOT、TRUE 和 OR
資訊函式             ISBLANK、ISERROR、ISLOGICAL、ISNONTEXT、ISNUMBER 和 ISTEXT
數學函式             INT ,FLOOR,TRUNC
三角函式             COS、COSH、COT、COTH、SIN、SINH、TAN
文字函式             RIGHT, LEFT  LEN, LOWER FIND , FORMAT
轉換函式             FORMAT ( DATE ( 2019, 01, 12 ), "yyyy mmm dd" )
日期和時間函式        DAY ( Calendar[Date] ) MONTH   YEAR