SQL Dojo Beta
Modellierung

Staging, Intermediate, Marts

Jede Definition lebt in einer Schicht: Namen und Typen im Staging, gemeinsame Logik in Intermediate-Modellen, Geschäftsentitäten in Marts.

Staging: ein Modell pro Quelltabelle, umbenannt (<entity>_id, überall derselbe Name), typisiert, konvertiert; keine Joins. Nur das Staging liest die Quellen. Intermediate: Joins, Änderung der Granularität, Logik, die mehrere Marts teilen, einmal geschrieben. Marts: Entitäten und Ereignisse mit klarer Granularität, eine pro Konzept, von allen Teams geteilt, mit einem Vertrag, wenn andere von ihnen abhängen.

-- 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
In Randori ausprobieren