One dashboard, one question
Most BI tools push you toward one giant dashboard that tries to answer everything at once. The result is a screen full of charts that no one reads. Looky is built around the opposite principle: one focused dashboard per business question.
A dashboard that answers "Where is revenue leaking this quarter?" is useful. A dashboard that shows all metrics for all dimensions for all time periods is a loading screen with charts. Build small, sharp, and publishable.
Two layout modes support different use cases:
- fluid_grid: interactive, responsive canvas. Charts sit side by side and cross-filter each other when users click. Best for exploration and operational monitoring.
- document: fixed top-to-bottom reading order. Designed to be read, shared, and exported to PDF. Best for reports, briefings, and scheduled deliveries.
Fluid grid dashboard with layout control
Use width on items to control how many grid columns each visualization occupies. The default grid is 3 columns. Width 1 = one column, width 2 = two columns, width 3 = full width.
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
Document dashboard for reports and exports
Document mode renders in a fixed single-column layout. It is the right choice when the dashboard will be shared via PDF export or when the reading order carries meaning.
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
Document dashboards can be exported to PDF on a schedule. See Scheduled Exports.
Filter types
cutoff_date — time period selection
The most common filter. Controls a time boundary parameter passed to all queries in the dashboard. Granularity determines the selector resolution shown to users.
filters:
- id: global_period
type: cutoff_date
granularity: year # year | month | day
label: Period
param: cutoff_date # must match the parameter name in your Malloy model
default: "{{today}}" # or "{{yesterday}}"
Supported granularity values:
year: user picks a year. Useful for annual reviews and YTD comparisons.month: user picks a month. Useful for monthly performance dashboards.day: user picks a specific date. Useful for operational dashboards with daily granularity.
The default value is evaluated at render time. {{today}} always resolves to today's date in the instance timezone. {{yesterday}} resolves to yesterday.
select — dimension filter from a Malloy query
Populates a dropdown from a live query. Use when users need to filter by a dimension value (region, category, brand) rather than time.
filters:
- id: category_filter
type: select
label: Category
param: p_category
options_query: "models/ec_revenue.malloy::category_options"
default: "all"
options_query points to a Malloy query that returns the list of valid values. The query must return a single column — that column becomes the filter options.
Cross-filtering in fluid grid
In fluid_grid dashboards, clicking a bar, point, or cell in any interactive chart filters all other charts in the dashboard to that selection. This works automatically — no configuration required.
To disable cross-filtering for a specific visualization (for example a summary KPI that should not change when other charts are filtered), set cross_filter: false in the visualization's chart block:
# in the visualization YAML, not the dashboard
chart:
cross_filter: false
Cross-filtering is not available in document mode. Document dashboards are designed for reading, not exploration.
Composition checklist
- Every
items[].visualizationreferences an existing published visualization id. layout_modeis chosen deliberately:fluid_gridfor exploration,documentfor reports.- Dashboard title is a question, not a category label.
- Filter
parammatches the parameter name declared in the Malloy model. granularitymatches the time resolution of the underlying data.
looky validate
looky list dashboards