資料模型中的資料類型

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

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

如果你使用 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

正值從2.23E -308到1.79E + 308
然而,有效位數的數量限制為15位小數。
正確/錯誤 布林值 要麼是真值,要麼是假值。
文字 String 一個 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 的空值。 你可以用 BLANK 函式建立空白,並用邏輯函式 ISBLANK 測試空白。

1 DAX 公式不支援比表格中列出的資料型別更小。

2 若嘗試匯入數值非常大的資料,匯入可能會因以下錯誤而失敗:

記憶體資料庫錯誤:資料<表「資料表名稱>」的「<欄位名稱>」欄位包含一個值,為「1.7976931348623157e+308」,但不支援。 行動已被取消。

此錯誤是因為 Power Pivot 使用該值來表示空值。 以下列表中的值為零值的同義詞:

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 日期/時間
日期/時間 日期/時間 日期/時間 日期/時間 日期/時間

例如,若在加法運算中使用實數與貨幣資料,兩個值都會轉換為實數,結果則以實數回傳。

減法 ( )

在下表中,列標頭是左邊 (最小) ,欄標頭是右邊 () 的子字。

操作員 ( ) 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

例如,若整數與實數在乘法運算中結合,兩個數字都會轉換成實數,且回傳值也是實數。

(/)

在下表中,列標頭為分子,欄標頭為分母。

操作員 (/)
(列/欄)
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 表達式說明此行為:

=若 (FALSE () >「真」,則「表達式為真」、「表達式為假」) 回傳「表達式為真」

=IF (“12”>12,「表達式為真」、「表達式為假」) ,回傳「表達式為真」。

=如果 (“12”=12,「表達式為真」、「表達式為假」) ,回傳「表達式為假」

數字或日期/時間類型會隱含進行轉換,詳見下表:

比較運算子 INTEGER CURRENCY REAL 日期/時間
INTEGER INTEGER CURRENCY REAL REAL
CURRENCY CURRENCY CURRENCY REAL REAL
REAL REAL REAL REAL REAL
日期/時間 REAL REAL REAL 日期/時間

頁面頂端

處理空白、空字串與零值

在 DAX 中,空值、空白值、空格子或遺失值都會以相同的新值類型 BLANK 表示。 你也可以使用 BLANK 函式產生空白,或使用 ISBLANK 函式來測試空白。

空白在運算中(如加法或串接)如何處理,取決於個別函數。 下表總結了 DAX 與 Microsoft Excel 公式之間的差異,特別是在處理空白字的方式上。

Expression DAX Excel
空白 + 空白 空白 0 (零)
空白 +5 5 5
空白 * 5 空白 0 (零)
5/空白 Infinity 錯誤
0/空白 NaN 錯誤
空白/空白 空白 錯誤
錯誤或空白 FALSE FALSE
虛假且空白 FALSE FALSE
真或空 TRUE TRUE
真與空白 FALSE TRUE
空白還是空白 空白 錯誤
空白,空白 空白 錯誤

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

頁面頂端