📜  Excel DAX-使用文本和日期

📅  最后修改于: 2020-12-01 04:52:03             🧑  作者: Mango


DAX可用于涉及与文本一起工作,提取和组合日期和时间值或基于条件创建值的场景。您可以使用DAX执行以下操作-

  • 通过串联在表中创建键列。
  • 根据从文本日期中提取的日期部分撰写日期。
  • 定义自定义日期格式。
  • 使用公式更改数据类型。
    • 将实数转换为整数。
    • 将实数,整数或日期转换为字符串。
    • 将字符串转换为实数或日期。

通过串联创建键列

PowerPivot中的数据模型仅允许一个键列。它不支持您可能在外部数据源中找到的组合键。因此,如果数据源中的表中存在任何组合键,则需要将它们组合到数据模型中表的单个键列中。

您可以使用DAX函数CONCATENATE将两列合并为数据模型表中的单列。 DAX函数CONCATENATE将两个文本字符串连接为一个文本字符串。合并的项目可以是文本,数字或表示为文本的布尔值,也可以是这些项目的组合。如果列包含适当的值,则也可以使用列引用。

= CONCATENATE ([Column1], [Column2]) 

DAX CONCATENATE函数仅接受两个参数。如果任何参数都不是文本数据类型,则将其转换为文本。 DAX CONCATENATE函数返回串联的字符串。

基于从文本日期中提取的日期部分的日期

Power Pivot中的数据模型支持日期和时间值的数据类型datetime。用于日期和/或时间值的DAX函数需要参数的日期时间数据类型。

如果您的数据源包含不同格式的日期,则需要首先使用DAX公式提取日期部分,然后将这些部分组合以构成有效的DAX日期时间数据类型。

您可以使用以下DAX函数提取和撰写日期-

DATE-以日期时间格式返回指定的日期。

DATEVALUE-将文本形式的日期转换为datetime格式的日期。

TIMEVALUE-将文本格式的时间转换为日期时间格式的时间。

定义自定义日期格式

假设数据源中的日期没有以标准格式表示。您可以定义自定义日期格式以确保正确处理值。 DAX FORMAT函数使您可以根据指定的格式将值转换为文本。

FORMAT (, ) 

FORMAT函数返回一个字符串,该字符串包含由format_string定义的格式的值。

您可以使用预定义的日期和时间格式,也可以为FORMAT函数的参数format_string创建用户定义的日期和时间格式。

以下是预定义的日期和时间格式名称。如果您使用这些预定义的字符串其他字符串,它们将被解释为自定义日期和时间格式。

S. No. Format_String & Description
1

“General Date”

Displays a date and/or time. For example, 2/10/2015 10:10:32 AM

2

“Long Date” or “Medium Date”

Displays a date according to long date format. For example, Wednesday, March 07, 2016

3

“Short Date”

Displays a date using short date format. For example, 2/03/2016

4

“Long Time”

Displays a time using long time format.

Typically includes hours, minutes and seconds.

For example, 10:10:32 AM

5

“Medium Time”

Displays a time in 12-hour format.

For example, 09:30 PM

6

“Short Time”

Displays a time in 24-hour format.

For example, 14:15

或者,您可以使用下表中的字符来创建用户定义的日期/时间格式。

S. No. Character & Description
1

:

Time separator.

Time separator. Separates hours, minutes, and seconds when time values are formatted.

2

/

Date separator.

Separates the day, month, and year when date values are formatted.

3

%

Used to indicate that the following character should be read as a single-letter format without regard to any trailing letters. Also used to indicate that a single-letter format is read as a userdefined format.

以下是各种字符的详细信息。

  • %d-将日期显示为没有前导零(例如5)的数字。

  • %dd-将日期显示为以零开头的数字(例如05)。

  • %ddd-将日期显示为缩写(例如,Sun)。

  • %dddd-将日期显示为全名(例如,星期日)。

  • %M-将月份显示为没有前导零的数字(例如,一月表示为1)。

  • %MM-将月份显示为带有前导零的数字(例如,一月表示为01)。

  • %MMM-将月份显示为缩写(例如,一月表示为一月)。

  • %MMMM-将月份显示为完整的月份名称(例如,一月)。

  • %gg-显示期间/时代字符串(例如AD)。

  • %h-使用12小时制(例如1:15:15 PM)将小时显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用%h

  • hh-使用12小时制(例如01:15:15 PM)将小时显示为以零开头的数字。

  • %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 PM之间的任何时间显示大写字母P,如果这是用户定义的数字格式中的唯一字符,请使用%t。

  • %tt-对于使用12小时制的语言环境,在中午之前的任何时间显示大写AM。在中午和晚上11:59 PM之间的任何时间显示大写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() -将数字四舍五入到指定的位数并返回一个十进制数。

CEILING() -将数字向上舍入到最接近的整数或最接近的有效倍数,并返回一个十进制数。

FLOOR() -将数字向下舍入为0,至最接近的有效倍数,并返回一个十进制数字。

将实数,整数或日期转换为字符串

您可以使用以下DAX函数将实数,整数或日期转换为字符串-

已修正(,[],[]) -四舍五入一个数字并以文本形式返回结果。小数点右边的位数是2或指定的小数位数。结果是逗号或可选地没有逗号。

FORMAT() -根据指定的格式将值转换为文本。

您已经了解了使用Format函数将日期转换为字符串。

将字符串转换为实数或日期

您可以使用以下DAX函数将字符串转换为实数或日期-

VALUE() -将代表数字的文本字符串转换为数字。

DATEVALUE(date_text) -将文本形式的日期转换为日期时间格式的日期。

TIMEVALUE(time_text) -将文本格式的时间转换为日期时间格式的时间。