資料模型中的資料類型

套用到
Microsoft 365 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

在資料模型中,每一欄都有相關聯的資料類型,可指定欄可以容納的資料類型:整數、十進位、文字、貨幣資料、日期和時間等。 資料類型也決定您可以在欄上執行哪些類型的作業,以及將值儲存在欄中所需的記憶體量。

如果您使用的是 Power Pivot 增益集,您可以變更欄的資料類型。 如果日期資料行是匯入為字串,但您需要執行此動作,但您需要它是其他項目。 如需詳細資訊,請參閱設定 Power Pivot 中的 資料行資料類型

本文內容

資料類型摘要

下表列出資料模型中支援的資料類型。 當您匯入資料或在公式中使用值時,即使原始資料來源包含不同的資料類型,資料也會轉換成其中一種資料類型。 公式產生的值也會使用這些資料類型。

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) 。
十進位數字 實數 1、2 的 64 位元 (8 位元組) 實數是可以有小數位數的數字。 實數涵蓋範圍很廣的數值:
從 -1.79E +308 到 -2.23E -308 的負值

從 2.23E -308 到 1.79E + 308 的正值
但是,有效位數的數目限制為 15 位十進位數。
TRUE/FALSE 布林值 True 或 False 值。
文字 String Unicode 字元資料字串。 可以是字串、數字或以文字格式表示的日期。
字串長度上限為 268,435,456 個 Unicode 字元 () 256 個 mega 字元,即 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 如果您嘗試匯入含有非常大數值的資料,匯入可能會失敗並出現下列錯誤:

記憶體內部資料庫錯誤: '<table name>' 資料表的 '<column name>' 欄包含不支援的值 '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 會嘗試判斷數字類型,並以數字表示。

加法 (+)

運算子 (+) 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

例如,如果在乘法運算中將整數與實數結合,則兩個數字都會轉換成實數,且傳回值也是 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”,“運算式為 true”,“運算式為 false”) ,傳回 “運算式為 true”

=IF (“12”>12,“運算式為 true”, “運算式為 false”) ,傳回 “運算式為 true”。

=IF (“12”=12,“運算式為 true”, “運算式為 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 公式在處理空白的方式上的差異。

Expression DAX Excel
空白 + 空白 空白 0 (零)
空白 +5 5 5
空白 * 5 空白 0 (零)
5/空白 Infinity 錯誤
0/空白 NaN 錯誤
空白/空白 空白 錯誤
FALSE 或空白 FALSE FALSE
FALSE 和空白 FALSE FALSE
TRUE 或空白 TRUE TRUE
TRUE 和空白 FALSE TRUE
空白或空白 空白 錯誤
空白和空白 空白 錯誤

如需特定函數或運算子如何處理空白的詳細資訊,請參閱 DAX 函數參考一節中的每個 DAX 函數個別主題。

頁面頂端