Лабораторная: собрать DAG загрузки и восстановиться после сбоя #14

Open
opened 2026-09-22 16:36:04 +03:00 by ddmitry · 0 comments
Owner

Part of #8

Статус и учебный результат

Кандидат на завершающую работу расширенного обязательного цикла. Перед реализацией выбрать небольшой законченный участок и исходный опыт работы учащегося с Airflow.

Студент самостоятельно связывает уже проверенные загрузки и DQ в DAG, находит причину падения и завершает обработку с корректными данными. Он различает сбой одной транзакции и частично выполненную цепочку задач.

Место и самостоятельная часть

Учащийся уже реализовал выбранные SQL-загрузки и проверки. SQL служит входом, самостоятельная часть — задачи Airflow, Connections, параметры SQL и зависимости. В предыдущей серии #1 указан опыт упражнений на отдельном стенде Airflow; предусловия этой работы нужно назвать явно и дать короткие ссылки для необходимых действий UI.

Что предусмотреть

  1. Выбрать цепочку с несколькими задачами загрузки и DQ, которую можно пройти за одну работу. Указать, какие входные данные и SQL уже готовы; использовать принятые в репозитории SQL-операторы и Connections.
  2. Студент задает задачи и зависимости, обеспечивает выполнение проверки до зависимого потребителя, находит используемые параметры и журналы запуска.
  3. Провести успешный запуск на фиксированном входе и сохранить контрольный бизнес-результат.
  4. Автор готовит два воспроизводимых инцидента: сбой SQL-задачи после успешной предыдущей задачи и отказ DQ после зафиксированной загрузки. Хотя бы один инцидент выдается как подготовленное состояние и наблюдаемый симптом: студент получает критерий восстановления, а причину и способ исправления находит сам. Для самостоятельного прохождения дать доступный в main способ получить подготовленное состояние; описание внесенной поломки и разбор решения хранить в авторских материалах solution.
  5. Для каждого инцидента студент по логам, статусам задач и содержимому таблиц определяет, что завершилось, что откатилось и какие потребители остановлены. Затем объясняет причину, выбирает исправление и объем повторного выполнения, проверяет бизнес-результат. Падение отдельной DQ-задачи не откатывает предшествующую загрузку.
  6. Генератором управлять отдельно от повторов; новый учебный день не должен незаметно менять вход для проверки восстановления.

Критерии этой лабораторной

  • Самостоятельная часть включает создание задач и зависимостей; готовые SQL не приходится одновременно переписывать.
  • После штатного запуска данные совпадают с контрольным результатом.
  • Оба инцидента воспроизводимы. Хотя бы в одном ученическая инструкция содержит симптом и критерий восстановления, а причина и исправление раскрываются в авторском разборе.
  • Студент обосновывает причину и объем повторного выполнения наблюдениями из логов, статусов задач и данных.
  • После исправления и повторного выполнения результат совпадает с контрольным без дублей и пропусков; назван способ продолжения следующего запуска.
  • В постановке определены масштаб цепочки, ожидаемые навыки Airflow и место в программе.

Границы и результат работы автора

Подготовить задание для студента, необходимые заготовки/проверки и проверенный способ выполнения. Назвать входное состояние, самостоятельную часть, проверочные случаи и состояние для продолжения. Готовый стенд должен запускаться до лабораторной; выбранную часть разбирает уже студент во время задания. Стенд можно ломать и пересобирать, сохраняя файлы решения и понятный способ продолжения.

Материалы для автора и полное решение относятся к solution; инструкция для студента и необходимые общие средства — к main. Переносить изменения выборочно с учетом различий веток. При размещении задания обновить его место во входе в задания и связанные ссылки; существующие задания ODS, измерений и DM сохраняются.

Общая проверка готовности

  • Из описанного начального состояния выполнены все случаи задания на стенде; сохранены команды и наблюдаемые результаты.
  • Неверное решение обнаруживается предусмотренными проверками; восстановление и повторный запуск проверены там, где они входят в задание.
  • Инструкция на русском соответствует подготовке учащегося, различает готовые части и самостоятельные решения; результат позволяет продолжить маршрут.
  • Проверены ссылки и команды; git diff --check пройден. Для изменений Python/DAG выполнены make lint и make test, а пропуски тестов перечислены отдельно. Статические проверки не заменяют учебный прогон.

Сначала прочитать

Part of #8 ## Статус и учебный результат Кандидат на завершающую работу расширенного обязательного цикла. Перед реализацией выбрать небольшой законченный участок и исходный опыт работы учащегося с Airflow. Студент самостоятельно связывает уже проверенные загрузки и DQ в DAG, находит причину падения и завершает обработку с корректными данными. Он различает сбой одной транзакции и частично выполненную цепочку задач. ## Место и самостоятельная часть Учащийся уже реализовал выбранные SQL-загрузки и проверки. SQL служит входом, самостоятельная часть — задачи Airflow, Connections, параметры SQL и зависимости. В предыдущей серии #1 указан опыт упражнений на отдельном стенде Airflow; предусловия этой работы нужно назвать явно и дать короткие ссылки для необходимых действий UI. ## Что предусмотреть 1. Выбрать цепочку с несколькими задачами загрузки и DQ, которую можно пройти за одну работу. Указать, какие входные данные и SQL уже готовы; использовать принятые в репозитории SQL-операторы и Connections. 2. Студент задает задачи и зависимости, обеспечивает выполнение проверки до зависимого потребителя, находит используемые параметры и журналы запуска. 3. Провести успешный запуск на фиксированном входе и сохранить контрольный бизнес-результат. 4. Автор готовит два воспроизводимых инцидента: сбой SQL-задачи после успешной предыдущей задачи и отказ DQ после зафиксированной загрузки. Хотя бы один инцидент выдается как подготовленное состояние и наблюдаемый симптом: студент получает критерий восстановления, а причину и способ исправления находит сам. Для самостоятельного прохождения дать доступный в `main` способ получить подготовленное состояние; описание внесенной поломки и разбор решения хранить в авторских материалах `solution`. 5. Для каждого инцидента студент по логам, статусам задач и содержимому таблиц определяет, что завершилось, что откатилось и какие потребители остановлены. Затем объясняет причину, выбирает исправление и объем повторного выполнения, проверяет бизнес-результат. Падение отдельной DQ-задачи не откатывает предшествующую загрузку. 6. Генератором управлять отдельно от повторов; новый учебный день не должен незаметно менять вход для проверки восстановления. ## Критерии этой лабораторной - [ ] Самостоятельная часть включает создание задач и зависимостей; готовые SQL не приходится одновременно переписывать. - [ ] После штатного запуска данные совпадают с контрольным результатом. - [ ] Оба инцидента воспроизводимы. Хотя бы в одном ученическая инструкция содержит симптом и критерий восстановления, а причина и исправление раскрываются в авторском разборе. - [ ] Студент обосновывает причину и объем повторного выполнения наблюдениями из логов, статусов задач и данных. - [ ] После исправления и повторного выполнения результат совпадает с контрольным без дублей и пропусков; назван способ продолжения следующего запуска. - [ ] В постановке определены масштаб цепочки, ожидаемые навыки Airflow и место в программе. ## Границы и результат работы автора Подготовить задание для студента, необходимые заготовки/проверки и проверенный способ выполнения. Назвать входное состояние, самостоятельную часть, проверочные случаи и состояние для продолжения. Готовый стенд должен запускаться до лабораторной; выбранную часть разбирает уже студент во время задания. Стенд можно ломать и пересобирать, сохраняя файлы решения и понятный способ продолжения. Материалы для автора и полное решение относятся к `solution`; инструкция для студента и необходимые общие средства — к `main`. Переносить изменения выборочно с учетом различий веток. При размещении задания обновить его место во входе в задания и связанные ссылки; существующие задания ODS, измерений и DM сохраняются. ## Общая проверка готовности - [ ] Из описанного начального состояния выполнены все случаи задания на стенде; сохранены команды и наблюдаемые результаты. - [ ] Неверное решение обнаруживается предусмотренными проверками; восстановление и повторный запуск проверены там, где они входят в задание. - [ ] Инструкция на русском соответствует подготовке учащегося, различает готовые части и самостоятельные решения; результат позволяет продолжить маршрут. - [ ] Проверены ссылки и команды; `git diff --check` пройден. Для изменений Python/DAG выполнены `make lint` и `make test`, а пропуски тестов перечислены отдельно. Статические проверки не заменяют учебный прогон. ## Сначала прочитать - Задачу серии #8 и [авторскую заметку](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/solution/docs/design/labs_development.md). - [STG-DAG](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/airflow/dags/bookings_to_gp_stage.py) - [ODS-DAG](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/airflow/dags/bookings_to_gp_ods.py) - [DDS-DAG](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/airflow/dags/bookings_to_gp_dds.py) - [Порядок запусков](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/docs/dag_execution_order.md) - [Connections](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/docs/stack.md)
ddmitry added the needs-triage label 2026-09-22 16:36:04 +03:00
Sign in to join this conversation.