Урок 1Проектування дименсійної моделі для аналітики: мапінг facts та dimensionsДослідіть дименсійне моделювання для аналітики. Ви промапите бізнес-процеси на fact-таблиці, визначите dimensions та гранулярність, обробите many-to-many зв'язки та спроектуєте схеми для self-service BI та продуктивних запитів.
Визначення бізнес-процесів та factsВибір гранулярності fact-таблицьПроектування conformed dimensionsОбробка many-to-many зв'язківКомпроміси star vs snowflake схемУрок 2fact_user_activity: поля схеми (event_id, user_id, course_id, event_type, timestamp, duration, device, session_id, ingestion_metadata)Смоделюйте таблицю fact_user_activity для поведінкової аналітики. Визначимо кожне поле, оберемо гранулярність подій, захопимо сесії та пристрої, збережемо метадані інгесту для підтримки воронок, залученості та утримання.
Визначення гранулярності подійМоделювання event_type та таксономійАтрибуція сесій та пристроївВикористання полів ingestion_metadataПідтримка воронок та утриманняУрок 3Виготовлені метрики та агрегації: щоденні активні користувачі (DAU), активність за курсами, завершення курсів за країнами, дохід за курсами та когортамиНавчіться будувати виготовлені метрики та агрегації з fact-таблиць. Обчислюємо DAU, активність за курсами, рівні завершення та дохід когорт, наголошуючи на відтворюваних визначеннях та ефективних патернах матеріалізації.
Визначення DAU та MAU послідовноМетрики активних користувачів за курсамиРівень завершення за сегментамиДохід за курсами та когортамиМатеріалізація агрегацій у складахУрок 4Обробка повільних змін dimensions (SCD Type 1/2) та time-travel/версіонуванняНавчіться керувати повільними змінами dimensions та time-travel. Порівняємо SCD Type 1 та 2, спроектуємо діапазони дат, збережемо метадані версій та використаємо можливості складів для запитів історичних станів.
Коли використовувати SCD Type 1 vs 2Дати дії та прапорці поточностіРеалізація SCD у SQL та dbtВикористання time-travel у складахТестування коректності історичних dimensionsУрок 5Свіжість даних та стратегії віконування для near-real-time KPIСпроектуйте стратегії свіжості для near-real-time KPI. Розглянемо бюджети затримок, ватермаркінг, віконування для потокових метрик, обробку запізнілих даних та моніторинг свіжості для надійних дашбордів.
Визначення цілей свіжості та затримокВатермарки та обробка запізнілих данихВікна tumbling, sliding, sessionОбчислення near-real-time KPIМоніторинг та сповіщення свіжостіУрок 6Кроки очищення даних: парсинг, примус типів, нормалізація timestamp, дедублікація, збагаченняНавчіться систематично очищати сирі дані перед моделюванням. Розглянемо парсинг напівструктурованих полів, примус типів даних, нормалізацію timestamp за часовими поясами, дедублікацію записів та збагачення референсними даними.
Парсинг JSON, CSV, вкладених полівПримус типів та валідація схемНормалізація часових поясівСтратегії дедублікації записівДжойни референсних даних для збагаченняУрок 7dim_course: поля схеми (course_id, title, author_id, category, price, published_date)Спроектуйте dimension dim_course для аналітики курсів. Визначимо кожне поле, обговоримо сурогатні ключі, зміни цін та категорій, змоделюємо дати публікації для точної історичної та каталожної звітності.
Бізнес-значення полів dim_courseНатуральні vs сурогатні course_idОбробка змін цін та категорій курсівМоделювання опублікованих/неопублікованих станівІндексація dim_course для BI-запитівУрок 8dim_user: поля схеми (user_id, email_hash, signup_date, country, subscription_status, cohort)Спроектуйте dimension dim_user для аналітики користувачів та сегментації. Визначимо поля, захешуємо чутливі дані, відстежимо реєстрацію та когорти, змоделюємо статус підписки для звітності зростання, утримання та монетизації.
Ідентифікатори користувачів та сурогатні ключіХешування email та контроль приватностіМоделювання signup_date та когортЖиттєвий цикл subscription_statusКраїни та локалізаційні атрибутиУрок 9Патерни трансформацій: ELT vs ETL, інкрементні трансформації, batch vs streamЗрозумійте основні патерни трансформацій та коли їх застосовувати. Порівняємо ETL та ELT, спроектуємо інкрементні пайплайни, контрастуємо batch та stream трансформації з фокусом на витрати, затримки та операційні компроміси.
Порівняння архітектур ETL та ELTПроектування інкрементних трансформаційПереваги та недоліки batch обробкиПотокові та micro-batch патерниВибір патернів за SLA та витратамиУрок 10Інструменти трансформацій: dbt, Spark/Databricks, Beam/Flink, SQL-фреймворки трансформаційОгляньте ключові інструменти трансформацій та як вибирати між ними. Порівняємо dbt, Spark, Databricks, Beam, Flink та SQL-фреймворки з фокусом на масштабування, оркестрацію, тестування та інтеграцію з сучасними дата-стеками.
dbt для SQL-центричних трансформаційSpark та Databricks для великих данихBeam та Flink для потокових задачSQL-фреймворки трансформаційКритерії вибору інструментівУрок 11fact_payments: поля схеми (payment_id, user_id, course_id, amount, currency, payment_method, status, timestamp, invoice_id)Смоделюйте таблицю fact_payments для аналітики доходів. Визначимо поля, обговоримо ідемпотентний інгест, обробку валют, статус платежів, рефанди та зв'язок платежів з користувачами, курсами та інвойсами для звітності.
Гранулярність та первинний ключ fact_paymentsМоделювання статусу та життєвого циклу платежівОбробка багатовалютних сумЗв'язок платежів з користувачами та курсамиЗахоплення рефандів та чарджбеків