在資料模型中,每一欄都有一個關聯的資料類型,指定欄可以保留的資料類型:全數位、小數位、文字、貨幣資料、日期和時間等等。 資料類型也會決定您可以在資料行上執行哪些操作,以及儲存欄中值需要多少記憶體。
如果您使用的是該 Power Pivot ,您可以變更欄的資料類型。 如果日期欄已以字串形式輸入,您可能需要這麼做,但您需要做為其他專案。 詳細資訊,請參閱在 Power Pivot中設定資料 行#x0。
本文內容
資料類型摘要
下表列出資料模型支援的資料類型。 當您在公式中輸入資料或使用值時,即使原始資料來源包含不同的資料類型,資料會轉換成其中一種資料類型。 公式產生的值也會使用這些資料類型。
資料輸入Excel |
DAX 中的資料類型 |
描述 |
---|---|---|
全數位 |
64 位 (8 位元組) 整數值 1,2 |
沒有小數位數的數位。 整數可以是正數或負數, 但必須是介於 -9,223,372,036,854,775,808 (-2^63) 和 9,223,372,036,854,775,807 (2^63-1) 之間的數位。 |
十進位數 |
64 位 (8 位元組) 實數 1,2 |
實數是可以有小數位數的數位。 實數涵蓋多種值: -1.79E +308 到 -2.23E -308 的負值 零 2.23E -308 到 1.79E + 308 的正值 不過,有效位數的數量限制為 15 個小數位數。 |
TRUE/FALSE |
布林值 |
True 或 False 值。 |
Text (文字) |
String |
Unicode 字元資料字串。 可以是以文字格式表示的字串、數位或日期。 字串長度上限為 268,435,456 Unicode 字元 (256 mb) 或 536,870,912 位元組。 |
日期 |
日期/時間 |
接受的日期-時程表示法中的日期和時間。 有效日期為 1900 年 1 月 1 日之後的所有日期。 |
貨幣 |
貨幣 |
貨幣資料類型允許介於 -922,337,203,685,477.5808 到 922,337,203,685,477.5807 之間的值,以及四位數的固定精確度小數位數。 |
無 |
空白 |
空白是 DAX 中的資料類型,代表及取代SQL Null。 您可以使用 BLANK 函數建立空白,然後使用邏輯函數 ISBLANK 測試空白。 |
1 DAX 公式不支援比資料表中所列的小資料類型。
2 如果您嘗試輸入數值非常大的資料,則輸入可能會失敗,併發生下列錯誤:
記憶體資料庫錯誤:'<資料表名稱>' 資料表的 '<欄名稱>' 欄包含值 '1.7976931348623157e+308',不受支援。 作業已取消。
發生此錯誤是因為 Power Pivot 值代表 Null。 下列清單中的值是 Null 值的同名:
Value (值) |
|
---|---|
9223372036854775807 |
|
-9223372036854775808 |
|
1.7976931348623158e+308 |
|
2.2250738585072014e-308 |
移除資料中的值,然後再次嘗試輸入。
資料表資料類型
DAX 會在許多函數中使用資料表資料類型,例如匯總和時間智慧計算。 某些函數需要參照資料表;其他函數會返回資料表,然後做為其他函數的輸入。 在某些需要資料表做為輸入的函數中,您可以指定評估為表格的運算式;在某些函數中,必須參照基本資料表。 有關特定函數需求的資訊,請參閱 DAX 函數參考。
DAX 公式中的隱含和明確資料類型轉換
每個 DAX 函數對於用來做為輸入和輸出的資料類型都有特定需求。 例如,有些函數需要整數來表示某些引數和日期,而有些函數則需要整數。其他函數需要文字或表格。
如果您指定為引數的欄中的資料與函數所需的資料類型不相容,則 DAX 在許多情況下會返回錯誤。 不過,DAX 會盡可能嘗試將資料隱含轉換為必要的資料類型。 例如:
-
您可以將日期輸入為字串,DAX 會剖析該字串,並嘗試將字串Windows日期和時間格式之一。
-
您可以新增 TRUE + 1,並取得結果 2,因為 TRUE 會隱含轉換成數位 1,而操作 1+1 會執行。
-
如果您在兩個數據行中新增值,而其中一個值正好以文字 ("12") 表示,另一個值則以數位 (12) 表示,DAX 會隱含地將字串轉換為數字,然後為數值結果加上值。 下列運算式會返回 44:= "22" + 22
-
如果您嘗試串串兩個數字,Excel字串,然後串串。 下列運算式會返回"1234":= 12 & 34
下表摘要列出在公式中執行的隱含資料類型轉換。 Excel如指定作業所需,盡可能執行隱含轉換。
隱含資料轉換資料表
執行的轉換類型是由運算子決定,運算子會先轉換所需的值,然後再執行要求的操作。 這些資料表會列出運算子,並指示資料行中與相交列中的資料類型配對時,對資料行中每個資料類型執行的轉換。
附註: 這些資料表中不包含文字資料類型。 當數位以文字格式表示時,在某些情況下 Power Pivot 會嘗試判斷數位類型,然後以數位表示。
新增 (+)
運算子 (+) |
INTEGER |
CURRENCY |
REAL |
日期/時間 |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
日期/時間 |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
日期/時間 |
REAL |
REAL |
REAL |
REAL |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
例如,如果在加法作業中搭配貨幣資料使用實數,這兩個值會轉換成 REAL,而結果會以 REAL 方式返回。
減法 (-)
在下表中,列標題是左側 (的最小值) 而欄標題是右側 (子) 。
運算子 (-) |
INTEGER |
CURRENCY |
REAL |
日期/時間 |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
例如,如果一個日期用於具有任何其他資料類型的減法運算中,這兩個值會轉換成日期,而退貨值也是日期。
附註: 資料模型也支援一元運算子 , (負) ,但此運算子不會變更運算元的資料類型。
乘法 (*)
運算子 (*) |
INTEGER |
CURRENCY |
REAL |
日期/時間 |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
INTEGER |
CURRENCY |
CURRENCY |
REAL |
CURRENCY |
CURRENCY |
REAL |
REAL |
CURRENCY |
REAL |
REAL |
例如,如果在乘法運算中將整數與實數結合,這兩個數字會轉換成實數,而 return 值也是 REAL。
除 (/)
在下表中,列標題是分子,而欄標題是分母。
運算子 (/) (列/欄) |
INTEGER |
CURRENCY |
REAL |
日期/時間 |
---|---|---|---|---|
INTEGER |
REAL |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
REAL |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
日期/時間 |
REAL |
REAL |
REAL |
REAL |
例如,如果整數與除法運算中的貨幣值結合,這兩個值會轉換成實數,結果也是實數。
比較運算子
在比較運算式中,布林值會視為大於字串值,而字串值則視為大於數值或日期/時間值;數位和日期/時間值會視為具有相同的排名。 不會針對布林值或字串值執行隱含轉換;BLANK 或空白值會根據其他比較值的資料類型,轉換成 0/""/false。
下列 DAX 運算式說明此行為:
=IF (FALSE () >"true","Expression 為 true","Expression 為 false") ,會返回"運算式為 True"
=IF ("12">12,"Expression 為 true","Expression 為 false") ,會返回"運算式為 True"。
=IF ("12"=12,"Expression 為 True","Expression 為 false") ,會返回「運算式為 false」
如下表所述,對數值或日期/時間類型隱含執行轉換:
比較運算子 |
INTEGER |
CURRENCY |
REAL |
日期/時間 |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
日期/時間 |
REAL |
REAL |
REAL |
日期/時間 |
處理空白、空白字串和零值
在 DAX 中,Null、空白值、空白儲存格或遺失的值都由相同的新數值型別 BLANK 表示。 您也可以使用 BLANK 函數產生空白,或使用 ISBLANK 函數測試空白。
在運算中處理空白的方式 ,例如加法或串聯,取決於個別函數。 下表摘要列出 DAX 和 Microsoft Excel公式之間的差異,以處理空白的方式。
運算式 |
DAX |
Excel |
---|---|---|
BLANK + BLANK |
空白 |
0 (零) |
BLANK +5 |
5 |
5 |
BLANK * 5 |
空白 |
0 (零) |
5/BLANK |
無限 |
錯誤 |
0/BLANK |
南 |
錯誤 |
空白/空白 |
空白 |
錯誤 |
FALSE 或空白 |
FALSE |
FALSE |
FALSE 和空白 |
FALSE |
FALSE |
TRUE 或空白 |
TRUE |
TRUE |
TRUE 和空白 |
FALSE |
TRUE |
空白或空白 |
空白 |
錯誤 |
空白和空白 |
空白 |
錯誤 |
有關特定函數或運算子如何處理空白的詳細資訊,請參閱 DAX 函數參照一節中每個 DAX 函數的個別主題。