FORMAT
根據指定的格式,將值轉換成文字。
語法
FORMAT(<value>, <format_string>[, <locale_name>])
參數
術語 | 定義 |
---|---|
value |
評估為單一值的值或表達式。 |
format_string |
具有格式化範本的字串。 |
locale_name |
(選擇性)函式所要使用的地區設定名稱。 可能的值為 Windows API 函式接受的字串串,LocaleNameToLCID()。 |
傳回值
字串,包含格式化為 value
所定義的 format_string
。
注意
如果 value
BLANK,函式會傳回空字串。
如果 format_string
是 BLANK,則值會以「一般數位」或「一般日期」格式格式化(根據 value
數據類型)。
言論
預先定義的格式字串會在格式化結果時使用模型文化特性屬性。 根據預設,模型文化特性屬性會根據計算機的用戶地區設定來設定。 針對新的 Power BI Desktop 模型,模型文化特性屬性可以在 [選項] > [區域設定] > [模型語言] 中變更。 針對 Analysis Services,模型文化特性會根據實例最初定義的 Language 屬性來設定。
DAX FORMAT 函式自變數支援的格式字串是以 Visual Basic 所使用的格式字串為基礎,而不是以 .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「一般數位」會顯示沒有格式的數位。
$12,345.67 「貨幣」,則會以您的貨幣地區設定格式顯示數位。 這裡的範例顯示預設的美國貨幣格式設定。
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" )
返回:
2020/12/15 下午 12:30:59 其中月份在日和時間之前是 12 小時格式。
15/12/2020 12:30:59 日之前月份和時間的格式為 24 小時。
12/15/2020 12:30:59 其中月份在日和時間之前是 24 小時格式。 由於指定了非地區設定相依格式字串,因此不會套用地區設定,而且會傳回非地區設定格式。
預先定義的數值格式
您可以在 format_string
自變數中指定下列預先定義的數值格式:
Format |
描述 |
---|---|
"General Number" |
顯示沒有千位分隔符的數位。 |
"Currency" |
視需要顯示具有千位分隔符的數位;會顯示小數分隔符右邊的兩位數。 輸出是以系統地區設定為基礎。 |
"Fixed" |
在小數分隔符右邊顯示至少一位數和兩位數。 |
"Standard" |
顯示具有千位分隔符元的數位,左邊至少一位數,小數分隔符右邊至少有一位數。 |
"Percent" |
顯示數位乘以 100,其百分比符號 (%) 會立即附加至右邊;一律會顯示小數分隔符右邊的兩位數。 |
"Scientific" |
使用標準科學表示法,提供兩個有效位數。 |
"Yes/No" |
如果數位為 0,則顯示 [否] ;否則,會顯示 [是]。 |
"True/False" |
如果數位為 0,則顯示 False;否則,會顯示 True。 |
"On/Off" |
如果數位為 0,則顯示 Off;否則,會顯示 [開啟]。 |
自訂數值格式
數位的自定義格式表示式可以有一到三個區段,並以分號分隔。 如果格式字串自變數包含其中一個具名數值格式,則只允許一個區段。
如果您使用 | 結果為 |
---|---|
僅限一個區段 | 格式表達式會套用至所有值。 |
兩個區段 | 第一個區段適用於正值和零,第二個則套用至負值。 |
三個區段 | 第一個區段會套用至正值、第二個套用至負值,而第三個則套用至零。 |
"$#,##0;($#,##0)"
如果您包含兩者之間沒有任何分號,則會使用正值的格式來定義遺漏區段。 例如,下列格式會使用第一個區段中的格式來顯示正值和負值,如果值為零,則會顯示 “Zero”。
"$#,##0"
如果您包含兩者之間沒有任何分號,則會使用正值的格式來顯示遺漏的區段。
自訂數值格式字元
您可以在 format_string
自變數中指定下列自訂數值格式字元:
字元 | 描述 |
---|---|
沒有 | 顯示沒有格式的數位。 |
(0 ) |
數位佔位元。 顯示數位或零。 如果表達式在格式字串中出現 0 的位置有數位,則顯示它;否則,在該位置顯示零。如果數位的位數比格式表達式中的零(小數點任一邊)少,則顯示前置或尾端零。 如果數位在小數分隔符右邊的位數大於格式表達式中小數分隔符右邊的零,請將數位四捨五入為零的十進位數。 如果數位在小數分隔符左邊的位數多於格式表達式中小數分隔符左邊的零,則不需修改即可顯示額外的數位。 |
(# ) |
數位佔位元。 顯示數位或無任何專案。 如果表達式在格式字串中出現 # 的位置有數位,則顯示它;否則,不在該位置顯示任何內容。 這個符號的運作方式就像 0 位數佔位元,不同之處在於,如果數位在格式表達式中小數分隔符的任一端有相同或小於 # 字元,則不會顯示前置和尾端零。 |
(. ) |
十進位元元。 在某些地區設定中,會使用逗號做為小數分隔符。 小數佔位元會決定小數分隔符的左邊和右邊顯示多少位數。 如果格式表達式只包含此符號左邊的數字元號,則小於 1 的數位會以小數分隔符開頭。 若要顯示以小數表示的前置零,請使用 0 作為小數分隔符左邊的第一個數位佔位元。 在格式化輸出中作為小數佔位元的實際字元,取決於您系統所辨識的數位格式。 |
(% ) |
百分比佔位元。 表達式乘以 100。 百分比字元 (% ) 會插入格式字串中出現的位置。 |
(, ) |
千位分隔符。 在某些地區設定中,句點會當做千位分隔符使用。 千位分隔符會將數千個分隔符分隔在小數分隔符左邊有四個以上位置的數位中。 如果格式包含以數位佔位符括住的千位分隔符,則會指定千位分隔符的標準用法(0 或 # )。 兩個相鄰的千位分隔符或千位分隔符緊接在小數分隔符的左邊(無論是否指定小數點),表示「視需要將數位除以 1000 來縮放數位」。例如,您可以使用格式字串 “##0”,將 1 億表示為 100。 小於1百萬的數字會顯示為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
自變數中指定下列預先定義的日期/時間格式。 使用這些以外的格式時,它們會解譯為自定義日期/時間格式:
格式 | 描述 |
---|---|
"General Date" |
顯示日期和時間。 例如,2008/3/12 上午 11:07:31。 日期顯示取決於您應用程式的目前文化特性值。 |
"Long Date" 或 "Medium Date" |
根據您目前文化特性的長日期格式顯示日期。 例如,2008 年 3 月 12 日星期三。 |
"Short Date" |
使用您目前文化特性的簡短日期格式來顯示日期。 例如,2008 年 3 月 12 日。 |
"Long Time" 或 |
使用您目前文化特性的長期格式顯示時間;通常包括小時、分鐘、秒。 例如,上午 11:07:31。 |
"Medium Time" |
以 12 小時格式顯示時間。 例如,上午 11:07。 |
"Short Time" |
以 24 小時格式顯示時間。 例如,11:07。 |
自訂日期/時間格式
您可以在 format_string
中指定下列格式字元,以建立自訂日期/時間格式:
字元 | 描述 |
---|---|
(: ) |
時間分隔符。 在某些地區設定中,其他字元可用來表示時間分隔符。 時間分隔符會在格式化時間值時分隔小時、分和秒。 格式化輸出中用來做為時間分隔符的實際字元是由您的系統設定所決定。 |
(/ ) |
日期分隔符。 在某些地區設定中,其他字元可用來表示日期分隔符。 當格式化日期值時,日期分隔符會分隔日期、月份和年份。 格式化輸出中用來做為日期分隔符的實際字元取決於您的系統設定。 |
(\ ) |
反斜線。 將下一個字元顯示為常值字元。 因此,它不會解譯為格式化字元。 |
(" ) |
雙引號。 以雙引弧括住的文字隨即顯示。 因此,它不會解譯為格式化字元。 |
c |
將日期顯示為 ddddd ,並以該順序將時間顯示為 ttttt 。 如果日期序號沒有小數部分,則只顯示日期資訊;如果沒有整數部分,則只會顯示時間資訊。 |
d |
將日期顯示為沒有前置零的數位(1-31)。 |
dd |
將日期顯示為前置零的數位(01-31)。 |
ddd |
將日期顯示為縮寫 (Sun-Sat)。 當地語系化。 |
dddd |
將日期顯示為全名 (Sunday-Saturday)。 當地語系化。 |
ddddd |
根據系統的簡短日期格式設定,將日期顯示為完整日期(包括日、月和年)。 預設簡短日期格式為 mm/dd/yyyy 。 |
dddddd |
根據系統所辨識的長日期設定,將日期序號顯示為完整日期(包括日、月和年)。 預設完整日期格式為 dddd, mmmm d, yyyy 。 |
w |
將星期幾顯示為數位(1 代表星期天到星期六 7)。 |
ww |
將年份的星期顯示為數位(1-54)。 |
m |
將月份顯示為沒有前置零的數位(1-12)。 如果 m 緊接 h 或 hh ,則會顯示分鐘而不是月份。 |
mm |
將月份顯示為前置零的數位(01-12)。 如果 mm 緊接 h 或 hh ,則會顯示分鐘而不是月份。 |
mmm |
將月份顯示為縮寫 (Jan-Dec)。 當地語系化。 |
mmmm |
將月份顯示為完整月份名稱 (January-December)。 當地語系化。 |
q |
將年份的四分之一顯示為數位(1-4)。 |
y |
將一年中的日期顯示為數位(1-366)。 |
yy |
將年份顯示為 2 位數的數位(00-99)。 |
yyyy |
將年份顯示為 4 位數的數位(100-9999)。 |
h |
將小時顯示為沒有前置零的數位(0-23)。 |
hh |
將小時顯示為前置零的數位(00-23)。 |
n |
將分鐘顯示為沒有前置零的數位(0-59)。 |
nn |
將分鐘顯示為具有前置零的數位(00-59)。 |
s |
將第二個顯示為沒有前置零的數位(0-59)。 |
ss |
將第二個顯示為具有前置零的數位(00-59)。 |
ttttt |
使用系統所辨識的時間格式所定義的時間分隔符,將時間顯示為完整時間(包括小時、分鐘和秒)。 如果選取前置零選項,且時間在上午 10:00 或下午 10:00 之前,就會顯示前置零。預設時間格式為 h:mm:ss 。 |
AM/PM |
使用12小時制,並在中午前的任何時間顯示大寫AM;顯示中午到下午 11:59 之間任何小時的大寫 PM。 |
am/pm |
使用12小時制,並在中午前的任何時間顯示小寫AM;顯示小寫 PM,中午到下午 11:59 之間的任何小時。 |
A/P |
使用12小時制,並在中午前的任何時間顯示大寫 A;顯示一個大寫 P,中午到下午 11:59 之間的任何小時。 |
a/p |
使用12小時制,並在中午前的任何時間顯示小寫 A;顯示小寫 P,中午到下午 11:59 之間的任何小時。 |
AMPM |
使用 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) |
---|---|---|
"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" |
2020 年 | 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 | 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" |
06/25/2020 下午 01:23:45 | 6.25.2020 01:23:45 |