Les 1Ontwerp dimensionaal model voor analytics: facts en dimensions mappingVerken dimensionale modellering voor analytics. Je mapped business-processen naar fact-tabellen, definieert dimensies en granulariteit, beheert many-to-many relaties en ontwerpt schemas die self-service BI en performante queries ondersteunen.
Identificeren van business-processen en factsKiezen van granulariteit voor fact-tabellenOntwerp van conformed dimensiesBehandeling van many-to-many relatiesStar vs snowflake schema afwegingenLes 2fact_user_activity: schema-velden (event_id, user_id, course_id, event_type, timestamp, duration, device, session_id, ingestion_metadata)Modelleer de fact_user_activity-tabel voor gedragsanalytics. We definiëren elk veld, kiezen event-granulariteit, vangen sessies en devices op, slaan ingestion-metadata op en ondersteunen funnels, engagement en retentie-rapportage.
Definiëren van event-level granulariteitModellering event_type en taxonomieënSession- en device-attributieGebruik van ingestion_metadata-veldenOndersteuning funnels en retentieLes 3Afgeleide metrics en aggregaties: dagelijkse actieve gebruikers (DAU), actieve gebruikers per cursus, cursusvoltooiingspercentage per land, omzet per cursus en cohortLeer afgeleide metrics en aggregaties bouwen vanuit fact-tabellen. We berekenen DAU, per-cursus activiteit, voltooiingspercentages en cohort-omzet, met nadruk op reproduceerbare definities en efficiënte materialisatiepatronen.
Definiëren DAU en MAU consistentActieve gebruikers per cursus metricsVoltooiingspercentage per segment en landOmzet per cursus en cohortMaterialiseren van aggregates in warehousesLes 4Behandeling langzaam veranderende dimensies (SCD Type 1/2) en time-travel/versioningLeer langzaam veranderende dimensies en time-travel beheren. We vergelijken SCD Type 1 en Type 2, ontwerpen effectieve datumreeksen, slaan versie-metadata op en gebruiken warehouse-features om historische dimensie-statussen te queryen.
Wanneer SCD Type 1 vs Type 2 gebruikenEffectieve data en current flagsImplementeren SCD in SQL en dbtGebruik warehouse time-travel featuresTesten historische dimensie correctheidLes 5Data-versheid en windowing-strategieën voor near-real-time KPI'sOntwerp versheidsstrategieën voor near-real-time KPI's. We behandelen latency-begrotingen, watermarking, windowing voor streaming-metrics, late data afhandeling en monitoring van versheid om dashboards betrouwbaar en actiegericht te houden.
Definiëren versheid en latency-doelenWatermarks en late data afhandelingTumbling, sliding en session windowsNear-real-time KPI-berekeningMonitoring en alerting op versheidLes 6Data-reinigingsstappen: parsing, type-coercion, timestamp-normalisatie, deduplicatie, verrijkingLeer systematisch raw data reinigen voor modellering. We behandelen parsing van semi-gestructureerde velden, afdwingen data-types, normaliseren timestamps over tijdzones, dedupliceren records en verrijken datasets met referentie- en lookup-data.
Parsing JSON, CSV en geneste veldenType-coercion en schema-validatieTijdzone-normalisatie en standaardenRecord-deduplicatie strategieënReferentie-data joins voor verrijkingLes 7dim_course: schema-velden (course_id, title, author_id, category, price, published_date)Ontwerp de dim_course-dimensie voor cursus-analytics. We definiëren elk veld, bespreken surrogate keys, beheren prijs- en categorie-veranderingen en modelleren publicatiedata voor nauwkeurige historische en catalogus-rapportage.
Business betekenis van elk dim_course veldNatural keys vs surrogate course_idBehandeling cursusprijs en categorie veranderingenModellering gepubliceerd en onuitgegeven statesIndexering dim_course voor BI-queriesLes 8dim_user: schema-velden (user_id, email_hash, signup_date, country, subscription_status, cohort)Ontwerp de dim_user-dimensie voor gebruiker-analytics en segmentatie. We definiëren elk veld, hashen gevoelige data, tracken aanmelding en cohorts, en modelleren subscription-status voor groei-, retentie- en monetisatie-rapportage.
Gebruiker-identifiers en surrogate keysEmail-hashing en privacy-controlsModellering signup_date en cohortsSubscription_status lifecycleLand en lokalisatie-attributenLes 9Transformatiepatronen: ELT vs ETL, incrementele transformaties, batch vs stream transformsBegrijp kern transformatiepatronen en wanneer je ze toepast. We vergelijken ETL en ELT, ontwerpen incrementele pipelines en contrasteren batch- en streaming-transforms, met focus op kosten, latency, observeerbaarheid en operationele afwegingen.
Vergelijken ETL en ELT architecturenOntwerp incrementele transformatiesBatch processing voor- en nadelenStreaming en micro-batch patronenPatronen kiezen op SLA en kostenLes 10Tools voor transformaties: dbt, Spark/Databricks, Beam/Flink, SQL-gebaseerde transformatie-frameworksOverzicht van sleutel transformatietools en hoe je tussen ze kiest. We vergelijken dbt, Spark, Databricks, Beam, Flink en SQL-frameworks, met focus op schaalbaarheid, orkestratie, testen en integratie met moderne data stacks.
dbt voor SQL-centrische transformatiesSpark en Databricks voor big dataBeam en Flink voor streaming jobsSQL-gebaseerde transformatie-frameworksTool-selectie criteria en afwegingenLes 11fact_payments: schema-velden (payment_id, user_id, course_id, amount, currency, payment_method, status, timestamp, invoice_id)Modelleer de fact_payments-tabel voor omzet-analytics. We definiëren elk veld, bespreken idempotente ingestion, valuta-afhandeling, betalingsstatus, refunds en hoe betalingen linken aan gebruikers, cursussen en facturen voor downstream rapportage.
Granulariteit en primary key van fact_paymentsModellering betalingsstatus en lifecycleBehandeling multi-valuta bedragenLinken betalingen aan gebruikers en cursussenVangen refunds en chargebacks