THE BIG PICTURE
Small shop. Clear insights.
Explore orders, customers, and payment patterns
in the dbt Jaffle Shop sample dataset.
A QUESTION, A GOVERNED ANSWER
Ask Wren
Explore independently validated saved answers from the dbt Jaffle Shop sample dataset.
This public static version contains saved, independently validated answers. Live arbitrary Ask Wren questions are available only when running the project locally. See the repository README for local setup.
Public static demo. Verified examples are available; live arbitrary questions require the local project service.
Suggested questions
Order overview
All months · All statusesOrder KPIs follow both filters. Total order amount includes all selected statuses and payment methods; it is not refund-adjusted.
Inspect overview SQL
MONTH BY MONTH
Order performance
Recorded amounts and order activity, on separate scales.
Focus or hover over a month for details. Exact values are available in the table below.
Inspect monthly SQL
CUSTOMER SPOTLIGHT
Top 10 customers
Ranked by total order amount in the selected scope.
Equal totals are ordered by customer ID.
Inspect customer SQL
ORDER LIFECYCLE
Amount by status
Order count and recorded amount for each status.
Completed-order amount includes only orders marked completed. Returned orders are included in total order amount; this dataset does not model explicit refunds.
Inspect status SQL
TRUST THE NUMBERS
Data quality
Full-snapshot checks. These do not change with the filters.
Inspect data-quality and reconciliation SQL
Metric definitions Scope, currency, and calculation rules
- Total order amount
- SUM(orders.amount), in AUD. Includes all selected statuses and all payment methods, including coupons and gift cards. This is not net revenue or refund-adjusted revenue.
- Completed-order amount
- SUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END). Non-completed statuses contribute zero.
- Order count and purchasing customers
- COUNT(*) at order grain and COUNT(DISTINCT customer_id) within the selected period and status. Purchasing customers must not be added across months.
- Average order value
- AVG(orders.amount). Null amounts are excluded. The overall value is computed from orders, not by averaging monthly averages. Displayed values are rounded to two decimals.
- Customers and payments
- Full-snapshot row counts from the customers and payments models. These inventory counts ignore the filters. Customers include people without orders.
- Months and data quality
- Months are based on order_date using UTC dates. The sample does not establish that each calendar month is complete. Amount reconciliation uses a tolerance of AUD 0.000001 and also flags one-sided nulls.
How this was built Governed models, snapshot data, and validation
This dashboard uses the dbt Jaffle Shop sample dataset. dbt prepares the source objects in DuckDB; Wren supplies the semantic definitions and query execution. This is a fixed snapshot, not a live feed.
The original compiled MDL is bundled unchanged. Wren 0.15.0 exported the three governed models to Parquet and validated every dashboard SQL query across all month and status combinations. Wren's browser engine queries those snapshots locally in your browser. Its pinned WebAssembly engine loads from a public CDN and requires an internet connection.
Models: customers, orders, payments. Relationships: orders_customers joins orders.customer_id to customers.customer_id; payments_orders joins payments.order_id to orders.order_id. Both are many-to-one.
The monthly_order_summary view supplies monthly results when no status filter is selected. Status-filtered monthly results and order KPIs use the exact measure expressions in the order_metrics cube. Payments are aggregated per order before checking amounts, preventing duplicate order totals.
View the SQL validation record · Inspect the original Wren MDL