Full source:
examples/jaffle-shop/Schema
| Table | Rows | Description |
|---|---|---|
customers | 20 | Individual and business accounts |
stores | 5 | Physical Jaffle Shop locations |
products | 10 | Jaffles and beverages |
orders | 25 | One row per order with payment breakdown |
order_items | 37 | One row per line item |
Quickstart
CANONIC_LLM_API_KEY and configure llm: in canonic.yaml to enable grain-drafting for low-confidence proposals.
What canonic extracts from the dbt manifest
Thejaffle_dbt connection parses manifest.json (schema v11, dbt 1.7, MetricFlow) as modeling-tier evidence, which ranks higher than live DuckDB introspection during reconciliation. From it, canonic extracts:
- 5 model nodes →
RelationSchemawith named columns, types, primary keys, and foreign-key paths. - 2 semantic models → entity (grain), foreign-join paths, named measure and dimension definitions.
- 3 metrics →
revenue,order_count,units_sold.
semantics/jaffle_duckdb/ carry business-meaningful measure names (revenue, order_count) rather than generic inferred ones (total_amount, row_count); the clearest illustration in these examples of why modeling-tier evidence outranks raw introspection.
Regenerating the artifacts
dbt-labs/jaffle-shop, runs dbt build with dbt-duckdb, and copies the resulting database and manifest back into the example directory.