附註: 我們想要以您的語言,用最快的速度為您提供最新的說明內容。 本頁面是經由自動翻譯而成,因此文中可能有文法錯誤或不準確之處。讓這些內容對您有所幫助是我們的目的。希望您能在本頁底部告訴我們這項資訊是否有幫助。 此為 英文文章 出處,以供參考。
在資料模型中,每個資料行都有關聯的資料類型,指定資料行所能保留的資料類型:整數、十進位數字、文字、貨幣資料、日期和時間等等。資料類型也會決定可以在資料行上執行的作業類型,以及在資料行中儲存值所需的記憶體容量。
如果您使用的Power Pivot增益集,您可以變更資料行的資料類型。 您可能需要這麼做為字串,匯入日期資料行,但您需要設為其他項目。如需詳細資訊,請參閱Power Pivot中設定資料行的資料類型。
本文內容
資料類型摘要
下表列出資料模型中支援的資料類型。當您在公式中匯入資料或使用值時,即使原始資料來源包含不同的資料類型,資料也會轉換成以下其中一種資料類型。公式所產生的值也會使用這些資料類型。
Excel 中的資料類型 |
DAX 中的資料類型 |
描述 |
整數 |
64 位元 (八位元組) 整數值 1, 2 |
沒有小數位數的數字。整數可以是正數或負數,但必須是介於 -9,223,372,036,854,775,808 (-2^63) 和 9,223,372,036,854,775,807 (2^63-1) 之間的整數。 |
十進位數字 |
64 位元 (八位元組) 實數 1, 2 |
實數是可以有小數位數的數字。實數涵蓋各種類型的值: 負值是從 -1.79E +308 到 -2.23E -308 零 (0) 正值是從 2.23E -308 到 1.79E + 308 不過,有效位數的數目限制為 15 個小數位數。 |
TRUE/FALSE |
布林值 |
True 或 False 值。 |
文字 |
字串 |
Unicode 字元資料字串。可為以文字格式表示的字串、數字或日期。 最大字串長度為 268,435,456 個 Unicode 字元 (256 百萬個字元) 或 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 值的同義字:
值 |
|
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 會嘗試判斷數字類型,並以數字表示該類型。
加 (+)
運算子 (+) |
整數 |
貨幣 |
實數 |
日期/時間 |
整數 |
整數 |
貨幣 |
實數 |
日期/時間 |
貨幣 |
貨幣 |
貨幣 |
實數 |
日期/時間 |
實數 |
實數 |
實數 |
實數 |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
例如,如果在加法運算中使用實數搭配貨幣資料,兩個值都會轉換為實數,因此傳回的結果為實數。
減 (-)
在下表中,列標題是被減數 (左側),而欄標題則是減數 (右側)。
運算子 (-) |
整數 |
貨幣 |
實數 |
日期/時間 |
整數 |
整數 |
貨幣 |
實數 |
實數 |
貨幣 |
貨幣 |
貨幣 |
實數 |
實數 |
實數 |
實數 |
實數 |
實數 |
實數 |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
日期/時間 |
例如,如果在減法運算中使用日期搭配其他任何資料類型,兩個值都會轉換為日期,因此傳回值也是日期。
附註: 資料模型也支援一元運算子 - (否定),但是這個運算子不會變更運算元的資料類型。
乘 (*)
運算子 (*) |
整數 |
貨幣 |
實數 |
日期/時間 |
整數 |
整數 |
貨幣 |
實數 |
整數 |
貨幣 |
貨幣 |
實數 |
貨幣 |
貨幣 |
實數 |
實數 |
貨幣 |
實數 |
實數 |
例如,如果在乘法運算中結合整數與實數,兩個值都會轉換為實數,因此傳回值也是實數。
除 (/)
在下表中,列標題是被除數 (分子),而欄標題則是除數 (分母)。
運算子 (/) (列/欄) |
整數 |
貨幣 |
實數 |
日期/時間 |
整數 |
實數 |
貨幣 |
實數 |
實數 |
貨幣 |
貨幣 |
實數 |
貨幣 |
實數 |
實數 |
實數 |
實數 |
實數 |
實數 |
日期/時間 |
實數 |
實數 |
實數 |
實數 |
例如,如果在除法運算中結合整數與貨幣值,兩個值都會轉換為實數,因此結果也是實數。
比較運算子
在比較運算式中,會將布林值視為大於字串值,且將字串值視為大於數值或日期/時間值;數字或日期/時間值會視為相同等級。沒有為布林或字串值執行隱含轉換;視其他比較值的資料類型而定,BLANK 或空白值會轉換為 0/""/false。
下列 DAX 運算式說明這項行為:
=IF(FALSE() > 「 true 」,「 運算式為 true 」、 「 運算式為 false 」),會傳回 「 運算式為 true 」
= IF("12">12,"Expression is true","Expression is false"),會傳回 「 運算式為 true 」。
= IF("12"=12,"Expression is true","Expression is false"),傳回 「 運算式為 false 」
針對數值或日期/時間類型所執行的隱含轉換如下表所述:
比較運算子 |
整數 |
貨幣 |
實數 |
日期/時間 |
整數 |
整數 |
貨幣 |
實數 |
實數 |
貨幣 |
貨幣 |
貨幣 |
實數 |
實數 |
實數 |
實數 |
實數 |
實數 |
實數 |
日期/時間 |
實數 |
實數 |
實數 |
日期/時間 |
處理空白、空字串與零值
在 DAX 中,空白值、空儲存格或遺漏的值都會以相同的新值類型 BLANK 加以表示。您可以使用 BLANK 函數產生空白,或使用 ISBLANK 函數進行空白測試。
在運算中空白的處理方式 (例如加入或串連) 會視個別函數而定。下表摘要列出 DAX 和 Microsoft Excel 公式在空白處理方式上的差異。
運算式 |
DAX |
Excel |
BLANK + BLANK |
BLANK |
0 (零) |
BLANK +5 |
5 |
5 |
BLANK * 5 |
BLANK |
0 (零) |
5/BLANK |
無限 |
錯誤 |
0/BLANK |
NaN |
錯誤 |
BLANK/BLANK |
BLANK |
錯誤 |
FALSE OR BLANK |
FALSE |
FALSE |
FALSE AND BLANK |
FALSE |
FALSE |
TRUE OR BLANK |
TRUE |
TRUE |
TRUE AND BLANK |
FALSE |
TRUE |
BLANK OR BLANK |
BLANK |
錯誤 |
BLANK AND BLANK |
BLANK |
錯誤 |
如需特定函數或運算子如何處理空白的詳細資訊,請參閱每個 DAX 函數, DAX 函數參照一節中的個別主題。