数据模型中的数据类型

注意:  我们希望能够尽快以你的语言为你提供最新的帮助内容。 本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此内容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗? 请在此处查看本文的 英文版本 以便参考。

在数据模型中,每个列都具有一个关联数据类型,用于指定该列可以容纳的数据类型:整数、小数、文本、货币数据、日期和时间等。数据类型还确定您可以对列执行哪些类型的操作以及在列中存储值所需使用的内存量。

如果您正在使用Power Pivot加载项,您可以更改列的数据类型。 您可能需要执行此操作,如果为字符串,并导入的日期列,但您需要为其他内容。有关详细信息,请参阅Power Pivot中设置列的数据类型

本文内容

数据类型汇总

表数据类型

DAX 公式中的隐式和显式数据类型转换

隐式数据转换表

加号 (+)

减号 (-)

乘法 (*)

除法 (/)

比较运算符

处理空白、 空字符串和零值

数据类型汇总

下表列出了数据模型中支持的数据类型。当您在公式中导入数据或者使用值时,即使原始数据源包含不同的数据类型,该数据也会转换为以下数据类型之一。从公式得到的值也使用这些数据类型。

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 个小数位。

TRUE/FALSE

布尔值

True 或 False 值。

文本

字符串

一个 Unicode 字符数据字符串。可以是字符串,或是以文本格式表示的数字或日期。

最大字符串长度为 268,435,456 个 Unicode 字符(2 亿 5 千 6 百万个字符)或 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 &amp; 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,"Expression is true","Expression is false"),返回"表达式为 true"。

= IF("12"=12,"Expression is true","Expression is 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

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 函数参考一节中的各个主题。

返回页首

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×