- Excel DAX 教程
- DAX - 首页
- DAX - 概述
- DAX - 计算列
- DAX - 计算字段/度量值
- DAX - 编辑计算字段
- DAX - 删除计算字段
- DAX - 语法
- DAX - 运算符
- DAX - 标准参数
- DAX - 函数
- DAX - 理解 DAX 函数
- DAX - 评估上下文
- DAX - 公式
- 更新 DAX 公式的结果
- 更新数据模型中的数据
- DAX - 重新计算 DAX 公式
- DAX 公式重新计算故障排除
- DAX - 公式错误
- DAX - 时间智能
- DAX - 筛选器函数
- DAX - 场景
- 执行复杂计算
- DAX - 文本和日期操作
- 条件值和错误测试
- DAX - 使用时间智能
- DAX - 排名和比较值
- Excel DAX 有用资源
- DAX - 快速指南
- DAX - 有用资源
- DAX - 讨论
Excel DAX - 文本和日期操作
DAX 可用于涉及文本操作、提取和组合日期和时间值或基于条件创建值的场景。您可以使用 DAX 执行以下操作:
- 通过连接创建表中的键列。
- 根据从文本日期中提取的日期部分组合日期。
- 定义自定义日期格式。
- 使用公式更改数据类型。
- 将实数转换为整数。
- 将实数、整数或日期转换为字符串。
- 将字符串转换为实数或日期。
通过连接创建键列
PowerPivot 中的数据模型仅允许一个键列。它不支持您可能在外部数据源中找到的复合键。因此,如果数据源中的表中存在任何复合键,则需要将它们组合成数据模型中表的单个键列。
您可以使用 DAX 函数 CONCATENATE 将两个列组合到数据模型中表的单个列中。DAX 函数 CONCATENATE 将两个文本字符串连接成一个文本字符串。连接的项目可以是文本、数字或布尔值(以文本表示),或这些项目的组合。如果列包含适当的值,您也可以使用列引用。
= CONCATENATE ([Column1], [Column2])
DAX CONCATENATE 函数仅接受两个参数。如果任何参数不是文本数据类型,它将被转换为文本。DAX CONCATENATE 函数返回连接的字符串。
基于从文本日期中提取的日期部分的日期
Power Pivot 中的数据模型支持用于日期和时间值的数据类型 datetime。对日期和/或时间值进行操作的 DAX 函数需要参数为 datetime 数据类型。
如果您的数据源包含不同格式的日期,则需要首先使用 DAX 公式提取日期部分,并将这些部分组合起来构成有效的 DAX datetime 数据类型。
您可以使用以下 DAX 函数来提取和组合日期:
DATE - 以 datetime 格式返回指定的日期。
DATEVALUE - 将文本形式的日期转换为 datetime 格式的日期。
TIMEVALUE - 将文本格式的时间转换为 datetime 格式的时间。
定义自定义日期格式
假设数据源中的日期没有以标准格式表示。您可以定义自定义日期格式以确保正确处理这些值。DAX FORMAT 函数使您能够根据指定的格式将值转换为文本。
FORMAT (<value>, <format_string>)
FORMAT 函数返回一个包含根据 format_string 定义的格式的值的字符串。
您可以使用预定义的日期和时间格式,也可以为 FORMAT 函数的 argument format_string 创建用户定义的日期和时间格式。
以下是预定义的日期和时间格式名称。如果您使用除这些预定义字符串之外的其他字符串,它们将被解释为自定义日期和时间格式。
序号 | Format_String & 描述 |
---|---|
1 | "General Date" 显示日期和/或时间。例如,2015/2/10 上午 10:10:32 |
2 | "Long Date" 或 "Medium Date" 根据长日期格式显示日期。例如,2016年3月7日,星期三 |
3 | "Short Date" 使用短日期格式显示日期。例如,2016/2/3 |
4 | "Long Time" 使用长时间格式显示时间。 通常包括小时、分钟和秒。 例如,上午 10:10:32 |
5 | "Medium Time" 以 12 小时制显示时间。 例如,晚上 09:30 |
6 | "Short Time" 以 24 小时制显示时间。 例如,14:15 |
或者,您可以使用下表中的字符创建用户定义的日期/时间格式。
序号 | 字符 & 描述 |
---|---|
1 | : 时间分隔符。 时间分隔符。在格式化时间值时分隔小时、分钟和秒。 |
2 | / 日期分隔符。 在格式化日期值时分隔日、月和年。 |
3 | % 用于指示应将以下字符读取为单字母格式,而不考虑任何尾随字母。还用于指示将单字母格式读取为用户定义的格式。 |
以下是各种字符的详细信息。
%d - 将日期显示为不带前导零的数字(例如 5)。
%dd - 将日期显示为带前导零的数字(例如 05)。
%ddd - 将日期显示为缩写(例如 Sun)。
%dddd - 将日期显示为完整名称(例如 Sunday)。
%M - 将月份显示为不带前导零的数字(例如,一月表示为 1)。
%MM - 将月份显示为带前导零的数字(例如,一月表示为 01)。
%MMM - 将月份显示为缩写(例如,一月表示为 Jan)。
%MMMM - 将月份显示为完整月份名称(例如,一月)。
%gg - 显示时期/时代字符串(例如,公元)。
%h - 使用 12 小时制显示小时作为不带前导零的数字(例如,下午 1:15:15)。如果这是用户定义的数字格式中的唯一字符,请使用%h。
%hh - 使用 12 小时制显示小时作为带前导零的数字(例如,下午 01:15:15)。
%H - 使用 24 小时制显示小时作为不带前导零的数字(例如,13:15:15、1:15:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %H。
%HH - 使用 24 小时制显示小时作为带前导零的数字(例如,13:15:15、1:15:15)。
%m - 将分钟显示为不带前导零的数字(例如,2:1:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %m。
%mm - 将分钟显示为带前导零的数字(例如,2:01:15)。
%s - 将秒显示为不带前导零的数字(例如,2:15:5)。如果这是用户定义的数字格式中的唯一字符,请使用 %s。
%ss - 将秒显示为带前导零的数字(例如,2:15:05)。
%f - 显示秒的小数部分。例如,ff 显示百分之一秒,而ffff 显示万分之一秒。您可以在用户定义的格式中使用最多七个f 符号。如果这是用户定义的数字格式中的唯一字符,请使用%f。
%t - 使用 12 小时制,并在中午之前显示任何小时的大写 A;在中午和晚上 11:59 之间显示任何小时的大写 P。如果这是用户定义的数字格式中的唯一字符,请使用 %t。
%tt - 对于使用 12 小时制的区域设置,在中午之前显示任何小时的大写 AM;在中午和晚上 11:59 之间显示任何小时的大写 PM。对于使用 24 小时制的区域设置,不显示任何内容。
%y - 显示不带前导零的年份数字(0-9)。如果这是用户定义的数字格式中的唯一字符,请使用%y。
%yy - 以两位数字格式显示年份,如果适用则带前导零。
%yyy - 以四位数字格式显示年份。
%yyyy - 以四位数字格式显示年份。
%z - 显示不带前导零的时区偏移量(例如,-8)。如果这是用户定义的数字格式中的唯一字符,请使用%z。
%zz - 显示带前导零的时区偏移量(例如,-08)。
%zzz - 显示完整的时区偏移量(例如,-08:00)。
您可以观察到,格式字符串区分大小写。通过使用不同的情况可以获得不同的格式。
更改 DAX 公式输出的数据类型
在 DAX 公式中,输出的数据类型由源列确定,您不能显式指定结果的数据类型。这是因为 Power Pivot 会确定最佳数据类型。但是,您可以使用 Power Pivot 执行的隐式数据类型转换来操作输出数据类型。否则,您可以使用某些 DAX 函数来转换输出数据类型。
使用隐式数据类型转换
要将日期或数字字符串转换为数字,请乘以 1.0。例如,= (TODAY()+5)*1.0。此公式计算当前日期加 5 天并将结果转换为整数值。
要将日期、数字或货币值转换为字符串,请将该值与空字符串连接起来。例如,= Today() & “”
使用 DAX 函数进行数据类型转换
您可以将 DAX 函数用于以下目的:
- 将实数转换为整数。
- 将实数、整数或日期转换为字符串。
- 将字符串转换为实数或日期。
您将在以下部分学习此内容。
将实数转换为整数
您可以使用以下 DAX 函数将实数转换为整数:
ROUND (<number>, <num_digits>) - 将数字四舍五入到指定的位数并返回十进制数。
CEILING (<number>, <significance>) - 将数字向上舍入到最接近的整数或最接近的 significance 倍数,并返回十进制数。
FLOOR (<number>, <significance>) - 将数字向下舍入到零,到最接近的 significance 倍数,并返回十进制数。
将实数、整数或日期转换为字符串
您可以使用以下 DAX 函数将实数、整数或日期转换为字符串:
FIXED (<number>, [<decimals>], [<no_comma>]) - 将数字四舍五入并以文本形式返回结果。小数点右边的位数为 2 或指定的位数。结果带逗号或可选地不带逗号。
FORMAT (<value>, <format_string>) - 根据指定的格式将值转换为文本。
您已经学习了如何使用 Format 函数将日期转换为字符串。
将字符串转换为实数或日期
您可以使用以下 DAX 函数将字符串转换为实数或日期:
VALUE (<text>) - 将表示数字的文本字符串转换为数字。
DATEVALUE (date_text) - 将文本格式的日期转换为日期时间格式的日期。
TIMEVALUE (time_text) - 将文本格式的时间转换为日期时间格式的时间。