Client-owned contract
Six metric definitions, exact dimensional permissions, refusal behavior, and named ownership live in versioned files.
Workbook matrix · ODCS-style contract · metric testsThe carried local-small range leads total sales; incremental demand is unproven.
Run a controlled store-and-SKU holdout before expanding the local-small range. Total segment sales are confounded by assortment breadth, and shelf availability remains the execution constraint.
The carried local-small range leads total net and comparable sales, but it also has the broadest product and store exposure. The generator cannot estimate demand for products a store does not carry. Test matched stores and SKUs before expansion, with shelf availability as the operational gate.
Exposure check: Imported partner · 3 products · 22 store-product slots; Local · regional · 11 products · 76 store-product slots; Local · small producer · 22 products · 182 store-product slots.
The supplied spreadsheet contains six bilingual metric requirements and their permitted dimensions. It is not a source of sales, margin, availability, basket, or attribution observations.
| Metric | Definition | Allowed dimensions |
|---|---|---|
| Net SalesČisté výnosy | Gross merchandise value less discounts and VAT. | |
| Comparable SalesSrovnatelné výnosy | Net sales from stores open on the sale date and on the aligned date 364 days earlier. | |
| Gross MarginHrubá marže | One hundred times summed net sales less cost divided by summed net sales; never an average of row percentages. | |
| Attributed RevenueAtribuovaný výnos | Delivery-order net sales credited once to its eligible non-direct converting session batch under a single-touch campaign model. | |
| Average Basket ValueHodnota nákupního košíku | Whole-basket net sales divided by distinct transactions at the allowed query grain. | |
| In-store AvailabilityDostupnost | Available shelf minutes divided by eligible shelf minutes during the modeled 12-hour trading day. |
Average Basket Value intentionally omits Product and Product Segment. The runtime rejects that combination before either compiler sees it.
The visible trace separates a requirements file, synthetic generation, physical warehouse rows, dbt models, semantic-engine requests, compiled SQL, and execution receipts. No stage is relabelled as another.
Sheet1!A2:M8 · SHA-256 009bb2b60aea03a254e9aeae09da7aec65ccdd1aa004064e1dabfca8aa5b8618
v0.9.6.7 · seed 2407 · integer keys and foreign keys only
Curated-label locale cs_CZ · 1,482,018 POS lines · 148,835 inventory observations
4 identity and provenance tests bind raw facts to metric grains.
Cube and MetricFlow retain different requests, SQL, hashes, rows, and failure receipts.
raw.pos_lines + raw.product_attributes + raw.products + raw.stores → analytics/retail/dbt/models/marts/mart_okurka_sales_line.sql → analytics.mart_okurka_sales_line → analytics/retail/cube/model/okurka_metrics.yml → Cube → compiled SQL{
"cubeSql": "SELECT okurka_sales.product_segment, MEASURE(okurka_sales.net_sales) AS net_sales, MEASURE(okurka_sales.gross_margin_pct) AS gross_margin_pct FROM okurka_sales WHERE okurka_sales.metric_time >= '2026-06-01' AND okurka_sales.metric_time < '2026-07-01' GROUP BY 1 ORDER BY 2 DESC",
"nativeQuery": {
"dimensions": [
"okurka_sales.product_segment"
],
"measures": [
"okurka_sales.net_sales",
"okurka_sales.gross_margin_pct"
],
"order": [
[
"okurka_sales.net_sales",
"desc"
]
],
"segments": [],
"timeDimensions": [
{
"dateRange": [
"2026-06-01T00:00:00.000Z",
"2026-06-30T23:59:59.999Z"
],
"dimension": "okurka_sales.metric_time"
}
]
},
"offset": 0,
"pageSize": 20,
"validatedMembers": [
{
"name": "okurka_sales.gross_margin_pct",
"type": "measure"
},
{
"name": "okurka_sales.metric_time",
"type": "member"
},
{
"name": "okurka_sales.net_sales",
"type": "measure"
},
{
"name": "okurka_sales.product_segment",
"type": "member"
}
]
}SELECT "okurka_sales".product_segment "okurka_sales__product_segment", sum("okurka_sales".net_sales) "okurka_sales__net_sales", 100.0 * sum("okurka_sales".gross_margin) / NULLIF(sum("okurka_sales".net_sales), 0) "okurka_sales__gross_margin_pct"
FROM analytics.mart_okurka_sales_line AS "okurka_sales"
WHERE ("okurka_sales".metric_time >= $1::timestamptz AND "okurka_sales".metric_time <= $2::timestamptz)
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10000{
"group_by": [
"okurka_sale__product_segment"
],
"limit": 20,
"metrics": [
"okurka_net_sales",
"okurka_gross_margin_pct"
],
"order_by": [
"-okurka_net_sales"
],
"validatedMembers": [
{
"name": "okurka_net_sales",
"type": "metric"
},
{
"name": "okurka_gross_margin_pct",
"type": "metric"
},
{
"name": "okurka_sale__product_segment",
"type": "group_by"
},
{
"name": "metric_time",
"type": "filter"
},
{
"name": "metric_time",
"type": "filter"
}
],
"where": "{{ TimeDimension('metric_time', 'day') }} >= '2026-06-01' and {{ TimeDimension('metric_time', 'day') }} < '2026-07-01'"
}WITH sma_10007_cte AS (
-- Read Elements From Semantic Model 'okurka_sales'
-- Metric Time Dimension 'date'
SELECT
DATE_TRUNC('day', metric_time) AS metric_time__day
, product_segment AS okurka_sale__product_segment
, net_sales AS __okurka_net_sales
, gross_margin AS __okurka_gross_margin_amount_internal
FROM "retail_warehouse"."analytics"."mart_okurka_sales_line" okurka_sales_src_10000
)
SELECT
COALESCE(subq_6.okurka_sale__product_segment, subq_12.okurka_sale__product_segment) AS okurka_sale__product_segment
, MAX(subq_6.okurka_net_sales) AS okurka_net_sales
, MAX(CAST(subq_12.okurka_gross_margin_amount_internal AS DOUBLE PRECISION) / CAST(NULLIF(subq_12.okurka_net_sales, 0) AS DOUBLE PRECISION)) AS okurka_gross_margin_pct
FROM (
-- Constrain Output with WHERE
-- Select: ['__okurka_net_sales', 'okurka_sale__product_segment']
-- Aggregate Inputs for Simple Metrics
-- Compute Metrics via Expressions
SELECT
okurka_sale__product_segment
, SUM(okurka_net_sales) AS okurka_net_sales
FROM (
-- Read From CTE For node_id=sma_10007
-- Select: ['__okurka_net_sales', 'okurka_sale__product_segment', 'metric_time__day']
SELECT
metric_time__day
, okurka_sale__product_segment
, __okurka_net_sales AS okurka_net_sales
FROM sma_10007_cte
) subq_2
WHERE metric_time__day >= '2026-06-01' and metric_time__day < '2026-07-01'
GROUP BY
okurka_sale__product_segment
) subq_6
FULL OUTER JOIN (
-- Constrain Output with WHERE
-- Select: ['__okurka_gross_margin_amount_internal', '__okurka_net_sales', 'okurka_sale__product_segment']
-- Aggregate Inputs for Simple Metrics
-- Compute Metrics via Expressions
SELECT
okurka_sale__product_segment
, SUM(okurka_gross_margin_amount_internal) AS okurka_gross_margin_amount_internal
, SUM(okurka_net_sales) AS okurka_net_sales
FROM (
-- Read From CTE For node_id=sma_10007
-- Select: ['__okurka_gross_margin_amount_internal', '__okurka_net_sales', 'okurka_sale__product_segment', 'metric_time__day']
SELECT
metric_time__day
, okurka_sale__product_segment
, __okurka_net_sales AS okurka_net_sales
, __okurka_gross_margin_amount_internal AS okurka_gross_margin_amount_internal
FROM sma_10007_cte
) subq_8
WHERE metric_time__day >= '2026-06-01' and metric_time__day < '2026-07-01'
GROUP BY
okurka_sale__product_segment
) subq_12
ON
subq_6.okurka_sale__product_segment = subq_12.okurka_sale__product_segment
GROUP BY
COALESCE(subq_6.okurka_sale__product_segment, subq_12.okurka_sale__product_segment)
ORDER BY okurka_net_sales DESC
LIMIT 20C 5c0db1fad0ac8ce9MF 5e9b20dcd32bbe1dC c610be92cf4f6889MF 27325125af458650C e10a603f9e4755f4MF 83a472ffdb9f28a7C 989ef71028bb45daMF 1dcbd759dbe7e172C 6cf288324b78bdcdMF d8d1355b25df0fb0MetricFlow ratio values are multiplied by 100 only at the comparison boundary; native rows remain visible.
Codex reaches two local namespaces. Each delegates to its own semantic engine and PostgreSQL. Evaluation reads completed receipts only after both engine calls finish; agenticanalytics.cz is not a runtime dependency.
Six metric definitions, exact dimensional permissions, refusal behavior, and named ownership live in versioned files.
Workbook matrix · ODCS-style contract · metric testsCube and dbt MetricFlow discover, validate, compile, and execute independently against the client warehouse.
Native requests · different SQL hashes · matched rowsGeneration inputs, raw counts, dbt reconciliation, engine receipts, and limitations remain reviewable after delivery.
Hashes · manifests · compiled SQL · runbooks