如何使用 Liquid 设置日期格式

在某些情况下,您可能需要更改 Looker 对日期的格式设置。

例如,如果您要为欧洲用户构建探索和信息中心,则所有采用全数字格式的日期都应按“日-月-年”的顺序显示。例如,2019 年 6 月 7 日的格式应为 07/06/2019Jun 07, 2019。Looker 的默认格式会将日期呈现为 2019-06-07。虽然您可以使用 DATE_FORMAT() 等 SQL 函数更改日期格式,但可能不希望使用纯 SQL 编写所有内容。

html 参数中使用 Liquid

您可以在维度的 html 参数中使用流式格式来更改使用有效日期格式的任何字段的格式。由于 Liquid 需要有效的日期,因此最好使用现有维度组的时间范围。您无法更改周或月的编号,因为这些编号会以整数的形式返回。

例如,您可以将 ${created_date} 的格式设置为以 Aug 23 22 的形式呈现,而不是以 Looker 默认的 2022-08-23 的形式呈现:


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


字符串语法 "%b %d, %y" 的格式与 strftime 相同。

由于 html 参数使用 Liquid 格式,因此时间范围的原始值不会发生更改,只会更改向用户呈现该值的方式。这样可以确保日期在查询中的显示顺序不会发生变化。

以下是一些其他示例供您参考。如需查看可用格式的更详细参考信息,请参阅本页面底部。

预设 示例
%m/%d/%Y 2013 年 6 月 5 日
%A, %B %e, %Y 2013 年 6 月 5 日,星期三
%b %e %a 6 月 5 日(星期三)

示例

以下探索查询示例显示了订单项日期订单项周数的格式不同,并在创建日期组标签下进行整理,以模拟探索字段选择器中的日期维度组。

自定义格式会按降序向用户显示哪些日期和年份的哪个星期数对应的 Items Count 值最大。

如需详细了解如何使用 group_label 参数,请参阅 group_label 文档页面

探索查询会显示“订单项日期”“订单项周”的自定义日期格式结果,并按“订单项数量”降序排序。

LookML

探索示例使用以下 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 2001 年 8 月 23 日
%e 日期(用空格填充,1-31) 23
%F 短格式 YYYY-MM-DD 日期,相当于 %Y-%m-%d 2001-08-23
%g 基于周的年份,最后两位数字 (00-99) 1
%G 基于周的年 2001
%h 月份的缩写名称*(与 %b 相同) 8 月
%H 24 小时制的小时数 (00-23) 14
%I 12 小时制的小时数 (01-12) 02
%j 年份中的某一天 (001-366) 235
%k 24 小时制的小时数,个位数前面附加一个空格 (0-23) 14
%l 12 小时制的小时数,个位数前面带有空格 (0-12) 2
%m 用十进制数 (01-12) 表示的月份 8
%M 分钟 (00-59) 55
%n 换行符 ('\n')
%P 上午或下午标识(使用小写字母) pm
%r 12 小时制时间* 下午 2:55:02
%R 24 小时制 HH:MM 时间,相当于 %H:%M 14:55
%s 从公元纪年 1970 年 1 月 1 日 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 周数(以第一个星期日为第一周的第一天)(00-53) 33
%V ISO 8601 周数 (01-53) 34
%w 星期几(以星期日为 0 的十进制数)(0-6) 4
%W 周数(以第一个星期一为第一周的第一天)(00-53) 34
%x 日期表示法 * 2001 年 8 月 23 日
%X 时间表示法* 14:55:02
%y 年份,最后两位数字(00-99) 1
%Y 2001
%z 时区中与世界协调时间 (UTC) 之间的 ISO 8601 偏移量(1 分钟=1、1 小时=100)如果无法确定时区,则不显示任何字符 100
%Z 时区名称或缩写 *如果无法确定时区,则不填充任何字符 CDT
%% 一个百分号 %