使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

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

如果使用加载项 Power Pivot ,可以更改列的数据类型。 如果日期列已导入为字符串,可能需要这样做,但需要将其用作其他内容。 有关详细信息,请参阅在 数据类型中设置列 TE102896613 。

本文内容

数据类型摘要

下表列出了数据模型支持的数据类型。 导入数据或在公式中使用值时,即使原始数据源包含不同的数据类型,数据也将被转换为这些数据类型之一。 公式结果的值也使用这些数据类型。

数据中的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) 之间的数字。

十进制数

64 位 (8 字节) 实数 1,2

实数是可以具有小数位数的数字。 实数涵盖各种值:

-1.79E +308 到 -2.23E -308 的负值

2.23E -308 到 1.79E + 308 的正值

但是,有效位数限制为 15 位小数位数。

TRUE/FALSE

布尔

True 或 False 值。

文本

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 之间的值,具有四位固定精度的小数位数。

N/A

空白

空白是 DAX 数据类型表示和替换空值SQL值。 可以使用 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 将尝试确定数字类型,并表示为数字。

添加 (+)

运算符 (+)

INTEGER

CURRENCY

REAL

日期/时间

INTEGER

INTEGER

CURRENCY

REAL

日期/时间

CURRENCY

CURRENCY

CURRENCY

REAL

日期/时间

REAL

REAL

REAL

REAL

日期/时间

日期/时间

日期/时间

日期/时间

日期/时间

日期/时间

例如,如果将实数与货币数据一起用于加法运算,则这两个值将转换为 REAL,结果将返回为 REAL。

减法 (-)

在下表中,行标题是左侧 (minuend) 列标题是右侧 (的) 。

运算符 ()

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","Expression is true", "Expression is false") ,返回"Expression is true"

=IF ("12">12,"Expression is true", "Expression is false") ,返回"Expression is true"。

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

0(零)

BLANK +5

5

5

BLANK * 5

BLANK

0(零)

5/BLANK

无穷大

错误

0/BLANK

NaN

错误

BLANK/BLANK

BLANK

错误

FALSE 或空白

FALSE

FALSE

FALSE 和空白

FALSE

FALSE

TRUE 或空白

TRUE

TRUE

TRUE 和空白

FALSE

TRUE

空白或空白

BLANK

错误

空白和空白

BLANK

错误

有关特定函数或运算符如何处理空白的详细信息,请参阅 DAX 函数参考 部分中每个 DAX 函数的单个主题

返回页首

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×