[Looker] Explore上で¥(円マーク)を表示させる

まん丸円マーク
2020.09.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

LookerではDBから返ってきた値をいい感じにフォーマットしてくれるvalue_format_nameと言うパラメータがあります。

ただ、残念ながら穴の開くほど画面を眺めても我らがまん丸「¥(円マーク)」のformat_nameがありません。

「ドルンルンさん($)は当然として、ポポポンドさん(£)とユーロデロロさん(€)は羨ましいなぁ」と指を加えて羨むのはまだ早い!
我らがまん丸円マークさんだってLookerに表示できます!!

value_format

value_formatパラメーターをdimensionやmeasureに付け加えるだけで、Exploreで数字を出した際に指定したフォーマットで値を表示します。

フォーマットのスタイルはExcelの記法を使用します:
Common Formatting Strings - Looker documentation

そのため、3桁区切りでカンマ(,)で先頭に円マーク(¥)をつける場合は以下のように記載します。

measure: total_sale_price {
  type: sum
  value_format: "\"¥\"#,##0"
  sql: ${sale_price} ;;
}

すると、value_format付与前は、生データが表示されていたExplore画面ですが、

value_format付与後には、以下の画像のようにきれいにフォーマットされました。

見事お悩み解決!

・・・、と言いたいところですが、¥が必要な箇所全てに"\"¥\"#,##0"を記載するのは骨が折れます。

"\"¥\"#,##0"に名前をつけていつでもどこでも都合の良い時に呼び出したいと思うのが人情でしょう。そんな時に使うのが、named_value_formatパラメーターです。

named_value_format

named_value_formatパラメーターで、value_formatに名前をつけることができ、dimensionやmeasureで前述のvalue_format_nameで呼び出せるようになります。

modelファイルに以下のように定義して、viewファイルで呼び出します。

# model file
named_value_format: yen_0 {
  value_format: "\"¥\"#,##0"
}
#view file
measure: total_sale_price {
  type: sum
  value_format_name: yen_0
  sql: ${sale_price} ;;
}

Lookerのデフォルトのフォーマットの表示形式が、アンダースコア(_)で小数点以下の表示を指定しているので、named_value_formatでもそれに従うと開発中に混乱が少ないと思います。

千単位で表示させる

大きい数字を扱う場合には千単位、百万単位で表示させたい場合があると思います。

その場合には、以下のように定義をするとLooker側でよろしく計算をして千単位で表示してくれます。

# model file
named_value_format: yen_k {
  value_format: "\"¥\"#,##0,\" K\""
}
#view file
measure: total_sale_price_k {
  type: number
  value_format_name: yen_k
  sql: ${total_sale_price} ;;
}

マイナス表示

計算の結果がマイナスになる値もあると思います。

マイナス(-)が先頭についているだけでは、見逃してしまう可能性があります。そんな時にはセミコロン(;)で区切ってマイナスの場合の書式を指定します。

# model file
named_value_format: yen_0 {
  value_format: "\"¥\"#,##0;(\"¥\"#,##0)"
}

このように定義すると、計算結果がマイナスの場合には値を括弧()で囲ってくれます。

テーブル計算をする場合

テーブル計算は生データが表示されるので、別でフォーマットを指定する必要があります。

指定しない場合:

テーブル計算の画面でDefault Formattingを選択すると、一番下にCustomが選択できます。

そこにExcel方式でフォーマットを記述すれば良いのですが、テーブル計算に入力する際はバックスラッシュ(\)でエスケープする必要はありません。(ダブルクオート:""で囲めばOK)

すると、きれいにフォーマットされます。