Cómo usar Liquid para dar formato a las fechas

En algunas situaciones, es posible que quieras cambiar la forma en que Looker formatea las fechas.

Por ejemplo, si creas exploraciones y paneles para usuarios de Europa, las fechas que estén en un formato solo numérico deberían aparecer en el orden Día-Mes-Año. Por ejemplo, el 7 de junio de 2019 debe tener el formato 07/06/2019 o Jun 07, 2019. El formato predeterminado de Looker renderiza la fecha como 2019-06-07. Si bien puedes usar funciones de SQL como DATE_FORMAT() para cambiar un formato de fecha, es posible que no quieras escribir todo en SQL simple.

Usa Liquid en el parámetro html

Puedes usar el formato líquido en el parámetro html de una dimensión para cambiar el formato de cualquier campo que use un formato de fecha válido. Dado que Liquid espera una fecha válida, es mejor usar los períodos de un grupo de dimensiones existente. No puedes cambiar los números de semana o mes, ya que se muestran como números enteros.

Por ejemplo, puedes dar formato a ${created_date} para que se renderice como Aug 23 22 en lugar del 2022-08-23 predeterminado de Looker:


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


El formato para la sintaxis de cadena "%b %d, %y" es el mismo que strftime.

Como el parámetro html usa formato líquido, el valor original del período no se cambia, solo la forma en que se renderiza el valor para el usuario. Esto garantiza que no cambie el orden en que aparecen las fechas en una consulta.

Estos son algunos otros ejemplos que puedes usar. La referencia más completa de los formatos disponibles se encuentra en la parte inferior de esta página.

Ajuste predeterminado Ejemplo
%m/%d/%Y 05/06/2013
%A, %B %e, %Y Miércoles, 5 de junio de 2013
%b %e %a Mié 5 de jun.

Ejemplo

En el siguiente ejemplo de una consulta de exploración, se muestran las opciones Order Items Date y Orders Items Week con un formato diferente y organizadas en una etiqueta de grupo Created date para simular un grupo de dimensiones de fecha en el selector de campos Explore.

El formato personalizado muestra a los usuarios qué fecha y qué número de semana del año corresponden a los valores más altos de Cantidad de artículos en orden descendente.

Consulta la página de documentación de group_label para obtener más información sobre el uso del parámetro group_label.

Una consulta de exploración muestra los resultados de formato de fecha personalizado para Fecha de artículos del pedido, Semana de los artículos del pedido, ordenados por Cantidad de artículos de pedido en orden descendente.

El código LookML

En el ejemplo de Explorar, se usa el siguiente código 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

En la siguiente tabla, se enumeran varios formatos de strftime. Ten en cuenta que no todos los formatos se pueden renderizar como se espera en Looker.

especificador Se reemplazó por Ejemplo
%a Nombre abreviado del día de la semana * Jue
%A Nombre completo del día de la semana * Jueves
%b Nombre del mes abreviado * Ago
%B Nombre completo del mes * Agosto
%c Representación de la fecha y la hora * Jue 23 Ago 14:55:02 2001
%C El año dividido por 100 y se trunca a un número entero (00-99) 20
%d Día del mes, con relleno cero (01-31) 23
%D Fecha corta del DD/MM/AA, equivalente a %m/%d/%y 23/8/01
%e Día del mes con espacios ( 1-31) 23
%F Fecha corta AAAA-MM-DD, equivalente a %Y-%m-%d 2001-08-23
%g Año basado en semanas, últimos dos dígitos (00-99) 1
%G Año basado en la semana 2001
%h Nombre del mes abreviado * (igual que %b) Ago
%H Hora en formato de 24 horas (00-23) 14
%I Hora en formato de 12 h (01-12) 02
%j Día del año (001-366) 235
%k Hora en formato de 24 h, con un espacio en blanco (0-23) para los dígitos individuales 14
%l Hora en formato de 12 horas, los dígitos individuales están precedidos por un espacio en blanco (0-12) 2
%m El mes como número decimal (01-12) 8
%M Minuto (de 00 a 59) 55
%n Carácter de salto de línea ("n")
%P designación a.m. o p.m. en minúsculas p.m.
%r Hora en formato de 12 horas * 2:55:02 p.m.
%R Hora de 24 horas HH:MM, equivalente a %H:%M 14:55
%s Cantidad de segundos desde la época, 1970-01-01 00:00:00 +0000 (UTC) 1566236649
%S Segundo (00-61) 2
%t Carácter de tabulación horizontal ('\t')
%T Formato de hora ISO 8601 (HH:MM:SS), equivalente a %H:%M:%S 14:55:02
%u Día de semana ISO 8601 como un número con el lunes como 1 (1-7) 4
%U Número de semana con el primer domingo como primer día de la primera semana (00-53) 33
%V Número de semana ISO 8601 (01-53) 34
%w El día de la semana como número decimal con el domingo como 0 (0-6) 4
%W Es el número de semana con el primer lunes como primer día de la semana uno (00-53). 34
%x Representación de la fecha * 23/08/01
%X Representación de la hora * 14:55:02
%y Año, últimos dos dígitos (00-99) 1
%Y Año 2001
%z Desfase de ISO 8601 de UTC en la zona horaria (1 minuto=1, 1 hora=100) Si no se puede determinar la zona horaria, no hay caracteres 100
%Z Nombre o abreviatura de la zona horaria *Si no se puede determinar la zona horaria, no se deben incluir caracteres CDT
%% Un signo % %