Docs / Build Workflow

Dashboards

Un dashboard, una pregunta

La mayoría de las herramientas BI te empujan a un dashboard gigante que trata de responder todo a la vez. El resultado es una pantalla llena de charts que nadie lee. Looky se construye alrededor del principio opuesto: un dashboard enfocado por pregunta de negocio.

Un dashboard que responde "¿Dónde está perdiendo revenue este quarter?" es útil. Un dashboard que muestra todas las métricas para todas las dimensions para todos los períodos es una pantalla de loading con charts. Construí chico, agudo y publicable.

Dos layout modes soportan distintos casos de uso. layout_mode es requerido; los únicos valores permitidos son:

  • fluid_grid: canvas interactivo y responsive. Los charts se sientan lado a lado y se cross-filtran entre sí cuando los usuarios clickean. Mejor para exploración y monitoreo operacional.
  • document: orden de lectura fijo top-to-bottom. Diseñado para ser leído, compartido y exportado a PDF. Mejor para reportes, briefings y deliveries scheduleados.

Cualquier otro valor es rechazado por el validator.

Dashboard fluid grid con control de layout

Usá width en los items para controlar cuántas columnas del grid ocupa cada visualization. El grid default es de 3 columnas. Width 1 = una columna, width 2 = dos columnas, width 3 = full width. Spans avanzados opcionales: width 4 = cuarto de fila, width 6 = mitad de fila.

id: ec_sales_breakdown
title: Where Is Revenue Coming From?
layout_mode: fluid_grid
published: true
filters:
  - id: global_period
    type: cutoff_date
    granularity: year
    label: Period
    default: "{{today}}"
items:
  - visualization: ec_revenue_kpi
  - visualization: ec_orders_kpi
  - visualization: ec_revenue_by_category_bar
  - visualization: ec_revenue_by_country_bar
  - visualization: ec_top_brands_bar
  - visualization: ec_traffic_source_bar
    width: 2
  - visualization: ec_revenue_by_department_bar
    width: 1
  - visualization: ec_orders_detail_grid

Dashboard document para reportes y exports

El modo document renderiza en un layout fijo de una columna. Es la elección correcta cuando el dashboard se va a compartir vía PDF export o cuando el orden de lectura tiene significado.

id: ec_business_overview
title: What Is Happening In The Business?
layout_mode: document
published: true
filters:
  - id: global_period
    type: cutoff_date
    granularity: year
    label: Period
    default: "{{today}}"
items:
  - visualization: ec_revenue_kpi
  - visualization: ec_orders_kpi
  - visualization: ec_aov_kpi
  - visualization: ec_revenue_over_time_line
  - visualization: ec_category_brands_matrix
  - visualization: ec_orders_by_status_bar

Los dashboards document se pueden exportar a PDF en un schedule. Mirá Scheduled Exports.

Qué NO es un campo del YAML de dashboard

Las relaciones de cross-filter no se declaran a nivel dashboard. No hay bloque cross_filter en el dashboard. El cross-filter es un toggle por viz y un comportamiento runtime automático dashboard-wide — mirá Cross-filtering.

Similar, el shape de las entries en items[] es chico: cada item es o bien {visualization: <id>} o el mismo más un width: opcional. No hay height, position, row ni col; el fluid grid acomoda los items en orden de declaración y el layout document es de una columna.

Paginación dentro de un dashboard

Los items grid y report_matrix dentro de un dashboard paginan server-side; cambiar de página re-corre la query subyacente con los nuevos parámetros de página. El comportamiento es idéntico para sources de BigQuery, Postgres y MySQL. Las características de costo difieren — mirá Diferencias entre adapters de source.

Tipos de filter

Los filtros declarados en un dashboard aplican a cada viz que el dashboard contiene. La referencia completa por tipo vive en Filters; los dos shapes más comunes para dashboards se muestran abajo.

cutoff_date — selección de período de tiempo

El filtro de dashboard más común. El usuario elige una sola fecha y Looky manda dos parámetros a cada query: date_from y date_to. El lower bound depende de granularity — month (default) setea date_from al primer día del mes de la fecha elegida; year setea date_from al 1 de enero de ese año.

filters:
  - id: global_period
    type: cutoff_date
    granularity: month     # month (default) o year
    label: Period
    default: "{{today}}"

Valores de granularity soportados para filtros cutoff_date a nivel dashboard:

  • month (default): date_from = primer día del mes de la fecha elegida, date_to = la fecha elegida. Útil para dashboards month-to-date.
  • year: date_from = 1 de enero del año de la fecha elegida, date_to = la fecha elegida. Útil para dashboards year-to-date.

La key granularity es solo a nivel dashboard; los filtros cutoff_date por visualization siempre se comportan como month.

Default tokens: {{today}}, {{yesterday}}, {{start_of_week}}, {{end_of_week}}, {{start_of_month}}, {{end_of_month}}. Cualquier otra cosa se trata como un string literal de fecha ISO.

select — filtro de dimension desde una query de Malloy

Pobla un dropdown desde una query live. Usá cuando los usuarios necesitan filtrar por un valor de dimension (región, categoría, marca) en vez de por tiempo.

filters:
  - id: category
    type: select
    label: Category
    param: category
    options_query: "models/ec_revenue.malloy::category_options"
    default: all

options_query apunta a una query de Malloy que devuelve filas con al menos las columnas id y label (o uno de los aliases reconocidos — mirá select). El parámetro del model declarado como p_category recibe el valor (el prefix p_ se strippea para el nombre externo; el filtro manda category).

Cross-filtering en fluid grid

En dashboards fluid_grid, clickear una barra, punto o celda en cualquier chart interactivo filtra todos los otros charts del dashboard a esa selección. Esto funciona automático — no requiere configuración.

Para deshabilitar el cross-filtering en una visualization específica (por ejemplo un KPI summary que no debería cambiar cuando se filtran otros charts), seteá cross_filter: false en el bloque chart de la visualization:

# en el YAML de la visualization, no del dashboard
chart:
  cross_filter: false

El cross-filtering no está disponible en modo document. Los dashboards document están diseñados para lectura, no exploración.

El mecanismo completo — pills, whitelist de supported-params, reglas emit/consume por viz — vive en Cross-filtering.

Checklist de composición

  • Cada items[].visualization referencia un id de visualization publicada existente.
  • layout_mode se elige deliberadamente: fluid_grid para exploración, document para reportes.
  • El título del dashboard es una pregunta, no una etiqueta de categoría.
  • El param del filtro matchea el nombre del parámetro declarado en el model de Malloy.
  • granularity matchea la resolución temporal de los datos subyacentes.
looky validate
looky list dashboards