Aralin 1Pagdidisenyo ng dimensional model para sa analytics: facts at dimensions mappingGalugarin ang dimensional modeling para sa analytics. I-map mo ang mga proseso ng negosyo sa fact tables, i-define ang dimensions at grain, hawakan ang many-to-many relationships, at magdidisenyo ng mga schema na sumusuporta sa self-service BI at performant queries.
Pagkilala ng mga proseso ng negosyo at factsPagpili ng grain ng fact tablesPagdidisenyo ng conformed dimensionsPaghawak ng many-to-many relationshipsMga trade-off ng star vs snowflake schemaAralin 2fact_user_activity: mga field ng schema (event_id, user_id, course_id, event_type, timestamp, duration, device, session_id, ingestion_metadata)Magmumumula ng fact_user_activity table para sa behavioral analytics. Ite-definahan natin ang bawat field, pumili ng event grain, i-capture ang sessions at devices, i-store ang ingestion metadata, at suportahan ang funnels, engagement, at retention reporting.
Pagdefina ng event-level grainPagmumumula ng event_type at taxonomiesSession at device attributionPaggamit ng mga field ng ingestion_metadataSuporta sa funnels at retentionAralin 3Mga derived metrics at aggregations: daily active users (DAU), active users bawat kurso, completion rate bawat bansa, revenue bawat kurso at cohortMatututunan na bumuo ng derived metrics at aggregations mula sa fact tables. Kinakalkula natin ang DAU, per-course activity, completion rates, at cohort revenue, na nagbibigay-diin sa reproducible definitions at efficient materialization patterns.
Pagdefina ng DAU at MAU nang konsistentMga metrics ng active users bawat kursoCompletion rate bawat segment at bansaRevenue bawat kurso at cohortPag-materialize ng aggregates sa warehousesAralin 4Paghawak ng slowly changing dimensions (SCD Type 1/2) at time-travel/versioningMatututunan kung paano pamahalaan ang slowly changing dimensions at time-travel. Ihalintulad natin ang SCD Type 1 at Type 2, magdidisenyo ng effective date ranges, i-store ang version metadata, at gumamit ng warehouse features upang i-query ang historical dimension states.
Kailan gagamitin ang SCD Type 1 vs Type 2Effective dates at current flagsPag-implement ng SCD sa SQL at dbtPaggamit ng warehouse time-travel featuresPag-test ng katumpakan ng historical dimensionAralin 5Data freshness at mga estratehiya sa windowing para sa near-real-time KPIsMagdidisenyo ng mga estratehiya sa freshness para sa near-real-time KPIs. Tatakpan natin ang latency budgets, watermarking, windowing para sa streaming metrics, paghawak ng late-arriving data, at pagsubaybay sa freshness upang panatilihin ang reliability at actionability ng mga dashboard.
Pagdefina ng mga target sa freshness at latencyWatermarks at paghawak ng late dataTumbling, sliding, at session windowsNear-real-time KPI computationPagsubaybay at alerting sa freshnessAralin 6Mga hakbang sa paglilinis ng data: parsing, type coercion, timestamp normalization, deduplication, enrichmentMatututunan kung paano sistematikong linisin ang raw data bago ang pagmumumula. Tatakpan natin ang parsing ng semi-structured fields, pagpapatupad ng data types, normalization ng timestamps sa iba't ibang time zones, deduplication ng records, at enrichment ng datasets gamit ang reference at lookup data.
Parsing ng JSON, CSV, at nested fieldsType coercion at schema validationTimezone normalization at standardsMga estratehiya sa deduplication ng recordReference data joins para sa enrichmentAralin 7dim_course: mga field ng schema (course_id, title, author_id, category, price, published_date)Magdidisenyo ng dim_course dimension upang suportahan ang course analytics. Ite-definahan natin ang bawat field, talakayin ang surrogate keys, hawakan ang pricing at category changes, at magmumumula ng publication dates upang payagan ang accurate historical at catalog reporting.
Business meaning ng bawat field ng dim_courseNatural keys vs surrogate course_idPaghawak ng course price at category changesPagmumumula ng published at unpublished statesPag-index ng dim_course para sa BI queriesAralin 8dim_user: mga field ng schema (user_id, email_hash, signup_date, country, subscription_status, cohort)Magdidisenyo ng dim_user dimension para sa user analytics at segmentation. Ite-definahan natin ang bawat field, hash ang sensitibong data, subaybayan ang signup at cohorts, at magmumumula ng subscription status upang suportahan ang growth, retention, at monetization reporting.
Mga tagapagkakilanlan ng user at surrogate keysEmail hashing at privacy controlsPagmumumula ng signup_date at cohortsLifecycle ng subscription_statusMga attribute ng bansa at localizationAralin 9Mga pattern ng transformasyon: ELT vs ETL, incremental transformations, batch vs stream transformsUnawain ang mga pangunahing pattern ng transformasyon at kailan ilalapat ang mga ito. Ihalintulad natin ang ETL at ELT, magdidisenyo ng incremental pipelines, at ihahambing ang batch at streaming transforms, na nakatuon sa cost, latency, observability, at operational trade-offs.
Paghahambing ng ETL at ELT architecturesPagdidisenyo ng incremental transformationsMga pros at cons ng batch processingStreaming at micro-batch patternsPagpili ng patterns ayon sa SLA at costAralin 10Mga tool para sa transformasyon: dbt, Spark/Databricks, Beam/Flink, SQL-based transformation frameworksSuriin ang mga key transformation tools at kung paano pumili sa pagitan ng mga ito. Ihalintulad natin ang dbt, Spark, Databricks, Beam, Flink, at SQL frameworks, na nakatuon sa scalability, orchestration, testing, at integration sa modern data stacks.
dbt para sa SQL-centric transformationsSpark at Databricks para sa big dataBeam at Flink para sa streaming jobsSQL-based transformation frameworksMga kriterio sa pagpili ng tool at trade-offsAralin 11fact_payments: mga field ng schema (payment_id, user_id, course_id, amount, currency, payment_method, status, timestamp, invoice_id)Magmumumula ng fact_payments table para sa revenue analytics. Ite-definahan natin ang bawat field, talakayin ang idempotent ingestion, currency handling, payment status, refunds, at kung paano i-link ang payments sa users, courses, at invoices para sa downstream reporting.
Grain at primary key ng fact_paymentsPagmumumula ng payment status at lifecyclePaghawak ng multi-currency amountsPag-link ng payments sa users at coursesPag-capture ng refunds at chargebacks