Pelajaran 1Mendesain model dimensi untuk analitik: pemetaan fakta dan dimensiJelajahi pemodelan dimensi untuk analitik. Anda akan memetakan proses bisnis ke tabel fakta, mendefinisikan dimensi dan grain, menangani hubungan many-to-many, dan mendesain skema yang mendukung BI self-service dan query berperforma.
Mengidentifikasi proses bisnis dan faktaMemilih grain tabel faktaMendesain dimensi konformMenangani hubungan many-to-manyTradeoff skema star vs snowflakePelajaran 2fact_user_activity: kolom skema (event_id, user_id, course_id, event_type, timestamp, duration, device, session_id, ingestion_metadata)Model tabel fact_user_activity untuk analitik perilaku. Kami mendefinisikan setiap kolom, memilih grain event, menangkap sesi dan perangkat, menyimpan metadata ingest, dan mendukung laporan funnel, engagement, dan retensi.
Mendefinisikan grain tingkat eventMemodelkan event_type dan taksonomiAtribusi sesi dan perangkatMenggunakan kolom ingestion_metadataMendukung funnel dan retensiPelajaran 3Metrik turunan dan agregasi: pengguna aktif harian (DAU), pengguna aktif per kursus, tingkat penyelesaian kursus berdasarkan negara, pendapatan per kursus dan kohortPelajari membangun metrik turunan dan agregasi dari tabel fakta. Kami menghitung DAU, aktivitas per kursus, tingkat penyelesaian, dan pendapatan kohort, dengan penekanan pada definisi yang dapat direproduksi dan pola materialisasi efisien.
Mendefinisikan DAU dan MAU secara konsistenMetrik pengguna aktif per kursusTingkat penyelesaian berdasarkan segmen dan negaraPendapatan per kursus dan kohortMematerialisasikan agregat di gudangPelajaran 4Menangani dimensi berubah lambat (SCD Type 1/2) dan time-travel/versioningPelajari mengelola dimensi berubah lambat dan time-travel. Kami membandingkan SCD Type 1 dan Type 2, mendesain rentang tanggal efektif, menyimpan metadata versi, dan menggunakan fitur gudang untuk query status dimensi historis.
Kapan menggunakan SCD Type 1 vs Type 2Tanggal efektif dan flag saat iniMengimplementasikan SCD di SQL dan dbtMenggunakan fitur time-travel gudangMenguji kebenaran dimensi historisPelajaran 5Strategi kesegaran data dan windowing untuk KPI near-real-timeDesain strategi kesegaran untuk KPI near-real-time. Kami membahas anggaran latensi, watermarking, windowing untuk metrik streaming, penanganan data terlambat, dan pemantauan kesegaran agar dashboard tetap andal dan actionable.
Mendefinisikan target kesegaran dan latensiWatermark dan penanganan data terlambatJendela tumbling, sliding, dan sesiKomputasi KPI near-real-timePemantauan dan peringatan kesegaranPelajaran 6Langkah pembersihan data: parsing, paksa tipe, normalisasi timestamp, deduplikasi, pengayaanPelajari membersihkan data mentah secara sistematis sebelum pemodelan. Kami membahas parsing kolom semi-terstruktur, memaksakan tipe data, menormalkan timestamp lintas zona waktu, mendeduplikasi rekaman, dan memperkaya dataset dengan data referensi dan lookup.
Parsing JSON, CSV, dan kolom bersarangPaksa tipe dan validasi skemaNormalisasi zona waktu dan standarStrategi deduplikasi rekamanJoin data referensi untuk pengayaanPelajaran 7dim_course: kolom skema (course_id, title, author_id, category, price, published_date)Desain dimensi dim_course untuk mendukung analitik kursus. Kami mendefinisikan setiap kolom, membahas kunci surrogat, menangani perubahan harga dan kategori, dan memodelkan tanggal publikasi untuk laporan historis dan katalog yang akurat.
Makna bisnis setiap kolom dim_courseKunci natural vs surrogat course_idMenangani perubahan harga dan kategori kursusMemodelkan status diterbitkan dan tidakIndeks dim_course untuk query BIPelajaran 8dim_user: kolom skema (user_id, email_hash, signup_date, country, subscription_status, cohort)Desain dimensi dim_user untuk analitik dan segmentasi pengguna. Kami mendefinisikan setiap kolom, hash data sensitif, melacak pendaftaran dan kohort, serta memodelkan status langganan untuk mendukung laporan pertumbuhan, retensi, dan monetisasi.
Identifikasi pengguna dan kunci surrogatHashing email dan kontrol privasiMemodelkan signup_date dan kohortSiklus hidup subscription_statusAtribut negara dan lokalisasiPelajaran 9Pola transformasi: ELT vs ETL, transformasi inkremental, transform batch vs streamPahami pola transformasi inti dan kapan menerapkannya. Kami membandingkan ETL dan ELT, mendesain pipeline inkremental, dan membandingkan transform batch dan streaming, dengan fokus pada biaya, latensi, observabilitas, dan tradeoff operasional.
Membandingkan arsitektur ETL dan ELTMendesain transformasi inkrementalPro dan kontra pemrosesan batchPola streaming dan micro-batchMemilih pola berdasarkan SLA dan biayaPelajaran 10Alat untuk transformasi: dbt, Spark/Databricks, Beam/Flink, framework transformasi berbasis SQLSurvei alat transformasi kunci dan cara memilih di antaranya. Kami membandingkan dbt, Spark, Databricks, Beam, Flink, dan framework SQL, dengan fokus pada skalabilitas, orkestrasi, pengujian, dan integrasi dengan tumpukan data modern.
dbt untuk transformasi berbasis SQLSpark dan Databricks untuk big dataBeam dan Flink untuk job streamingFramework transformasi berbasis SQLKriteria pemilihan alat dan tradeoffPelajaran 11fact_payments: kolom skema (payment_id, user_id, course_id, amount, currency, payment_method, status, timestamp, invoice_id)Model tabel fact_payments untuk analitik pendapatan. Kami mendefinisikan setiap kolom, membahas ingest idempoten, penanganan mata uang, status pembayaran, pengembalian dana, dan cara menghubungkan pembayaran ke pengguna, kursus, dan invoice untuk laporan hilir.
Grain dan kunci primer fact_paymentsMemodelkan status dan siklus hidup pembayaranMenangani jumlah multi-mata uangMenghubungkan pembayaran ke pengguna dan kursusMenangkap pengembalian dana dan chargeback