FORMAT

适用于:计算列计算表Measure视觉计算

根据指定的 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 以数字占位符(0or#)括起来的千位分隔符 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 至少一个数字占位符(0or#)到 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 显示为 dddddand 按该顺序将 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 紧跟 horhh,minute 而不是显示 month。
mm 将 month 显示为前导零(01-12)的数字。 If mm 紧跟 horhh,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