Skip to content

Instantly share code, notes, and snippets.

@LiprikON2
Last active November 19, 2023 15:17
Show Gist options
  • Save LiprikON2/c19c382bfbfaa3b2f814be2a1500f2c1 to your computer and use it in GitHub Desktop.
Save LiprikON2/c19c382bfbfaa3b2f814be2a1500f2c1 to your computer and use it in GitHub Desktop.

Практическая работа 3

Колаб лекции | Google Colab

airflow_workshop | GitHub

Термины

stg - staging area layer

dds - detailed data storage layer

cdm - common data mart (витрина общего назначения)

DAG - directed acyclic graph, набор задач

Задача

В целом, в лабе нужно пропустить данные через слои postgress используя airflow: stg -> dds -> cdm

  • Airflow и Postgres находятся в одном контейнере de-pg-cr-af-1
  • Есть 2 подхода
    • Kimball Data Warehouse
    • Inmon Data Warehouse

Airflow

В airflow нужно:

  • Обратить внимание на DAG -get_data - Code
    • В нем не реализован SCD, все данные перезаписываются, в рамках задания это нужно исправить
    • Добавить ключи логин, пароль для запросов на op.itmo.ru в Admin - Variables
      • {"username": "analytic", "password": "datatest"}
    • Пример добавление данных в слой postgress stg
  • Создать соединение с postgress в Admin - Connections
    • PG_WAREHOUSE_CONNECTION

Postgress

Предлагается использовать SQL клиент (DBeaver) чтобы взаимодействовать с postgress напрямую

  • В таком случае, для подключения используется jovyan:jovyan@localhost:15432/de
  • Схемы = Слои`
  • Внутри слоев, есть таблицы
  • В слое stg хранятся json'ы с текстом
  • В слое dds хранятся, уже преобразованное содержание stg json'ов
    • Релевантный DAG из Airflow: stg_to_dds
  • Сейчас в коде используется "промежуточный подход"
  • При подходе Kimbal'a
    • "Какие нам нужны таблицы в слое cdm?"
    • Проектируем таблицу в cdm, а затем строим остальное хранилище чтобы получить поля в таблице
  • При подходе Inmon'а
    • Начинаем со слоя dds
    • Сейчас в коде dds нет внешних ключей, "можно в рамках задания их добавить"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment