Урок 1Проектирование дименсиональной модели для аналитики: сопоставление фактов и размерностейИзучите дименсиональное моделирование для аналитики. Вы сопоставите бизнес-процессы с таблицами фактов, определите размерности и зернистость, обработаете отношения многие-ко-многим и спроектируете схемы для self-service BI и производительных запросов.
Identifying business processes and factsChoosing the grain of fact tablesDesigning conformed dimensionsHandling many-to-many relationshipsStar vs snowflake schema trade-offsУрок 2fact_user_activity: поля схемы (event_id, user_id, course_id, event_type, timestamp, duration, device, session_id, ingestion_metadata)Смоделируйте таблицу fact_user_activity для поведенческой аналитики. Мы определим каждое поле, выберем зернистость событий, захватим сессии и устройства, сохраним метаданные загрузки и поддержим воронки, вовлеченность и удержание.
Defining the event-level grainModeling event_type and taxonomiesSession and device attributionUsing ingestion_metadata fieldsSupporting funnels and retentionУрок 3Производные метрики и агрегации: ежедневно активные пользователи (DAU), активные пользователи по курсам, коэффициент завершения курсов по странам, доход по курсам и когортамНаучитесь строить производные метрики и агрегации из таблиц фактов. Мы вычислим DAU, активность по курсам, коэффициенты завершения и доход по когортам, подчеркивая воспроизводимые определения и эффективные шаблоны материализации.
Defining DAU and MAU consistentlyActive users per course metricsCompletion rate by segment and countryRevenue by course and cohortMaterializing aggregates in warehousesУрок 4Обработка медленно меняющихся размерностей (SCD Type 1/2) и time-travel/версионированиеНаучитесь управлять медленно меняющимися размерностями и time-travel. Мы сравним SCD Type 1 и Type 2, спроектируем диапазоны дат действия, сохраним метаданные версий и используем возможности хранилищ для запросов исторических состояний.
When to use SCD Type 1 vs Type 2Effective dates and current flagsImplementing SCD in SQL and dbtUsing warehouse time-travel featuresTesting historical dimension correctnessУрок 5Свежесть данных и стратегии оконности для KPI почти реального времениСпроектируйте стратегии свежести для KPI почти реального времени. Мы охватим бюджеты задержек, водяные знаки, оконность для стриминговых метрик, обработку опоздавших данных и мониторинг свежести для надежных дашбордов.
Defining freshness and latency targetsWatermarks and late data handlingTumbling, sliding, and session windowsNear-real-time KPI computationMonitoring and alerting on freshnessУрок 6Шаги очистки данных: парсинг, принуждение типов, нормализация временных меток, дедупликация, обогащениеНаучитесь систематически очищать сырые данные перед моделированием. Мы охватим парсинг полуструктурированных полей, принуждение типов данных, нормализацию временных меток по часовым поясам, дедупликацию записей и обогащение референсными данными.
Parsing JSON, CSV, and nested fieldsType coercion and schema validationTimezone normalization and standardsRecord deduplication strategiesReference data joins for enrichmentУрок 7dim_course: поля схемы (course_id, title, author_id, category, price, published_date)Спроектируйте размерность dim_course для аналитики курсов. Мы определим каждое поле, обсудим замещающие ключи, изменения цен и категорий, моделирование дат публикации для точной исторической и каталожной отчетности.
Business meaning of each dim_course fieldNatural keys vs surrogate course_idHandling course price and category changesModeling published and unpublished statesIndexing dim_course for BI queriesУрок 8dim_user: поля схемы (user_id, email_hash, signup_date, country, subscription_status, cohort)Спроектируйте размерность dim_user для аналитики пользователей и сегментации. Мы определим каждое поле, захэшируем чувствительные данные, отследим регистрацию и когорты, моделируем статус подписки для отчетов по росту, удержанию и монетизации.
User identifiers and surrogate keysEmail hashing and privacy controlsModeling signup_date and cohortsSubscription_status lifecycleCountry and localization attributesУрок 9Шаблоны трансформаций: ELT против ETL, инкрементальные трансформации, пакетные против стриминговыхПоймите основные шаблоны трансформаций и когда их применять. Мы сравним ETL и ELT, спроектируем инкрементальные конвейеры и сравним пакетные и стриминговые трансформации, фокусируясь на затратах, задержках, наблюдаемости и компромиссах.
Comparing ETL and ELT architecturesDesigning incremental transformationsBatch processing pros and consStreaming and micro-batch patternsChoosing patterns by SLA and costУрок 10Инструменты для трансформаций: dbt, Spark/Databricks, Beam/Flink, SQL-фреймворки трансформацийОбзор ключевых инструментов трансформаций и выбора между ними. Мы сравним dbt, Spark, Databricks, Beam, Flink и SQL-фреймворки, фокусируясь на масштабируемости, оркестрации, тестировании и интеграции с современными стеками данных.
dbt for SQL-centric transformationsSpark and Databricks for big dataBeam and Flink for streaming jobsSQL-based transformation frameworksTool selection criteria and trade-offsУрок 11fact_payments: поля схемы (payment_id, user_id, course_id, amount, currency, payment_method, status, timestamp, invoice_id)Смоделируйте таблицу fact_payments для аналитики доходов. Мы определим каждое поле, обсудим идемпотентную загрузку, обработку валют, статусы платежей, возвраты и связь платежей с пользователями, курсами и счетами для отчетности.
Grain and primary key of fact_paymentsModeling payment status and lifecycleHandling multi-currency amountsLinking payments to users and coursesCapturing refunds and chargebacks