Excel DAX - 数据类型



表是数据模型中的一种新的数据类型。

  • 您可以使用包含多列和多行数据的表作为DAX函数的参数。

  • 某些DAX函数返回表,这些表存储在内存中,可用作其他DAX函数的参数。

Datetime是数据模型中另一种用于日期和时间值的新数据类型。需要日期和/或时间作为参数的DAX函数需要datetime数据类型。

DAX数据类型的摘要

以下是DAX支持的数据类型:

序号 数据类型和描述
1

64位(8字节)整数值

没有小数位的数字。

整数可以是正数或负数,但必须是介于-9,223,372,036,854,775,808 (-2^63) 和 9,223,372,036,854,775,807 (2^63-1) 之间的整数。

2

64位(8字节)实数

实数是可以有小数位的数字。实数涵盖以下值:

  • -1.79E +308 到 2.23E -308 之间的负值

  • 2.23E -308 到 1.79E + 308 之间的正值

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

3

布尔值

4

字符串

Unicode字符数据字符串。

可以是文本格式表示的字符串、数字或日期。

最大字符串长度为268,435,456个Unicode字符(256兆字符)或536,870,912字节。

5

datetime

采用可接受的日期时间表示形式的日期和时间。

有效日期为1900年1月1日之后的所有日期。

6

货币

货币数据类型允许的值范围为-922,337,203,685,477.5808 到 922,337,203,685,477.5807,具有四位固定精度的小数。

7

空值

空值是DAX中的一种数据类型,用于表示和替换SQL空值。您可以使用BLANK函数创建空值,并使用逻辑函数ISBLANK测试空值。

8

表示数据模型中的表。

注意 - 数据模型不支持在Excel中使用的变体数据类型。因此,当您加载或导入数据时,请确保表中每一列的数据类型一致。

DAX函数使用以下数据类型:

  • 标量值,包括字符串。
  • 数字,包括整数和实数。
  • 日期和时间。

如果数据类型不兼容,DAX函数将返回错误。确保表中每一列的数据类型符合要求。如果不符合,您可以从Power Pivot窗口的Ribbon中显式设置数据类型。

您可以在本教程库中的教程 - DAX 函数 中了解每个DAX函数所需的数据类型。

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

您不需要转换或以其他方式指定在DAX公式中使用的列或值的数据类型。当您在DAX公式中使用数据时,DAX会自动识别引用的列和您键入的值中的数据类型,并在必要时执行隐式转换以完成指定的运算。

但是,可以成功转换的值有一些限制。如果值或列的数据类型与当前运算不兼容,DAX将返回错误。

DAX隐式数据转换示例 - 假设您有一个DAX公式,其中您将数字添加到日期。DAX会在使用函数的上下文中解释它。两个参数都转换为公共数据类型,结果以目标数据类型返回。

执行的转换类型由运算符确定,运算符会在执行请求的运算之前转换它所需的值。在以下部分中,您可以找到以下运算符的隐式数据转换表:

  • 加法 (+)
  • 减法 (-)
  • 乘法 (*)
  • 除法 (/)
  • 比较运算符

每个表列出运算符,并指示当列中的每个数据类型与相交行中的数据类型配对时执行的转换。

加法 (+) 的隐式数据转换表

运算符 (+) 整数 货币 实数 DATETIME
整数 整数 货币 实数 DATETIME
货币 货币 货币 实数 DATETIME
实数 实数 实数 实数 DATETIME
DATETIME DATETIME DATETIME DATETIME DATETIME

例如,如果A是货币数据类型,B是实数数据类型,则在计算A+B时,DAX将A转换为实数并将其添加到B。结果将是实数数据类型。

减法 (-) 的隐式数据转换表

行标题是被减数(左侧),列标题是减数(右侧)。

运算符 (-) 整数 货币 实数 DATETIME
整数 整数 货币 实数 实数
货币 货币 货币 实数 实数
实数 实数 实数 实数 实数
DATETIME DATETIME DATETIME DATETIME DATETIME

例如,如果A是整数数据类型,B是实数数据类型,则在计算A-B时,DAX将A转换为实数并从A中减去B。结果将是实数数据类型。

注意 - 数据模型还支持一元运算符 -(负数),但此运算符不会更改操作数的数据类型。

乘法 (*) 的隐式数据转换表

运算符 (*) 整数 货币 实数 DATETIME
整数 整数 货币 实数 整数
货币 货币 实数 货币 货币
实数 实数 货币 实数 实数

例如,如果A是实数数据类型,B是货币数据类型,则要计算A*B,DAX将A转换为货币数据类型并将A与B相乘。结果将是货币数据类型。

除法 (/) 的隐式数据转换表

运算符 (/) 整数 货币 实数 DATETIME
整数 实数 货币 实数 实数
货币 实数 货币 实数 实数
实数 实数 实数 实数 实数
DATETIME 实数 实数 实数 实数

例如,如果A是货币数据类型,B是实数数据类型,则在计算A/B时,DAX将A转换为实数并执行除法。结果将是实数数据类型。

比较运算符的隐式数据转换表

在比较表达式中,DAX遵循以下规则:

  • 布尔值大于字符串值。

  • 字符串值大于数值或日期时间值。

  • 数字和日期时间值被认为具有相同的等级。

  • 布尔值或字符串值不执行隐式数据转换。

  • BLANK或空值根据另一个比较值的数据类型转换为0/""/false。

  • 对于数值或日期时间类型,将如以下表格所示隐式执行数据转换:

比较运算符 整数 货币 实数 DATETIME
整数 整数 货币 实数 实数
货币 货币 货币 实数 实数
实数 实数 实数 实数 实数
DATETIME 实数 实数 实数 DATETIME

DAX如何处理空值、空字符串和零值?

在DAX中,空值、空值、空单元格或缺失值都由相同的特殊值(BLANK)表示。

  • 您可以使用DAX BLANK函数生成BLANK。
  • 您可以使用DAX ISBLANK函数测试BLANK。

DAX在DAX公式或DAX函数中如何处理空值取决于各个操作(例如加法或连接)或特定的DAX函数。

示例

DAX公式 结果
BLANK + BLANK BLANK
BLANK + 5 5
BLANK * 5 BLANK
5 / BLANK 无穷大
0 / BLANK NaN
BLANK / BLANK BLANK
FALSE OR BLANK FALSE
FALSE AND BLANK FALSE
TRUE OR BLANK TRUE
TRUE AND BLANK FALSE
BLANK OR BLANK BLANK
BLANK AND BLANK BLANK
excel_dax_syntax.htm
广告