SQL Dojo Beta
Modellazione

Staging, intermediate, mart

Ogni definizione vive in un solo layer: nomi e tipi nello staging, logica condivisa nei modelli intermediate, entità di business nei mart.

Staging: un modello per tabella sorgente, rinominato (<entity>_id, lo stesso nome ovunque), tipizzato, convertito; niente join. Solo lo staging legge le sorgenti. Intermediate: join, cambi di granularità, logica condivisa da più mart, scritta una volta. Mart: entità ed eventi a una granularità chiara, uno per concetto, condivisi da tutti i team, con un contratto quando altri ne dipendono.

-- A staging select: one source table, renamed, typed, converted; no join.
WITH raw_orders("ordId", "AMOUNT_CENTS", "State") AS (VALUES
  ('17', 4290, ' Paid'), ('18', 1850, 'cancelled '), ('19', 960, 'PAID'))
SELECT CAST("ordId" AS INTEGER) AS order_id,
       CAST("AMOUNT_CENTS" * 0.01 AS DECIMAL(10,2)) AS amount,
       lower(trim("State")) AS status
FROM raw_orders
ORDER BY order_id;
order_idamountstatus
1742.90paid
1818.50cancelled
199.60paid
Provalo in Randori