Geek University Data Engineering
DWH
ETL
Data Vault
Anchor Modeling
MPP
Data Quality
Apache Airflow
Python
Docker
PostgreSQL
Jupyter Notebook
- Понятие хранилища данных.
- Виды представления моделей данных.
- Реляционные модели данных.
- Реляционная терминология.
- Нормализация данных
- Архитектура хранилища данных - слои
Задание
Привести таблицы к 3НФ, НФБК, 4НФ, 5НФ, 6НФ
Решение
Приведение к 3НФ
Приведение к НФБК
Приведение к 4НФ
Приведение к 5НФ
Приведение к 6НФ
- Хранилище по Кимбаллу
- Хранилище по Инмону
- Концепция Data Vault
- Концепция Anchor modeling
- MPP системы
- SE (Shared-Everything) - архитектура с разделяемыми памятью и дисками
- SD (Shared-Disks) - архитектура с разделяемыми дисками
- SN (Shared-Nothing) - архитектура без совместного использования ресурсов
- Teradata – это параллельная реляционная СУБД.
- Vertica - реляционная колончатая СУБД.
- ClickHouse — колоночная аналитическая СУБД
- Проектирование хранилища
- Data vault
- Anchor modeling
Задание
Спроектировать логические схемы Data Vault
и Anchor Modeling
на примере базы Northwind
.
Решение
- Исходная БД Northwind:
- Northwind в Data Vault:
- Northwind в Anchor Modeling:
- познакомились с понятием ETL
- узнали основные свойства и требования к ETL процессам
- научились разворачивать СУБД в докере
- познакимились с python DB-API
- потренировались писать ETL процесс с помощью psycopg2
Задание
- Развернуть всю архитектуру у себя
- Написать ETL процесс для загрузки всех таблиц из postgres-источника в postgres-приемник
Решение
- познакомились с Airflow
- написали базовый оператор ответственный за загрузку данных в хранилище
- написали оператор извлечения данных из Postgres
- написали даг ежедневного дампа таблицы в хранилище
- получили скелет ETL-системы
Задание
- Развернуть окружение
- Создать даг для дампа всех таблиц, использую операторы из урока
Решение
- Ход выполнения задания
- DAG
- Файл для поднятия окружения под Docker Compose
- Скриншот веб-интерфейса Airflow с успешно отработавшими тасками
- познакомились с понятием Data quality и метаданных
- узнали какие есть метрики и методы для оценки качества данных
- реализовали оператор для записи логов, сбора статистики и проверки загрузки данных
- модифицировали код базового оператора, теперь он пишет лог и делает проверку были ли загружены данные
Задание
- Написать оператор для сбора статистики в таблицу
statistic
. Метод записи изutils.py
:write_etl_statistic()
. - Создать отдельный даг с этим оператором. Перед сбором статистики должен быть
external_task_sensor
на успешное выполнение переливки данных. Документация по сенсору: https://airflow.apache.org/docs/apache-airflow/1.10.4/_api/airflow/sensors/external_task_sensor/index.html
Решение
- спроектировали схему хранилища
- реализовали операторы для разложения данных по слоям
- определили вид конфигурационного файла для описания модели данных
- написали даг с полным ETL-пайплайном
Задание
Реализовать ETL-систему для загрузки Data Vault
Решение