Liquid を使用して日付を書式設定する方法

状況によっては、Looker による日付の書式設定方法を変更したい場合があります。

たとえば、ヨーロッパのユーザー向けにデータ探索とダッシュボードを作成する場合、日付がすべて数字の形式で表示される場合は、日付の順序が日-月-年になるようにする必要があります。たとえば、2019 年 6 月 7 日は 07/06/2019 または Jun 07, 2019 の形式にする必要があります。Looker のデフォルトの形式では、日付は 2019-06-07 としてレンダリングされます。DATE_FORMAT() などの SQL 関数を使用して日付形式を変更できますが、すべてを単純な SQL で記述することはおすすめしません。

html パラメータでの Liquid の使用

ディメンションの html パラメータでリキッド形式を使用すると、有効な日付形式を使用するフィールドの形式を変更できます。Liquid は有効な日付を想定しているため、既存のディメンション グループの期間を使用することをおすすめします。週または月の数値は整数として返されるため、変更できません。

たとえば、Looker のデフォルトの 2022-08-23 ではなく Aug 23 22 としてレンダリングするように ${created_date} を書式設定できます。


  dimension: date_formatted {
    sql: ${created_date} ;;
    html:{{ rendered_value | date: "%b %d, %y" }};;
  }


文字列構文 "%b %d, %y" の形式は strftime と同じです。

html パラメータは Liquid の書式設定を使用しているため、期間の元の値は変更されず、値がユーザーにどのように表示されるかにのみ影響します。これにより、クエリに日付が表示される順序が変更されなくなります。

次に、使用できるその他の例を示します。使用可能なフォーマットの詳細については、このページの下部をご覧ください。

プリセット
%m/%d/%Y 06/05/2013
%A, %B %e, %Y 2013 年 6 月 5 日(水)
%b %e %a 6 月 5 日(水)

次の Explore クエリの例では、[アイテム注文日] と [アイテム注文週] が異なるフォーマットで表示され、Explore フィールド ピッカーで日付ディメンション グループをシミュレートするために[作成日] グループラベルの下に整理されています。

カスタム形式では、最大のアイテム数の値と対応するその年の日付と週番号が降順で表示されます。

group_label パラメータの使用方法については、group_label のドキュメント ページをご覧ください。

Explore クエリでは、アイテム注文日、アイテム注文週のカスタム日付フォーマットの結果を、アイテム注文数の降順でソートして表示します。

LookML

この Explore の例では、次の LookML を使用しています。



# The original dimension group - hidden so that users can only choose from the formatted dates date and week timeframes
  dimension_group: created {
    hidden: yes
    type: time
    timeframes: [
      raw,
      time,
      date,
      hour,
      hour_of_day,
      time_of_day,
      week,
      month,
      quarter,
      year
    ]
    sql: ${TABLE}.created_at ;;
  }

# The customized timeframes, organized in the Explore field picker under the group label Created date
  dimension: date_formatted {
    group_label: "Created date"
    label: "Date"
    type: date_raw
    sql: ${created_date} ;;
    html: {{ rendered_value | date: "%b %d, %y" }};;
  }

  dimension: week_formatted {
    group_label: "Created date"
    label: "Week"
    type: date_raw
    sql: ${created_week} ;;
    html: {{ rendered_value | date: "Week %U (%b %d)" }};;
  }


strftime Reference

次の表に、さまざまな strftime 形式を示します。一部の形式は、Looker で想定どおりにレンダリングされない場合があります。

指定子 置き換え後
%a 短縮された曜日名 *
%A 完全な曜日名 * 木曜日
%b 月名の略称 * 8月
%B 完全な月の名前 * 8 月
%c 日付および時刻の表記 * 2001 年 8 月 23 日 14:55:02
%C 年を 100 で割って、整数値(00 ~ 99)になるように切り捨てる 20
%d ゼロパディングされた日(01 ~ 31) 23
%D MM/DD/YY の短い日付。%m/%d/%y と同等 08/23/01
%e スペースでパディングされた日(1 ~ 31) 23
%F YYYY-MM-DD の短い日付。%Y-%m-%d と同等 2001-08-23
%g 週ベースの年、末尾 2 桁(00~99) 1
%G 週ベースの年 2001
%h 月名の短縮形*(%b と同じ) 8月
%H 24 時間形式の時間(00 ~ 23) 14
%I 24 時間形式の時間(00 ~ 23) 02
%j その年の経過日数(001 ~ 366) 235
%k 24 時間形式の時間。1 桁の場合は空白が続きます(0 ~ 23) 14
%l 12 時間形式の時間。1 桁の場合は空白が続きます(0 ~ 12) 2
%m 10 進数として表示される月(01 ~ 12) 8
%M 分(00 ~ 59) 55
%n 改行文字(「\n」)
%P 午前または午後(小文字で指定) pm
%r 12 時間制 * 2:55:02 PM
%R 24 時間制の HH:MM 時間(%H:%M と同等) 14:55
%s エポック時間からの秒数、1970-01-01 00:00:00 +0000(UTC) 1566236649
%S 秒(00 ~ 61) 2
%t 水平タブ文字(「\t」)
%T ISO 8601 の時間形式(HH:MM:SS)。%H:%M:%S に相当 14:55:02
%u ISO 8601 の曜日。月曜日は 1(1 ~ 7) 4
%U 最初の日曜日を週の 1 日目とする週番号(00~53) 33
%V ISO 8601 の週番号(01~53) 34
%w 10 進数として表示される曜日。日曜日が 0(0 ~ 6) 4
%W 最初の月曜日を週の 1 日目とする週番号(00~53) 34
%x 日付の表記 * 08/23/01
%X 時刻表現 * 14:55:02
%y 年の末尾 2 桁(00 ~ 99) 1
%Y Year 2001
%z タイムゾーン内の UTC からの ISO 8601 オフセット(1 分=1、1 時間=100)タイムゾーンを判別できない場合は文字がありません 100
%Z タイムゾーンの名前または略称 *タイムゾーンを判別できない場合は文字がありません CDT
%% パーセント記号 %