FORMAT

指定した書式に従って、値をテキストに変換します。

構文

FORMAT(<value>, <format_string>[, <locale_name>])

パラメーター

用語 定義
1 つの値に評価される値または式。
format_string 書式設定テンプレートを含む文字列。
locale_name (省略可能) 関数によって使用されるロケールの名前。 指定できる値は、Windows API 関数 LocaleNameToLCID() によって許容される文字列です。

戻り値

format_string で定義されたとおり書式設定された value を含む文字列。

注意

value が空白の場合、関数は空の文字列を返します。

format_string が空白の場合、値は (value データ型に応じて) "一般的な数字" または "一般的な日付" 形式で書式設定されます。

解説

  • 定義済みの書式指定文字列は、結果の書式設定時にモデルのカルチャ プロパティを使用します。 既定では、モデルのカルチャ プロパティは、コンピューターのユーザー ロケールに応じて設定されます。 新しい Power BI Desktop モデルの場合、モデルのカルチャ プロパティは [オプション] > [地域の設定] > [モデル言語] で変更できます。 Analysis Services の場合、モデルのカルチャは、インスタンスによって最初に定義された言語プロパティに従って設定されます。

  • DAX FORMAT 関数の引数としてサポートされる書式設定文字列は、.NET Framework によって使用される書式設定文字列ではなく、Visual Basic (OLE オートメーション) によって使用される書式設定文字列に基づいています。 したがって、引数が定義済みの書式設定文字列と一致しない場合、予期しない結果やエラーが発生する可能性があります。 たとえば、"Percent" の省略形としての "p" はサポートされていません。 定義済み書式設定文字列のリストに含まれていない 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" では、小数点区切り記号の左側に 1 桁以上、右側に 2 桁の数字を表示します。

12,345.67 "Standard" では、小数点区切り記号の左側に 1 桁以上、右側に 2 桁以上の数字を表示し、桁区切り記号を含めます。 このサンプルでは、既定の米国数値書式を示しています。

1,234,567.00% "Percent" では、数値を (100 で乗算した) パーセンテージとして書式設定して表示し、数値の右側に 1 つのスペースで区切ってパーセント記号を表示します。

1.23E+04 "Scientific" では、2 桁の 10 進数を含む科学的表記法で数値を表示します。

省略可能な locale_name を使用した datetime

= 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 引数に指定できます。

形式 説明
"General Number" 桁区切り記号を付けずに数値を表示します。
"Currency" 必要に応じて、数値を桁区切り記号付きで表示します。小数点区切り記号の右側に 2 桁の数字を表示します。 出力はシステムのロケール設定に基づいきます。
"Fixed" 小数点区切り記号の左側に 1 桁以上、右側に 2 桁の数字を表示します。
"Standard" 桁区切り記号付きで、小数点区切り記号の左側に 1 桁以上、右側に 2 桁の数字を表示します。
"Percent" 数値に 100 を乗算し、直後の右側にパーセント記号 (%) を追加して表示します。小数点区切り記号の右側に、常に 2 桁の数字を表示します。
"Scientific" 2 桁の有効桁数を提供する標準指数表記を使用します。
"Yes/No" 数値が 0 の場合は No を表示します。それ以外の場合は、Yes を表示します。
"True/False" 数値が 0 の場合は False を表示します。それ以外の場合は、True を表示します。
"On/Off" 数値が 0 の場合は Off を表示します。それ以外の場合は、On を表示します。

カスタム数値書式

数値のカスタム書式表記には、1 から 3 個のセクションをセミコロンで区切って指定します。 書式文字列引数にいずれかの名前付きの数値書式が含まれる場合、1 セクションのみを使用できます。

以下を使用する場合 結果は、します。
1 つのセクションのみ このフォーマット式は、すべての値に適用されます。
2 つ 最初のセクションは正の値および 0 に適用され、2 番目のセクションは負の値に適用されます。
3 つ 最初のセクションは正の値に、2 番目のセクションは負の値に、3 番目のセクションは 0 に適用されます。
"$#,##0;($#,##0)"

セミコロンの間に何も含まれていない場合、欠落しているセクションは正の値の書式を使用して定義されます。 たとえば、次の書式では、最初のセクションの書式を使用して正と負の値が表示され、その値が 0 の場合は、"Zero" と表示されます。

"$#,##0"

セミコロンの間に何も含めない場合、欠落しているセクションは正の値の書式を使用して表示されます。

カスタム数値形式文字

次のカスタム数値形式文字は、format_string 引数に指定できます。

文字 説明
なし 書式設定なしで数値を表示します。
(0) 数字のプレースホルダー。 数字または 0 を表示します。 式の書式設定文字列で 0 が表示される位置に数字が含まれている場合は、それが表示されます。それ以外の場合は、その位置に 0 を表示します。数値の桁数が、書式設定式の (小数点の両側にある) ゼロよりも少ない場合は、先頭または末尾に 0 が表示されます。 数値の小数点区切り記号より右側の桁数が、書式設定式の小数点区切り記号より右側の 0 の数より多い場合、数値は小数点以下の 0 の数に丸められます。 数値の小数点区切り記号より左側の桁数が、書式設定式の小数点区切り記号より左側の 0 の数より多い場合、余分な数字が変更なしで表示されます。
(#) 数字のプレースホルダー。 数字を表示するか、または何も表示しません。 式の書式設定文字列で # が出現する位置に数字がある場合は、それを表示します。それ以外の場合は、その位置に何も表示しません。 この記号は、0 の数字プレースホルダーのように機能します。ただし、数値の桁数が、書式設定式の小数点区切り記号の両側にある # 文字と同じかそれよりも少ない場合、先頭と末尾のゼロは表示されません。
(.) 小数点のプレースホルダー。 ロケールによっては、小数点区切り記号としてコンマが使用されます。 小数点プレースホルダーにより、小数点区切り記号の左側と右側に表示される数字の数が決まります。 書式指定式のこの記号の左側に数字記号のみが含まれている場合、1 より小さい数値は小数点区切り記号で始まります。 小数部の前にゼロを表示するには、小数点区切り記号の左側の最初の桁プレースホルダーとして 0 を使用します。 書式設定された出力で、小数点プレースホルダーとして実際に使用される文字は、システムによって認識される数値書式によって異なります。
(%) パーセント プレースホルダー。 式に 100 が乗算されます。 パーセント文字 (%) は、書式設定文字列で示される位置に挿入されます。
(,) 桁区切り記号。 ロケールによっては、桁区切り記号としてピリオドが使用されます。 桁区切り記号は、小数点区切り記号の左側に 4 桁以上ある数値で、千の位と百の位を区切ります。 数字プレースホルダー (0 または #) で囲まれた桁区切り記号が書式に含まれる場合に、桁区切り記号の標準的な使用方法が指定されます。 2 つの隣接する桁区切り記号がある場合、または小数点区切り記号のすぐ左に桁区切り記号がある場合は (小数点が指定されているかどうかにかかわらず)、"必要に応じて、数値が 1000 で除算されて丸められます。" たとえば、100 万を 100 と表すために書式指定文字列 "##0,," を使用できます。 100 万より小さい数値は 0 と表示されます。 小数点区切り記号のすぐ左側以外の任意の位置にある 2 つの隣接する桁区切り記号は、単に桁区切り記号の使用の指定として処理されます。 書式設定された出力で、桁区切り記号として実際に使用される文字は、システムによって認識される数値書式によって異なります。
(:) 時刻の区切り記号。 ロケールによっては、他の文字を使用して時刻区切り記号が表される場合があります。 時刻の値を書式設定するときに、時刻区切り記号で時、分、秒を区切ります。 書式設定された出力で時刻区切り記号として実際に使用される文字は、システム設定によって決まります。
(/) 日付の区切り記号。 ロケールによっては、他の文字を使用して日付区切り記号が表される場合があります。 日付の値を書式設定するときに、日付区切り記号で日、月、年を区切ります。 書式設定された出力で日付区切り記号として実際に使用される文字は、システム設定によって決まります。
(E- E+ e- e+ ) 科学的表記形式。 書式設定式で、E-、E+、e-、e+ の右側に少なくとも 1 つの数字プレースホルダー (0 または #) がある場合、数値は科学的な形式で表示され、E または e が数値とその指数の間に挿入されます。 右側の桁プレースホルダーの数によって、指数部の桁数が決まります。 負の指数の横にマイナス記号を付けるには、E- または e- を使用します。 負の指数の横にマイナス記号を付け、正の指数の横にプラス記号を付けるには、E+ または e+ を使用します。
- + $ ( ) リテラル文字を表示します。 一覧に含まれていない文字を表示するには、その文字の前に円記号 (\) を付けるか、または二重引用符 (" ") で囲みます。
(\) 書式設定文字列内の次の文字を表示します。 リテラル文字として特別な意味を持つ文字を表示するには、その文字の前に円記号 (\) を付けます。 円記号自体は表示されません。 円記号の使用は、次の文字を二重引用符で囲むことと同じです。 円記号を表示するには、2 つの円記号 (\\) を使用します。 リテラル文字として表示できない文字の例としては、日付書式設定と時刻書式設定の文字 (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 AM。
"Medium Time" 時刻を 12 時間形式で表示します。 たとえば、11:07 AM。
"Short Time" 時刻を 24 時間形式で表示します。 たとえば、11:07。

カスタム日付/時刻書式

次の書式文字を format_string に指定すると、カスタム日付/時刻書式を作成できます。

文字 Description
(:) 時刻の区切り記号。 ロケールによっては、他の文字を使用して時刻区切り記号が表される場合があります。 時刻の値を書式設定するときに、時刻区切り記号で時、分、秒を区切ります。 書式設定された出力で時刻区切り記号として実際に使用される文字は、システム設定によって決まります。
(/) 日付の区切り記号。 ロケールによっては、他の文字を使用して日付区切り記号が表される場合があります。 日付の値を書式設定するときに、日付区切り記号で日、月、年を区切ります。 書式設定された出力で日付区切り記号として実際に使用される文字は、システム設定によって決まります。
(\) バックスラッシュ。 次の文字をリテラル文字として表示します。 そのため、書式設定文字として解釈されません。
(") 二重引用符。 二重引用符で囲まれたテキストが表示されます。 そのため、書式設定文字として解釈されません。
c 日付を ddddd、時刻を ttttt の順序で表示します。 日付のシリアル番号に小数部がない場合は、日付情報のみを表示します。整数部分がない場合は、時刻情報のみを表示します。
d 先頭に 0 を付けずに数値で日を表示します (1 - 31)。
dd 先頭に 0 を付けて数値で日を表示します (01 - 31)。
ddd 省略形で曜日を表示します (Sun - Sat)。 ローカライズされます。
dddd 完全な名前で曜日を表示します (Sunday - Saturday)。 ローカライズされます。
ddddd 日付を完全な日付 (年、月、日) で表示します。表示形式はシステムの短縮日付の書式設定に従います。 既定の短い日付書式は mm/dd/yyyy です。
dddddd 日付のシリアル番号を完全な日付 (年、月、日) で表示します。表示形式は、システムが認識する長い日付の書式設定に従います。 既定の長い日付書式は dddd, mmmm d, yyyy です。
曜日を数値で表示します (日曜日が 1、土曜日が 7)。
ww 1 年のうちの何週目であるかを数値 (1 - 54) で表示します。
m 先頭に 0 を付けずに数値で月を表示します (1 - 12)。 mh または hh の直後にある場合、月ではなく分が表示されます。
mm 先頭に 0 を付けて数値で月を表示します (01 - 12)。 mmh または hh の直後にある場合、月ではなく分が表示されます。
mmm 省略形で月を表示します (Jan - Dec)。 ローカライズされます。
mmmm 完全な月の名前で月を表示します (January - December)。 ローカライズされます。
q 1 年のうち何番目の四半期であるかを数値 (1 - 4) で表示します。
年の通算日を数値で表示します (1 - 366)。
yy 年を 2 桁の数字で表示します (00 - 99)。
yyyy 年を 4 桁の数字で表示します (100 - 9999)。
h 先頭に 0 を付けずに数値で時刻を表示します (0 - 23)。
hh 先頭に 0 を付けて数値で時刻を表示します (00 - 23)。
n 先頭に 0 を付けずに数値で分を表示します (0 - 59)。
nn 先頭に 0 を付けて数値で分を表示します (00 - 59)。
s 先頭に 0 を付けずに数値で秒を表示します (0 - 59)。
ss 先頭に 0 を付けて数値で秒を表示します (00 - 59)。
ttttt 時刻を完全な時刻 (時間、分、秒) で表示します。表示形式は、システムが認識する時刻書式で定義された時刻区切り文字を使用します。 先頭にゼロを付けるオプションを選択した場合、午前または午後の 10:00 より早い時刻であれば、前にゼロが表示されます。既定の時刻書式は h:mm:ss です。
AM/PM 12 時間制を使用し、正午より前の時刻には大文字の AM を表示します。正午から午後11:59 までの時刻には、大文字の PM を表示します。
AM/PM 12 時間制を使用し、正午より前の時刻には小文字の AM を表示します。正午から午後 11:59 までの時刻には、小文字の PM を表示します。
A/P 12 時間制を使用し、正午より前の時刻には大文字の A を表示します。正午から午後 11:59 までの時刻には、大文字の P を表示します。
A/P 12 時間制を使用し、正午より前の時刻には小文字の A を表示します。正午から午後 11:59 までの時刻には、小文字の P を表示します。
AMPM 12 時間制を使用して、正午より前の時刻にはシステムで定義されている AM 文字列リテラルを表示します。正午から 11:59 PM までの時刻にはシステムで定義されている 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 PM の日付と時刻を使用します。 ドイツ (de-D) では、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" 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" 6 月 6 月
"mmmm" 6 月 Juni
"q" 2 2
"y" 177 177
"yy" 20 20
"yyyy" 2020 2020
"""Year"" yyyy" Year 2020 Year 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 PM 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 PM 13:23:45
"mm/dd/yyyy hh:nn:ss AMPM" 06/25/2020 01:23:45 PM 6.25.2020 01:23:45