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 (OLE Automation) 所使用格式字串為準,而不是 .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「固定」在小數分隔符號的左邊顯示至少一位數,在小數分隔符號的右邊顯示兩位數。
12,345.67 "Standard" 在小數分隔符號的左邊顯示至少一位數,在小數分隔符號的右邊顯示兩位數,且包含千位分隔符號。 此處範例顯示預設的美國數字格式。
1,234,567.00 %「百分比」會將數字顯示為含有格式的百分比 (乘以 100),並以單一空格分隔數字右邊的百分比符號。
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" )
傳回:
12/15/2020 下午 12:30:59,其中月在日之前,而時間為是 12 小時制。
15/12/2020 12:30:59,其中日在月之前,而時間是 24 小時制。
12/15/2020 12:30:59,其中月在日之前,而時間是 24 小時制。 因為指定了非地區設定相依格式字串,所以不會套用該地區設定,且會傳回非地區設定格式。
預先定義的數字格式
下列預先定義的數字格式可在 format_string 引數中指定:
格式 | 描述 |
---|---|
"General Number" |
不使用千位分隔符號顯示數字。 |
"Currency" |
使用千位分隔符顯示數字 (如果有的話);在小數分隔符號的右邊顯示兩位數。 輸出是以系統地區設定為基礎。 |
"Fixed" |
在小數分隔符號的左邊顯示至少一位數,右邊顯示至少兩位數。 |
"Standard" |
使用千位分隔符號顯示數字,在小數分隔符號的左邊顯示至少一位數,右邊顯示至少兩位數。 |
"Percent" |
顯示乘以 100 的數字,並在右邊緊接著附加百分比符號 (%);一律在小數分隔符號的右邊顯示兩位數。 |
"Scientific" |
使用標準科學記號標記法,提供兩個有效位數。 |
"Yes/No" |
如果數字為 0,則顯示「否」,否則顯示「是」。 |
"True/False" |
如果數字為 0,則顯示 False,否則顯示 True。 |
"On/Off" |
如果數字為 0,則顯示「關閉」,否則顯示「開啟」。 |
自訂數值格式
數字的自訂格式運算式可以有一到三個區段 (以分號分隔)。 如果格式字串引數含有一個已命名的數值格式,則只允許有一個區段。
如果您使用 | 結果就是 |
---|---|
僅限一個區段 | 格式運算式適用於所有值。 |
兩個區段 | 第一個區段套用到正值和零值,第二個區段套用到負值。 |
三個區段 | 第一個區段套用到正值,第二個區段套用到負值,第三個區段套用到零值。 |
"$#,##0;($#,##0)"
如果分號之間不包含任何內容,則會使用正值格式來定義遺失的區段。 例如,下列格式會使用第一個區段的格式來顯示正值和負值,如果值為零的話則顯示 "Zero"。
"$#,##0"
如果分號之間不包含任何內容,則會使用正值格式來顯示缺少的區段。
自訂數字格式字元
下列自訂數字格式字元可在 format_string 引數中指定:
字元 | 描述 |
---|---|
None | 不使用格式顯示數字。 |
(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" |
顯示日期及/或時間。 例如 3/12/2008 11:07:31 AM。 日期顯示取決於應用程式的目前文化特性值。 |
"Long Date" 或 "Medium Date" |
根據目前文化特性的完整日期格式來顯示日期。 例如,2008 年 3 月 12 日星期三。 |
"Short Date" |
使用目前文化特性的簡短日期格式來顯示日期。 例如 3/12/2008。 |
"Long Time" 或 |
使用目前文化特性的完整時間格式來顯示時間;通常包含小時、分鐘、秒。 例如上午 11:07:31。 |
"Medium Time" |
以 12 小時制格式顯示時間。 例如上午 11:07。 |
"Short Time" |
以 24 小時制格式顯示時間。 例如 11:07。 |
自訂日期/時間格式
下列格式字元可在 format_string 中指定,以建立自訂日期/時間格式:
字元 | 描述 |
---|---|
(:) | 時間分隔符號。 在某些地區設定中,可能會使用其他字元來代表時間分隔符號。 時間分隔符號會在設定時間值格式時,分隔小時、分鐘和秒。 在格式化輸出中作為時間分隔符號使用的實際字元是由您的系統設定所決定。 |
(/) | 日期分隔符號。 在某些地區設定中,可能會使用其他字元來代表日期分隔符號。 日期分隔符號會在設定日期值格式時,分隔日、月和年。 在格式化輸出中用來作為日期分隔符號的實際字元,是由您的系統設定所決定。 |
(\) | 反斜線。 將下一個字元顯示為常值字元。 因此,其不會被解讀為格式化字元。 |
(“) | 雙引號。 顯示括在雙引號內的文字。 因此,其不會被視為格式化字元。 |
c | 按照該順序將日期顯示為 ddddd ,並將時間顯示為 ttttt 。 如果日期序號沒有小數部分,則只顯示日期資訊;如果日期序號沒有整數部分,則只顯示時間資訊。 |
日 | 以不包含前置字元為零的數字顯示日期 (1-31)。 |
dd | 以包含前置字元為零的數字顯示日期 (01-31)。 |
ddd | 顯示星期幾縮寫 (Sun-Sat)。 當地語系化。 |
dddd | 顯示星期幾全名 (星期日-星期六)。 當地語系化。 |
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 | 顯示完整月份名稱 (一月-十二月)。 當地語系化。 |
q | 將一年的每一季顯示為數字 (1-4)。 |
y | 將一年的每一天顯示為數字 (1-366)。 |
yy | 以 2 位數數字顯示年份 (00-99)。 |
yyyy | 以 4 位數數字顯示年份 (100-9999)。 |
小時 | 以不包含前置字元為零的數字顯示小時 (0-23)。 |
hh | 以包含前置字元為零的數字顯示小時 (00-23)。 |
n | 以不包含前置字元為零的數字顯示分鐘 (0-59)。 |
nn | 以包含前置字元為零的數字顯示分鐘 (00-59)。 |
s | 以不包含前置字元為零的數字顯示秒 (0-59)。 |
ss | 以包含前置字元為零的數字顯示秒 (00-59)。 |
ttttt | 將時間顯示為完整時間 (包括時、分、秒),以系統所能辨識時間格式定義的分隔符號進行格式化。 如果選取了前置零選項,且時間是在上午或下午 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 字串常值顯示您系統所定義的中午前任何時間;以 PM 字串常值顯示您系統所定義之介於中午和下午 11:59 之間的任何時間。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" |
星期四 | 可行事項 |
"dddd" |
Thursday | Donnerstag |
"ddddd" |
06/25/2020 | 25.06.2020 |
"dddddd" |
Thursday, June 25, 2020 | Donnerstag, 25. Juni 2020 |
"w" |
5 | 5 |
"ww" |
26 | 26 |
"m" |
6 | 6 |
"mm" |
06 | 06 |
"mmm" |
六月 | 六月 |
"mmmm" |
6 月 | Juni |
"q" |
2 | 2 |
"y" |
177 | 177 |
"yy" |
20 | 20 |
"yyyy" |
2020 | 2020 |
"""Year"" yyyy" |
2020 年 | 2020 年 |
"yyyy \Qq" |
2020 Q2 | 2020 Q2 |
"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 |