Project Osmos is vooral nuttig wanneer het gewenste resultaat duidelijk is, maar de route van brontabellen naar een betrouwbaar analytisch model nog engineering-keuzes vraagt. In deze walkthrough zet Osmos synthetische AdventureWorksLT-achtige salesdata uit SalesLake om naar een nieuw Gold-model in SalesAnalyticsOsmos, zonder de bron te wijzigen.
Dit is geen diagramoefening. De task leverde blijvende Delta-tabellen, een gepubliceerd notebook, validatiebewijs en een reconciliatieresultaat op dat een inconsistentie in de brondata zichtbaar maakte.
De waardeketen
SalesLake (read-only bron)
|
v
Project Osmos: profileren, modelleren, stagen, promoveren
|
v
SalesAnalyticsOsmos / SalesOsmos
|
v
Gold star schema + validatienotebook
|
v
Power BI, Fabric IQ, agents en downstream analytics
De destination-workspace heet bewust SalesAnalyticsOsmos en het lakehouse SalesOsmos. De data is synthetisch, dus namen, aantallen, tabellen en voorbeeldwaarden kunnen gewoon worden getoond.
1. Begin met een read-only bron
Het bron-lakehouse bevat AdventureWorksLT-achtige tabellen voor klanten, producten, categorieën, adressen, orders en orderregels. De bron blijft een immutable boundary: Osmos leest hem, maar schrijft alleen naar de destination.

Het voltooide notebook staat gepubliceerd in de map Project Osmos van de destination-workspace.
2. Laat Osmos een bruikbare Gold-vorm maken
Het uiteindelijke model scheidt dimensies, een bridge en twee fact-grains:
| Gebied | Tabellen |
|---|---|
| Dimensies | gold_dim_customer, gold_dim_product, gold_dim_product_category, gold_dim_address, gold_dim_date |
| Bridge | gold_bridge_customer_address |
| Facts | gold_fact_sales, gold_fact_sales_order |
Dat onderscheid is belangrijk. Line-level sales en order-level header totals hebben een verschillende grain. Als je ze in één tabel stopt, kunnen header-subtotalen eenvoudig dubbel worden geteld.

Het notebook is meer dan een code-dump. Het beschrijft het modelcontract, de validatie-uitvoer en de reconciliatielogica, zodat een andere engineer het resultaat kan inspecteren of opnieuw uitvoeren.
3. Valideer voordat je het model vertrouwt
De afgeronde run rapporteerde:
- 630 geslaagde build checks;
- 0 dubbele primary keys;
- 0 nulls in verplichte sleutels of measures;
- 0 orphan rows over 21 relaties;
- 0 ontbrekende of onverwacht behouden bronrecords;
- 13 aaneengesloten datums van 1 tot en met 13 juni 2025;
- 2.637 eenmalig geschreven rijen;
- 8 staging creates en 8 native renames;
- geen achtergebleven staging-tabellen of -paden;
- de Delta-tabellen van de bron bleven op version 0.
Hier verandert “de tabellen zijn zichtbaar” in “het model is onderbouwd.”
4. Reconciliatie vond een brondata-probleem
De Gold line fact berekent:
Bruto line sales 714.002,9136
Line discounts 5.312,760542
Berekende line net 708.690,153058
De source order headers rapporteren een subtotal van 865433.1171, een verschil van 156742.96404200. Alle 32 van de 32 orders wijken af.
Het verschil komt niet door ontbrekende joins, dubbele rijen of afronding. Het geobserveerde header-patroon past bij category-based list-price factors na korting en afronding:
| Categorie | Geobserveerde factor |
|---|---|
| Bikes | 72% |
| Components | 74% |
| Clothing | 65% |
| Accessories | 60% |
De bron documenteert het historische prijsbeleid niet. Daarom laat het notebook beide measures zien en beschrijft het de verklaring als evidence-based, niet als bewezen historie. Dat is veiliger dan stilletjes één getal overschrijven.
5. Wat doe je als een task lang blijft draaien?
Osmos bleef langer dan verwacht hangen in discovery en onderzoek naar promotion-semantics. Dat betekende niet automatisch capacity throttling: er waren geen 429-responses, quota-fouten of steeds langer wordende retry-intervallen.
De praktische aanpak was:
- Bekijk progress messages, niet alleen de numerieke statuscode.
- Bepaal of de task nog nuttige voortgang maakt of discovery herhaalt.
- Refresh authenticatie wanneer de follow-up-token verlopen is.
- Stuur een gerichte follow-up naar dezelfde task: stop verder onderzoek, gebruik het gevalideerde staging-create/native-rename-pad, schrijf de Gold-tabellen, publiceer het notebook en valideer.
- Maak nooit een vervangende task alleen omdat de eerste traag is.
- Controleer na afloop de persistente tabellen, notebook-publicatie, aantallen en validatie-uitvoer.
Het belangrijkste control pattern is niet “annuleren en opnieuw starten”. Het is “de task-identiteit behouden, de instructie aanscherpen en het resultaat verifiëren.”
Wat downstream-gebruikers hieraan hebben
De output is klaar voor downstream analytics en agent experiences:
- dimensies leveren stabiele business-entiteiten;
- line- en order-facts bewaren hun grain;
- de date dimension ondersteunt tijdanalyse;
- de bridge bewaart klant-adresrelaties;
- validatie maakt het model uitlegbaar;
- de reconciliatie voorkomt één misleidende KPI.
Project Osmos neemt het oordeel niet weg. Het maakt het engineeringwerk inspecteerbaar, reproduceerbaar en beter bijstuurbaar.
Reacties laden…