Docs / Build Workflow

Filtro — date_range

Cuándo usar date_range

Usá date_range para un picker abierto de from / to. El usuario elige los dos extremos libremente; los valores se mandan verbatim como parámetros.

Usá cutoff_date cuando el lower bound siempre es el comienzo del mes de la fecha elegida. Usá date_range_preset cuando el usuario elige entre presets con nombre (last 30 days, this month, etc.) — preferido para la mayoría de dashboards operacionales.

Campos requeridos

  • type: date_range

Campos opcionales

  • label — display label arriba del picker.
  • default — objeto con keys from y to. Cada uno acepta un token de fecha (mirá abajo) o un string ISO de fecha. Uno o los dos pueden omitirse.

Tokens de fecha para defaults

El mismo set de tokens funciona en las sub-keys from y to (resuelven contra la timezone actual del usuario en page load):

  • /
  • /

Cualquier cosa que no esté en la lista se trata como un string ISO de fecha literal.

Cómo llega el valor a la query Malloy

El picker emite un par {from, to} al submit. Looky setea dos parámetros en cada query a la que aplica el filtro:

  • date_from — la fecha "from" elegida.
  • date_to — la fecha "to" elegida.

El model Malloy declara esos parámetros y los usa en cláusulas where:, exactamente como con cutoff_date.

Diferencias entre adapters

Misma caveat de date / timestamp que cutoff_date — mirá la comparación de adapters de source para el patrón de Postgres / MySQL.

Ejemplos trabajados

Default a month-to-date:

filters:
  - type: date_range
    label: Period
    default:
      from: ""
      to:   ""

Default a un período histórico fijo (para un reporte congelado):

filters:
  - type: date_range
    label: Period
    default:
      from: "2024-01-01"
      to:   "2024-12-31"

Default abierto al día actual, sin lower bound (el default del parámetro del model entra en juego):

filters:
  - type: date_range
    label: Period
    default:
      to: ""

Errores comunes

  • La query falla en Postgres o MySQL con un error de date-binding. Agregá el patrón de placeholder @param en el SQL del model — mirá la comparación de adapters de source.
  • "From" es posterior a "to". El picker previene al usuario de elegir un rango invertido, pero un default con from posterior a to renderiza una selección vacía. Usá un default razonable y dejá que el usuario ajuste.
  • La precisión time-of-day importa pero el picker es solo date. El picker solo manda fechas. Codificá el time-of-day en la query Malloy (ej. comparar contra created_at::date) o usá otro patrón de parámetro.
  • Múltiples filtros date_range en una viz. Todos bindean a date_from / date_to — solo uno gana. O mantenés un filtro date_range, o usás date_range_preset con bindings custom date_from_param / date_to_param para usar nombres de parámetro distintos.
  • Los tokens default no se reconocen. Solo los tokens listados son válidos; cualquier otra cosa se toma como un string de fecha literal.