Docs / Build Workflow

Filtro — cutoff_date

Cuándo usar cutoff_date

Usa cutoff_date cuando el análisis es "todo desde el comienzo del mes hasta un día elegido" — revenue month-to-date, reportes de cierre mensual, snapshots "as-of". El usuario elige una sola fecha; Looky manda automáticamente tanto date_from (el primer día de ese mes) como date_to (la fecha elegida) como parámetros.

Usa date_range cuando el usuario necesita elegir los dos extremos libremente. Usa date_range_preset cuando la elección es entre presets con nombre como "last 30 days" o "this quarter".

Campos requeridos

  • type: cutoff_date

Campos opcionales

  • id — identifier interno del filtro.
  • label — display label arriba del picker.
  • param — el nombre de parámetro bajo el cual también se manda la fecha de corte resuelta (default al id del filtro, y luego a cutoff_date). La ventana derivada siempre llega como date_from / date_to de todos modos.
  • default — token de fecha (mira abajo) o string ISO de fecha. Default a "{{today}}".
  • granularity — controla cómo se deriva date_from desde la fecha elegida. Uno de day, month (default), quarter, year. Con day, date_from iguala a la fecha elegida (ventana de un día). Con month, el primer día del mes de la fecha elegida. Con quarter, el primer día del calendar quarter de la fecha elegida (Ene, Abr, Jul u Oct). Con year, 1 de enero del año de la fecha elegida. Honrado tanto a nivel dashboard como visualization.

Máximo seleccionable

El picker ofrece todos los días hasta hoy inclusive, en la timezone del workspace, y ninguno después. El default decide dónde abre el filtro: {{today}} para el día en curso, {{yesterday}} para el último día cerrado — la opción para cierres de día, PDFs y cierres de período — o una fecha literal.

Tokens de fecha para defaults

Estos tokens resuelven contra la timezone del workspace (ui.timezone en workspace.yml, cayendo al default de la instancia):

  • {{today}}
  • {{yesterday}}
  • {{start_of_week}} / {{end_of_week}}
  • {{start_of_month}} / {{end_of_month}}

Cualquier cosa que no esté en esta lista se trata como un string ISO de fecha literal (ej. "2024-12-31").

Cómo llega el valor a la query Malloy

La fecha elegida setea dos parámetros en cada query a la que aplica el filtro:

  • date_from — derivado de la fecha elegida según granularity (default al primer día de su mes).
  • date_to — la fecha elegida misma.

Tu model de Malloy declara esos dos parámetros y los usa en cláusulas where::

##! experimental.parameters

source: ec_orders(
  p_date_from::date is @2024-01-01,
  p_date_to::date   is @2024-12-31
) is ecommerce.table('bigquery-public-data.thelook_ecommerce.order_items') extend {
  view: revenue_mtd is {
    where:
      created_at::date >= p_date_from
      and created_at::date <= p_date_to
    aggregate:
      revenue is sum(sale_price)
  }
}

Diferencias entre adapters

Tanto date_from como date_to son parámetros de date / timestamp. En BigQuery bindean nativo. En Postgres y MySQL el model tiene que usar el patrón de placeholder @param en el SQL subyacente — mira la comparación de adapters de source y Soporte de Malloy.

Ejemplos trabajados

Cutoff default es hoy:

filters:
  - type: cutoff_date
    label: Cutoff
    default: "{{today}}"

Cutoff default es fin del mes pasado (para reportes de cierre mensual):

filters:
  - type: cutoff_date
    label: Closing date
    default: "{{end_of_month}}"

Cutoff default es una fecha literal (para un snapshot histórico fijo):

filters:
  - type: cutoff_date
    label: As of
    default: "2024-12-31"