Indicatore
Fatturato
Una sola definizione per tutta la caffetteria:
quantity * unit_price delle righe d'ordine, esclusi gli ordini annullati.SELECT SUM(l.quantity * l.unit_price) AS revenue
FROM orders o
JOIN order_lines l ON l.order_id = o.order_id
WHERE o.status <> 'cancelled'
Questo è il fatturato ordinato: contano gli ordini in attesa e pagati, non quelli annullati. L'importo incassato
è un'altra metrica, letta da payments. Ogni step che dice "fatturato" usa questa definizione. Quando due report non
concordano, confronta le loro definizioni prima del loro SQL. Scrivi una metrica una volta, in un solo posto (una vista,
un modello dbt, un semantic layer), e riutilizzala.
SELECT EXTRACT(YEAR FROM o.ordered_at) AS year,
SUM(l.quantity * l.unit_price) AS revenue
FROM orders o
JOIN order_lines l ON l.order_id = o.order_id
WHERE o.status <> 'cancelled'
GROUP BY 1
ORDER BY 1;
| year | revenue |
|---|---|
| 2024 | 81511.00 |
| 2025 | 78934.40 |