Сбор и структурирование данных о вакансиях HH.ru: от сырых ответов API до аналитических таблиц и слоя Raw Data Vault 2.0.
Проект загружает вакансии через публичное API HH.ru, сохраняет сырые данные в PostgreSQL (схема raw), строит широкую таблицу для аналитики и нормализованный слой Data Vault 2.0 (схема dv) с хабами, линками и спутниками. Оркестрация — Apache Airflow: отдельные DAG'и для инициализации БД, выгрузки из API и трансформации в DV.
Основные возможности:
- Загрузка справочника профессиональных ролей, вакансий по Москве/СПб и по поисковым запросам, деталей вакансий (GET /vacancies/{id}).
- Постобработка: разбор JSON деталей в широкую таблицу
raw.vacancy_details_wide. - Raw Data Vault 2.0: хабы (вакансия, регион, работодатель, навыки, роли и др.), линки (связи вакансии с сущностями), спутники (атрибуты и история по load_dt).
- Airflow — DAG'и загрузки и трансформации
- PostgreSQL — хранилище (схемы
raw,dv) - API HH.ru — источник данных
| Каталог / файл | Назначение |
|---|---|
airflow/dags/init_db/ |
DAG init_db: DDL схемы raw и таблиц; папка dv_2/ и DAG init_dv2: DDL схемы dv (хабы, линки, спутники) |
airflow/dags/ingestion/ |
DAG'и выгрузки: роли, вакансии (Москва, СПб, поиск), детали вакансий, постобработка wide |
airflow/dags/dv_transform/ |
DAG dv_transform: наполнение DV из raw.vacancy_details |
docs/ |
Документация по слоям и диаграмма потоков данных |
Подробное описание по слоям (DDL, выгрузка, проектирование DV, трансформация) и диаграмма таблиц — в папке docs:
- docs/README.md — оглавление документации и быстрый старт по слоям.
| Документ | Содержание |
|---|---|
| 01 — Обзор и стек | Цели, технологии, общий поток данных |
| 02 — Слой Raw: DDL | Схема raw, таблицы, DAG init_db |
| 03 — Слой загрузки (Ingestion) | DAG'и выгрузки из API |
| 04 — Проектирование Data Vault 2.0 | Хабы, линки, спутники, DAG init_dv2 |
| 05 — Трансформация в DV | Наполнение DV, DAG dv_transform |
| 06 — Диаграмма слоёв данных | Схема таблиц и потоков (Mermaid), как посмотреть |
- Развернуть Airflow и PostgreSQL (например,
airflow/docker-compose.yaml), настроить подключениеpg_conn. - Выполнить DAG'и инициализации: init_db → init_dv2 (создание схем и таблиц).
- Запустить загрузку: роли → вакансии → детали вакансий → постобработка vacancy_details_wide.
- Запустить dv_transform для наполнения Data Vault из
raw.vacancy_details.
Подробности — в docs/README.md.