FORMAT
根据指定的 format将 value 转换为文本。
语法
FORMAT(<value>, <format_string>[, <locale_name>])
参数
术语 | 定义 |
---|---|
value |
计算结果为单个 value的 valueor 表达式。 |
format_string |
具有格式设置模板的字符串。 |
locale_name |
(可选)函数要使用的区域设置的名称。 可能的 values 是 Windows API 函数 LocaleNameToLCID()接受的字符串。 |
返回 value
一个字符串,包含格式化为 value
定义的 format_string
。
注意
If
value
为 BLANK,该函数返回空字符串。
If
format_string
BLANK,value 格式为“常规数字”or“常规 Date”format(根据 value
数据类型)。
言论
预定义 format 字符串在设置结果格式时使用模型区域性属性。 默认情况下,根据计算机的用户区域设置设置模型区域性属性。 对于新的 Power BI Desktop 模型,可以在选项 > 区域设置 > 模型语言中更改模型区域性属性。 对于 Analysis Services,模型区域性是根据实例最初定义的 Language 属性设置的。
作为 DAXFORMAT 函数参数支持的 format 字符串基于 Visual Basic (OLE 自动化)使用的 format 字符串,not .NET Framework 使用的 format 字符串。 因此,or 参数与任何定义的 formaterrorif 字符串不匹配时,可能会得到意外的结果。 例如,不支持“p”作为“Percent”的缩写。 作为参数提供给预定义 format 字符串列表中的 FORMAT 函数的字符串作为自定义 format 字符串的一部分进行处理,or 为字符串文本。
若要详细了解如何使用 FORMAT指定区域设置,请查看此 视频。
使用 FORMAT 将 measure 结果更改为文本数据类型。 If measure 结果最初是数值数据类型,然后使用 FORMAT,measure 不能用于 values 节需要数值数据类型的视觉对象,例如图表。 在 Power BI 中,还可以对度量值使用 动态 format 字符串, 指定一个条件 format 字符串,该字符串维护 measure的数字数据类型。
在计算列 or 行级别安全性 (RLS) 规则中使用时,not 支持在 DirectQuery 模式下使用此函数。
例子
Format 字符串
= FORMAT( 12345.67, "General Number")
= FORMAT( 12345.67, "Currency")
= FORMAT( 12345.67, "Fixed")
= FORMAT( 12345.67, "Standard")
= FORMAT( 12345.67, "Percent")
= FORMAT( 12345.67, "Scientific")
返回:
12345.67“常规编号”显示没有格式的数字。
$12,345.67“Currency”显示带 currency 区域设置格式的数字。 此处的 sample 显示默认的美国 currency 格式。
12345.67“Fixed”向小数分隔符的 left 显示至少一位数字,and 小数分隔符 right。
12,345.67“标准”显示小数分隔符 left 至少一位数字,and 小数点分隔符 right,and 包括千位分隔符。 此处的 sample 显示默认的美国数字格式。
1,234,567.00 %“百分比”将数字显示为百分比(乘以 100),格式 and 单个空格分隔的数字 right 的百分比 sign。
1.23E+04“科学”以科学表示法显示数字,其中包含两个十进制数字。
带可选locale_name的日期/时间
= FORMAT( dt"2020-12-15T12:30:59", BLANK(), "en-US" )
= FORMAT( dt"2020-12-15T12:30:59", BLANK(), "en-GB" )
= FORMAT( dt"2020-12-15T12:30:59", "mm/dd/yyyy", "en-GB" )
返回:
2020/12/15 下午 12:30:59month 前 dayandtime 为 12 -hourformat。
2020/15/12 12 12:30:59day 前 monthandtime 为 24-hourformat。
2020/12/15 12:30:59monthdayandtime 之前为 24-hourformat。 由于指定了非区域设置依赖 format 字符串,因此 not 应用区域设置,and 返回非区域设置 format。
预定义的数字格式
可以在 format_string
参数中指定以下预定义的数字格式:
Format |
描述 |
---|---|
"General Number" |
显示没有千位分隔符的数字。 |
"Currency" |
显示具有千位分隔符的数字,if 适当;显示小数分隔符 right 的两位数字。 输出基于系统区域设置。 |
"Fixed" |
向小数点分隔符的 right 显示 leftand 两位数字至少显示一个数字。 |
"Standard" |
显示具有千位分隔符的数字,leftand 两位数字中至少有一位数字与小数点分隔符的 right。 |
"Percent" |
显示数字乘以 100,sign(%)立即追加到 right;始终向小数点分隔符的 right 显示两位数字。 |
"Scientific" |
使用标准科学表示法,提供两个有效数字。 |
"Yes/No" |
显示“无 if 数字为 0;否则,显示“是”。 |
"True/False" |
显示 Falseif 数字为 0;否则,显示 True。 |
"On/Off" |
显示 Off if 数字为 0;否则,显示“打开”。 |
自定义数值格式
数字的自定义 format 表达式可以包含用分号分隔的一到三个部分。 If format 字符串参数 contains 一个命名数字格式,则只允许一个节。
使用 If | 结果为 |
---|---|
仅一节 | format 表达式适用于 allvalues。 |
两个部分 | first 节适用于正 valuesand 零,second 应用于负 values。 |
三个部分 | first 部分适用于正 values,second 为负 values,and 第三个为零。 |
"$#,##0;($#,##0)"
If 在两者之间不包含分号,则缺少的节是使用正 value的 format 定义的。 例如,以下 format 使用 first 部分中的 format 显示正 and 负 values,and 显示“零”,ifvalue 为零。
"$#,##0"
If 在分号之间不包含任何分号,则使用正 value的 format 显示缺失部分。
自定义数字 format 字符
可以在 format_string
参数中指定以下自定义数字 format 字符:
字符 | 描述 |
---|---|
None | 显示没有格式的数字。 |
(0 ) |
数字占位符。 在零 or 显示数字。 If 表达式在 0 出现在 format 字符串中的位置有一个数字,显示它;否则,在该位置显示零。If 数字的数字比 format 表达式中的零(小数的两侧)少,显示前导 or 尾随零。 If 小数点分隔符 right 的数字数大于 format 表达式中小数分隔符 right 的零,round 数字到与零位一样多的小数位数。 If 该数字与 format 表达式中小数分隔符 leftleft 的数字多,显示额外的数字而不修改。 |
(# ) |
数字占位符。 不显示数字 or 任何内容。 If 表达式在 #出现在 format 字符串中的位置有一个数字,显示它;否则,不在该位置显示任何内容。 此符号的工作方式类似于 0 位占位符,exceptif 数字前导 and 尾随零的显示方式与 format 表达式中小数分隔符两侧的 #字符数相同 or 更少。 |
(. ) |
十进制占位符。 在某些区域设置中,逗号用作小数分隔符。 小数占位符确定向小数点分隔符的 leftandright 显示多少位数。 If format 表达式 contains 此符号的 left,小于 1 的数字以小数分隔符开头。 若要显示以小数显示的前导零,请使用 0 作为数字占位符 first 小数分隔符 left。 格式输出中用作小数占位符的实际字符取决于系统识别的数字 Format。 |
(% ) |
百分比占位符。 表达式乘以 100。 百分比字符(% )插入到 format 字符串中显示的位置。 |
(, ) |
千位分隔符。 在某些区域设置中,句点用作千位分隔符。 千位分隔符将数千个分隔符与一个数字中的数百个分隔开来,该数字有四个 or 更多位到小数点分隔符的 left。
if 以数字占位符(0 or# )括起来的千位分隔符 formatcontains 指定了千位分隔符的标准使用。 两个相邻的千位分隔符 or 一千位分隔符,该分隔符立即与小数分隔符的 left(是否指定 ornot 小数)表示“根据需要将其除以 1000 来缩放数字”。例如,可以使用 format 字符串“##0”将 1 亿表示为 100。 小于 100 万的数字显示为 0。 除紧接到小数点分隔符 left 以外的任意位置,两个相邻的千位分隔符只被视为指定千位分隔符的使用。 格式输出中用作千位分隔符的实际字符取决于系统识别的数字 Format。 |
(: ) |
Time 分隔符。 在某些区域设置中,其他字符可用于表示 time 分隔符。 当格式化 timevalues 时,time 分隔符分隔小时、分钟、and 秒。 用作格式化输出中的 time 分隔符的实际字符由系统设置确定。 |
(/ ) |
Date 分隔符。 在某些区域设置中,其他字符可用于表示 date 分隔符。 当格式化 datevalues 时,date 分隔符分隔 daymonthandyear。 用作格式化输出中的 date 分隔符的实际字符由系统设置确定。 |
(E- E+ e- e+ ) |
科学 format。
If
format 表达式 contains 至少一个数字占位符(0 or# )到 E-、E+、e-、or e+的 right,数字在科学 formatand E or e 之间插入其指数 and。
right 的数字占位符数决定了指数中的位数。 使用 E- or e- 将减 signnext 置于负指数。 使用 E+ or e+ 将减 signnext 置于负指数,and 加指数 signnext 为正指数。 |
- + $ () |
显示文本字符。 若要显示除列出的字符以外的字符,请在其前面加上反斜杠(\ ),or 用双引号(“ ) 将其括起来。 |
(\\ ) |
在 format 字符串中显示 next 字符。 若要将具有特殊含义的字符显示为文本字符,请在其前面加上反斜杠(\ )。 不显示反斜杠本身。 使用反斜杠与将 next 字符括在双引号中相同。 若要显示反斜杠,请使用两个反斜杠(\\ )。 无法显示为文本字符的字符示例是 date格式 andtime格式字符(a, c, d, h, m, n, p, q, s, t, w, y, /, and :), 数字格式字符 (#, 0, %, E, e, 逗号, and 句点), and 字符串格式字符 (@, &, <, >, and !)。 |
(“ABC”) | 在双引号 (“ ) 内显示字符串。 |
预定义的 date/time 格式
可以在 format_string
参数中指定以下预定义的 date/time 格式。 使用这些格式以外的格式时,它们被解释为自定义 date/timeformat:
Format | 描述 |
---|---|
"General Date" |
显示 dateand/ortime。 例如,2008/3/12 上午 11:07:31。 Date 显示取决于应用程序的当前区域性 value。 |
"Long Date" or "Medium Date" |
根据当前文化的长 dateformat显示 date。 例如,2008 年 3 月 12 日星期三。 |
"Short Date" |
使用当前区域性的短 dateformat显示 date。 例如,2008/3/12。 |
"Long Time" or |
使用当前区域性的长 timeformat显示 time;通常包括小时、分钟、秒。 例如,上午 11:07:31。 |
"Medium Time" |
在 12 hourformat中显示 time。 例如,上午 11:07。 |
"Short Time" |
在 24 hourformat中显示 time。 例如,11:07。 |
自定义 date/time 格式
可以在 format_string
中指定以下 format 字符,以创建自定义 date/time 格式:
字符 | 描述 |
---|---|
(: ) |
Time 分隔符。 在某些区域设置中,其他字符可用于表示 time 分隔符。 当格式化 timevalues 时,time 分隔符分隔小时、分钟、and 秒。 用作格式化输出中的 time 分隔符的实际字符由系统设置确定。 |
(/ ) |
Date 分隔符。 在某些区域设置中,其他字符可用于表示 date 分隔符。 当格式化 datevalues 时,date 分隔符分隔 daymonthandyear。 用作格式化输出中的 date 分隔符的实际字符由系统设置确定。 |
(\ ) |
反斜線。 将 next 字符显示为文本字符。 因此,它 not 解释为格式字符。 |
(" ) |
双引号。 将显示用双引号括起来的文本。 因此,它 not 解释为格式字符。 |
c |
将 date 显示为 ddddd and 按该顺序将 time 显示为 ttttt 。 仅显示 date 信息,if 没有 date 序列号的小数部分;仅显示 time 信息 if 没有整数部分。 |
d |
将 day 显示为没有前导零的数字(1-31)。 |
dd |
将 day 显示为前导零(01-31)的数字。 |
ddd |
将 day 显示为缩写(Sun-Sat)。 本地化。 |
dddd |
将 day 显示为全名(Sunday-Saturday)。 本地化。 |
ddddd |
根据系统的简短 dateformat 设置,将 date 显示为完整的 date(包括 day、month、andyear)。 默认的短 dateformat 为 mm/dd/yyyy 。 |
dddddd |
根据系统识别的长 date 设置,将 date 序列号显示为完整的 date(包括 day、month、andyear)。 默认的长 dateformat 为 dddd, mmmm d, yyyy 。 |
w |
将一周的 day 显示为数字(1 到星期六为 7)。 |
ww |
将 year 的一周显示为数字(1-54)。 |
m |
将 month 显示为没有前导零的数字(1-12)。
If
m 紧跟 h orhh ,minute 而不是显示 month。 |
mm |
将 month 显示为前导零(01-12)的数字。
If
mm 紧跟 h orhh ,minute 而不是显示 month。 |
mmm |
将 month 显示为缩写(Jan-Dec)。 本地化。 |
mmmm |
将 month 显示为完整的 month 名称(January-December)。 本地化。 |
q |
将 year 的 quarter 显示为数字(1-4)。 |
y |
将 yearday 显示为数字(1-366)。 |
yy |
将 year 显示为 2 位数(00-99)。 |
yyyy |
将 year 显示为 4 位数字(100-9999)。 |
h |
将 hour 显示为没有前导零的数字(0-23)。 |
hh |
将 hour 显示为前导零(00-23) 的数字。 |
n |
将 minute 显示为没有前导零的数字(0-59)。 |
nn |
将 minute 显示为带前导零(00-59)的数字。 |
s |
将 second 显示为没有前导零的数字(0-59)。 |
ss |
将 second 显示为带前导零(00-59)的数字。 |
ttttt |
使用系统识别的 timeformat 定义的 time 分隔符,将 time 显示为完整的 time(包括 hour、minute、andsecond)。
if 选择前导零选项 andtime 上午 10:00 or 下午 10:00 之前显示前导零。默认 timeformat 为 h:mm:ss 。 |
AM/PM |
使用 12hour 时钟 and 在中午前显示任何 hour 的大写 AM;显示一个大写的 PM,中午 and 下午 11:59 之间有任何 hour。 |
am/pm |
使用 12hour 时钟 and 在中午前显示带任何 hour 的小写 AM;显示一个小写的 PM,中午 and 下午 11:59 之间出现任何 hour。 |
A/P |
使用 12hour 时钟 and 显示一个大写 A,中午前的任何 hour;显示一个大写 P,中午 and 下午 11:59 之间有任何 hour。 |
a/p |
使用 12hour 时钟 and 在中午前显示带任何 hour 的小写 A;显示一个小写 P,中午 and 下午 11:59 之间的任何 hour。 |
AMPM |
使用 12-hour 时钟 and 在中午前将系统定义的 AM 字符串文本与任何 hour 一起显示;显示系统定义的 PM 字符串文本,中午 and 下午 11:59 之间的任何 hour,AMPM 可以是大写 or 小写,但显示的字符串大小写与系统设置定义的字符串匹配。 默认 format 为 AM/PM。 If 系统设置为 24-hour 时钟,字符串通常设置为空字符串。 |
Date/time 格式使用当前用户区域设置来 format 字符串。 例如,请考虑 2020 年 6 月 25 日 date。 使用 format 字符串“m/d/yy”进行格式化时,它将是:
- 用户区域设置是美国(en-US): “2020/6/25”
- 用户区域设置是德国(de-DE):“6.25.2020”
自定义 date/timeformat 示例
以下示例使用 date/time 2020 年 6 月 25 日星期四下午 1:23:45。 德国(de-DE)使用24hour 系统。 没有等效的 AM/PM。
Format | 结果(en-US) | 结果(de-DE) |
---|---|---|
"c" |
06/25/2020 13:23:45 | 25.06.2020 13:23:45 |
"d" |
25 | 25 |
"dd" |
25 | 25 |
"ddd" |
Thu | 做 |
"dddd" |
星期四 | Donnerstag |
"ddddd" |
06/25/2020 | 25.06.2020 |
"dddddd" |
2020 年 6 月 25 日星期四 | 唐纳斯塔格, 25. Juni 2020 |
"w" |
5 | 5 |
"ww" |
26 | 26 |
"m" |
6 | 6 |
"mm" |
06 | 06 |
"mmm" |
六月 | 六月 |
"mmmm" |
六月 | 朱尼 |
"q" |
2 | 2 |
"y" |
177 | 177 |
"yy" |
20 | 20 |
"yyyy" |
2020 | 2020 |
"""Year"" yyyy" |
Year 2020 | Year 2020 |
"yyyy \Qq" |
2020 年第 2 季度 | 2020 年第 2 季度 |
"dd/mm/yyyy" |
25/06/2020 | 25.06.2020 |
"mm/dd/yyyy" |
06/25/2020 | 06.25.2020 |
"h:nn:ss" |
13:23:45 | 13:23:45 |
"h:nn:ss AMPM" |
下午 1:23:45 | 1:23:45 |
"hh:nn:ss" |
13:23:45 | 13:23:45 |
"hh:nn:ss AMPM" |
01:23:45 PM | 01:23:45 |
"ttttt" |
13:23:45 | 13:23:45 |
"ttttt AMPM" |
下午 13:23:45 | 13:23:45 |
"mm/dd/yyyy hh:nn:ss AMPM" |
2020/06/25 下午 01:23:45 | 6.25.2020 01:23:45 |