如何使用 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 日(星期三)

示例

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

自定义格式会按降序向用户显示一年中的哪些日期和周数对应的项数值最大。

如需详细了解如何使用 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 08/23/01
%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 12h 格式的小时数,个位数以空格 (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 日期表示 * 08/23/01
%X 时间表示 * 14:55:02
%y 年份,最后两位数 (00-99) 1
%y 2001
%z ISO 8601 相对于世界协调时间 (UTC) 的偏移量(1 分钟=1,1 小时=100)。如果无法确定时区,则不要输入字符 100 个
%Z 时区名称或缩写 *如果无法确定时区,请勿使用任何字符 CDT
%% 一个百分号 百分比