数据模型中的数据类型

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

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

如果您在使用 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 函数的单独主题。

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

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

此信息是否有帮助?

谢谢您的反馈!

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

×