项目作者: bostspb
项目描述 :
GB: Построение хранилища данных и основы ETL
高级语言: Python
项目地址: git://github.com/bostspb/etl.git
GB: Построение хранилища данных и основы ETL
Geek University Data Engineering
DWH
ETL
Data Vault
Anchor Modeling
MPP
Data Quality
Apache Airflow
Python
Docker
PostgreSQL
Jupyter Notebook
Урок 1. Введение
- Понятие хранилища данных.
- Виды представления моделей данных.
- Реляционные модели данных.
- Реляционная терминология.
Урок 2. Архитектура хранилищ
- Нормализация данных
- Архитектура хранилища данных - слои
Задание
Привести таблицы к 3НФ, НФБК, 4НФ, 5НФ, 6НФ
Решение
Приведение к 3НФ
Приведение к НФБК
Приведение к 4НФ
Приведение к 5НФ
Приведение к 6НФ
Урок 3. Проектирование хранилища. Часть 1
- Хранилище по Кимбаллу
- Хранилище по Инмону
- Концепция Data Vault
- Концепция Anchor modeling
Урок 4. Проектирование хранилища. Часть 2
- 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:
Урок 5. Создание ETL процесса. Часть 1
- познакомились с понятием ETL
- узнали основные свойства и требования к ETL процессам
- научились разворачивать СУБД в докере
- познакимились с python DB-API
- потренировались писать ETL процесс с помощью psycopg2
Задание
1) Развернуть всю архитектуру у себя
2) Написать ETL процесс для загрузки всех таблиц из postgres-источника в postgres-приемник
Решение
Урок 6. Создание ETL процесса. Часть 2
- познакомились с Airflow
- написали базовый оператор ответственный за загрузку данных в хранилище
- написали оператор извлечения данных из Postgres
- написали даг ежедневного дампа таблицы в хранилище
- получили скелет ETL-системы
Задание
1) Развернуть окружение
2) Создать даг для дампа всех таблиц, использую операторы из урока
Решение
Урок 7. Управление качеством данных
- познакомились с понятием Data quality и метаданных
- узнали какие есть метрики и методы для оценки качества данных
- реализовали оператор для записи логов, сбора статистики и проверки загрузки данных
- модифицировали код базового оператора, теперь он пишет лог и делает проверку были ли загружены данные
Задание
1) Написать оператор для сбора статистики в таблицу statistic
. Метод записи из utils.py
: write_etl_statistic()
.
2) Создать отдельный даг с этим оператором. Перед сбором статистики должен быть external_task_sensor
на успешное выполнение переливки данных.
Документация по сенсору: https://airflow.apache.org/docs/apache-airflow/1.10.4/_api/airflow/sensors/external_task_sensor/index.html
Решение
Урок 8. Курсовой проект
- спроектировали схему хранилища
- реализовали операторы для разложения данных по слоям
- определили вид конфигурационного файла для описания модели данных
- написали даг с полным ETL-пайплайном
Задание
Реализовать ETL-систему для загрузки Data Vault
Решение