• 设置结果的格式时,预定义的格式字符串使用模型区域性属性。 默认情况下,根据计算机的用户区域设置设置模型区域性属性。 对于新的 Power BI Desktop 模型,可以在“选项”>“区域设置”>“模型语言”中更改模型区域性属性。 对于 Analysis Services,模型区域性根据实例最初定义的语言属性进行设置。

  • 格式字符串作为 DAX FORMAT 函数的支持参数,以 Visual Basic(OLE 自动化)使用的格式字符串为基础,而不以 NET Framework 使用的格式字符串为基础。 因此,如果参数与任何定义的格式字符串都不匹配,则可能会出现意外结果或错误。 例如,不支持将“p”作为“Percent”的缩写。 作为 FORMAT 函数的参数提供,且未包括在预定义格式字符串中的字符串将作为自定义格式字符串的一部分或字符串文本处理。

  • 要详细了解如何使用 FORMAT 指定区域设置,请观看此 视频

  • 使用 FORMAT 将度量结果更改为文本数据类型。 如果度量结果最初为数值数据类型,则使用 FORMAT 时,无法在值部分需要数值数据类型的视觉对象上使用度量值,如图表所示。 在 Power BI 中,也可以对度量值使用动态格式字符串,指定保留度量值数值数据类型的条件格式字符串。

  • 在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。

    格式字符串

    = 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 “General Number”显示不带格式的数字 。

    $12,345.67 “Currency”显示带货币区域设置格式的数字 。 此处的示例显示默认的美国货币格式。

    12345.67 “Fixed”显示小数点分隔符左侧至少一位,小数点分隔符右侧两位 。

    12,345.67 “Standard”显示小数点分隔符左侧至少一位,小数点分隔符右侧两位,并包括千位分隔符。 此处的示例显示默认的美国数字格式。

    1,234,567.00 % “Percent”将数字显示为带格式的百分比(乘以 100),百分比符号在数字的右侧并用一个空格分隔 。

    1\.23E+04 “Scientific”以科学计数法显示数字,并带有两位十进制数字 。

    具有可选 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" )
    

    12/15/2020 12:30:59 PM,其中月份在日期之前,时间为 12 小时格式。

    15/12/2020 12:30:59,其中日期在月份之前,时间为 24 小时格式。

    12/15/2020 12:30:59,其中月份在日期之前,时间为 24 小时格式。 由于指定了非区域设置依赖格式字符串,因此不会应用区域设置并返回非区域设置格式。

    预定义的数字格式

    可在 format_string 参数中指定以下预定义的数字格式:

    "$#,##0;($#,##0)"
    

    如果包含分号,而分号之间没有内容,则使用正值格式定义缺失部分。 例如,下面的格式用第一部分的格式显示正值和负值,如果值为零,则显示“Zero”。

    "$#,##0"
    

    如果使用分号且分号之间没有内容,则采用正值格式显示缺失的部分。

    自定义数字格式字符

    可在 format_string 参数中指定以下自定义数字格式字符:

    (0) 数字占位符。 显示一个数字或零。 如果表达式在格式字符串中出现 0 的位置有一个数字,则显示它;否则,将在该位置显示 0。如果数字的位数少于格式表达式中 0 的个数(在小数两侧),则显示前导零或尾随零。 如果小数点分隔符右侧的数字位数多于格式表达式中小数点分隔符右侧的零个数,则将该数字舍入为与零个数相同的小数位数。 如果小数点分隔符左侧的数字位数多于格式表达式中小数点分隔符左侧的零个数,则不加修改地显示额外的数字。 (#) 数字占位符。 显示一个数字或不显示任何内容。 如果在格式字符串中出现 # 的位置处,表达式具有一个数字,则显示该数字;否则,在该位置处不显示任何内容。 此符号的工作原理与 0 数字占位符类似,不同之处在于,如果数字位数等于或少于格式表达式中小数点分隔符任意一侧的 # 字符数,则不会显示前导零或尾随零。 (.) 小数点占位符。 在某些区域设置中,逗号用作小数点分隔符。 小数点占位符用于确定小数点分隔符左侧和右侧显示的位数。 如果格式表达式只包含此符号左侧的数字符号,则小于 1 的数字以小数点分隔符开头。 若要显示带有小数数字的前导零,请将 0 用作小数点分隔符左侧的第一个数字占位符。 在格式化的输出中用作小数点占位符的实际字符取决于系统所识别的数字格式。 百分比占位符。 将表达式乘以 100, 百分比字符 (%) 插入在格式字符串中出现的位置。 (,) 千位分隔符。 在某些区域设置中,句点用作千位分隔符。 千位分隔符用于在小数点分隔符左侧具有四位或更多位数的数字中分隔千位与百位。 如果格式包含由数字占位符(0#)包围的千位分隔符,则指定千位分隔符的标准用法。 两个相邻千位分隔符或紧接在小数点分隔符左侧的千位分隔符(无论是否指定小数)表示“通过将数字除以 1000 来缩小数字,并根据需要进行舍入”。例如,可以使用格式字符串“##0,,”将 100,000,000 表示为 100。 小于 1,000,000 的数字显示为 0。 除紧接在小数点分隔符左侧以外的任何位置中的两个相邻千位分隔符仅被视为指定千位分隔符的使用。 在格式化的输出中用作千位分隔符的实际字符取决于系统所识别的数字格式。 (:) 时间分隔符。 在某些区域设置中,其他字符可用于表示时间分隔符。 设置时间值格式时,时间分隔符用于分隔小时、分钟和秒。 在格式化的输出中用作时间分隔符的实际字符由你的系统设置来决定。 (/) 日期分隔符。 在某些区域设置中,其他字符可用于表示日期分隔符。 设置日期值格式时,日期分隔符用于分隔日期、月份和年份。 在格式化的输出中用作日期分隔符的实际字符由你的系统设置来决定。 (E- E+ e- e+ ) 科学记数格式。 如果格式表达式在 E-、E+、e- 或 e+ 右侧至少包含一个数字占位符(0#),则以科学记数法格式显示数字,并在数字及其指数之间插入 E 或 e。 右侧的数字占位符的个数决定了指数中的数字个数。 使用 E- 或 e- 在负指数旁边放置减号。 使用 E+ 或 e+ 在负指数旁边放置减号,在正指数旁边放置加号。 - + $ ( ) 显示文本字符。 若要显示未列出的字符,请在开头加上一个反斜杠 (\) 或用双引号 (" ") 将它括起来。 (\) 显示格式字符串中的下一个字符。 若要将具有特殊含义的字符显示为文本字符,请在开头加上一个反斜杠 (\)。 不会显示反斜杠本身。 使用反斜杠与将下一个字符放在双引号中的作用是相同的。 若要显示反斜杠,请使用两个反斜杠 (\\)。 不能显示为文本字符的字符示例包括日期格式和时间格式字符(a、c、d、h、m、n、p、q、s、t、w、y、/ 和 :)、数字格式字符(#、0、%、E、e、逗号和句点)以及字符串格式字符(@、&、<、> 和 !)。 ("ABC") 显示双引号 (" ") 中的字符串。

    预定义的日期/时间格式

    可在 format_string 参数中指定以下预定义的日期/时间格式。 使用上述格式之外的格式时,它们会被解释为自定义日期/时间格式:

    (:) 时间分隔符。 在某些区域设置中,其他字符可用于表示时间分隔符。 设置时间值格式时,时间分隔符用于分隔小时、分钟和秒。 在格式化的输出中用作时间分隔符的实际字符由你的系统设置来决定。 (/) 日期分隔符。 在某些区域设置中,其他字符可用于表示日期分隔符。 设置日期值格式时,日期分隔符用于分隔日期、月份和年份。 在格式化的输出中用作日期分隔符的实际字符由你的系统设置来决定。 (\) 反斜杠。 将下一个字符显示为文字字符。 因此,它不会被解释为格式字符。 (") 双引号。 将显示括在双引号中的文本。 因此,它不会被解释为格式字符。 将日期显示为 ddddd,并按此顺序将时间显示为 ttttt。 如果日期序列号没有小数部分,则只显示日期信息;如果没有整数部分,则只显示时间信息。 将日期显示为不带前导零的数字 (1-31)。 将日期显示为带有前导零的数字 (01-31)。 以缩写形式 (Sun–Sat) 显示日期。 已本地化。 以全称形式 (Sunday–Saturday) 显示日期。 已本地化。 ddddd 将日期显示为完整日期(包括日、月和年),根据用户系统的短日期格式设置进行格式化。 默认短日期格式为 mm/dd/yyyy。 dddddd 将日期序列号显示为完整日期(包括日、月和年),根据系统所识别的长日期设置进行格式化。 默认的长日期格式为 dddd, mmmm d, yyyy。 将一周中的天显示为数字(1 代表星期天,依次排列到 7,7 代表星期六)。 将一年中的周显示为数字 (1-54)。 将月份显示为不带前导零的数字 (1-12)。 如果 m 紧接在 hhh 之后,则显示分钟而不是月份。 将月份显示为带有前导零的数字 (01-12)。 如果 mm 紧接在 hhh 之后,则显示分钟而不是月份。 以缩写形式 (Jan–Dec) 显示月份。 已本地化。 以全称形式 (January–December) 显示月份。 已本地化。 将一年中的季度显示为数字 (1-4)。 将每年的某一日显示为数字 (1-366)。 将年份显示为 2 位数字 (00-99)。 将年份显示为 4 位数字 (100-9999)。 将小时显示为不带前导零的数字 (0-23)。 将小时显示为带有前导零的数字(00-23)。 将分显示为不带前导零的数字 (0-59)。 将分显示为带有前导零的数字(00-59)。 将秒显示为不带前导零的数字 (0-59)。 将秒显示为带有前导零的数字 (00-59)。 ttttt 将时间显示为完整的时间(包括小时、分钟和秒),使用系统所识别的时间格式定义的时间分隔符进行格式化。 如果选择了前导零选项,并且时间早于上午(或下午)10:00,则显示前导零。默认时间格式为 h:mm:ss。 AM/PM 使用 12 小时制时钟并显示大写的 AM 以及中午之前的任意小时;显示大写的 PM 以及中午到晚上 11:59 之间的任意小时。 AM/PM 使用 12 小时制并为中午之前的任何小时显示小写的 AM;为中午到晚上 11:59 之间的任何小时显示小写的 PM。 使用 12 小时制并为中午之前的任何小时显示大写的 A;为中午和晚上 11:59 之间的任何小时显示大写的 P。 使用 12 小时制并为中午之前的任何小时显示小写的 A;为中午到晚上 11:59 之间的任何小时显示小写的 P。 使用 12 小时制,并为中午之前的任何小时显示系统定义的 AM 字符串文本;为中午和晚上 11:59 之间的任何小时显示系统定义的 PM 字符串文本。AMPM 可以为大写或小写,但显示的字符串的大小写与系统设置定义的字符串匹配。 默认格式为 AM/PM。 如果系统设置为 24 小时制,则字符串通常设置为空字符串。

    日期/时间格式使用当前用户区域设置来设置字符串的格式。 例如,假设日期为 2020 年 6 月 25 日。 当使用格式字符串“m/d/yyyy”设置格式时,它将为:

  • 用户区域设置为美国 (en-US):“6/25/2020”
  • 用户区域设置为德国 (de-DE):“6.25.2020”
  • 自定义日期/时间格式示例

    以下示例使用日期/时间:2020 年 6 月 25 日星期四下午 1:23:45。 德语 (de-DE) 采用 24 小时制系统。 不存在 AM/PM 的等效项。

    结果 (en-US) 结果 (de-DE)
  •