Кандидат на расширение обязательного цикла; перед реализацией оценить объем и место в маршруте.
Студент собирает текущее типизированное состояние ODS из накопленных пачек STG: вставляет новые ключи, применяет изменения существующих и сохраняет происхождение данных. Он может проверить обработку дельты независимо от способа доставки источника.
Место и самостоятельная часть
Предпосылки для учащегося — существующие задания на снимки ODS и лабораторная по инкременту STG. Кандидат — bookings. Даны DDL и способ запуска; студент пишет преобразования, выбор версий и обновление ODS, затем собственные проверки результата.
Что предусмотреть
Подготовить пачки STG с новыми ключами, несколькими версиями одного ключа и новой версией старого бронирования. Времена и порядок пачек должны однозначно определять ожидаемую версию; проверить несколько поступивших батчей перед одним запуском ODS.
Новую версию старой записи подать прямо в STG. Текущий прием источника по book_date ее автоматически не захватывает; успешный опыт ODS не является доказательством доставки такого исправления из Postgres.
Реализовать типизацию, дедупликацию дельты и применение изменений. Зафиксировать метки по договору эталона: новые и измененные строки получают _load_id и _load_ts выбранной версии STG; если book_date, total_amount и event_ts не изменились, строка ODS сохраняет прежние метки.
Развести два опыта. Для пустой дельты подготовить запуск, после которого MAX(_load_ts) ODS достиг максимума подготовленного STG, и повторить без новых данных. Затем подать отдельную пачку с более поздней _load_ts, но прежними бизнес-полями и event_ts. Она попадает в дельту, однако не меняет ODS и его границу загрузки; при повторе может читаться снова. Отсутствие изменений результата само по себе не означает пустую дельту.
Сверить ожидаемое состояние всех затронутых ключей, бизнес-поля и технические метки в каждом опыте. Испытать собственную проверку на известном неверном значении или пропущенном ключе и восстановить корректный результат.
Критерии этой лабораторной
Входные пачки и ожидаемые версии воспроизводимы; различены event_ts и _load_ts.
Новые ключи вставляются, изменения применяются, дублей нет; бизнес-поля и метки новых, измененных и неизмененных строк соответствуют заданному договору.
Несколько накопленных батчей обработаны одним запуском. Отдельно проверены пустая дельта и непустая дельта без изменений ODS, включая их повтор.
Собственная DQ-проверка обнаруживает внесенную ошибку и проходит после исправления.
После опыта ODS приведен в состояние, пригодное для следующих заданий DDS.
Границы и результат работы автора
Подготовить задание для студента, необходимые заготовки/проверки и проверенный способ выполнения. Назвать входное состояние, самостоятельную часть, проверочные случаи и состояние для продолжения. Готовый стенд должен запускаться до лабораторной; выбранную часть разбирает уже студент во время задания. Стенд можно ломать и пересобирать, сохраняя файлы решения и понятный способ продолжения.
Материалы для автора и полное решение относятся к solution; инструкция для студента и необходимые общие средства — к main. Переносить изменения выборочно с учетом различий веток. При размещении задания обновить его место во входе в задания и связанные ссылки; существующие задания ODS, измерений и DM сохраняются.
Общая проверка готовности
Из описанного начального состояния выполнены все случаи задания на стенде; сохранены команды и наблюдаемые результаты.
Неверное решение обнаруживается предусмотренными проверками; восстановление и повторный запуск проверены там, где они входят в задание.
Инструкция на русском соответствует подготовке учащегося, различает готовые части и самостоятельные решения; результат позволяет продолжить маршрут.
Проверены ссылки и команды; git diff --check пройден. Для изменений Python/DAG выполнены make lint и make test, а пропуски тестов перечислены отдельно. Статические проверки не заменяют учебный прогон.
Part of #8
## Статус и учебный результат
Кандидат на расширение обязательного цикла; перед реализацией оценить объем и место в маршруте.
Студент собирает текущее типизированное состояние ODS из накопленных пачек STG: вставляет новые ключи, применяет изменения существующих и сохраняет происхождение данных. Он может проверить обработку дельты независимо от способа доставки источника.
## Место и самостоятельная часть
Предпосылки для учащегося — существующие задания на снимки ODS и лабораторная по инкременту STG. Кандидат — `bookings`. Даны DDL и способ запуска; студент пишет преобразования, выбор версий и обновление ODS, затем собственные проверки результата.
## Что предусмотреть
1. Подготовить пачки STG с новыми ключами, несколькими версиями одного ключа и новой версией старого бронирования. Времена и порядок пачек должны однозначно определять ожидаемую версию; проверить несколько поступивших батчей перед одним запуском ODS.
2. Новую версию старой записи подать прямо в STG. Текущий прием источника по `book_date` ее автоматически не захватывает; успешный опыт ODS не является доказательством доставки такого исправления из Postgres.
3. Реализовать типизацию, дедупликацию дельты и применение изменений. Зафиксировать метки по договору эталона: новые и измененные строки получают `_load_id` и `_load_ts` выбранной версии STG; если `book_date`, `total_amount` и `event_ts` не изменились, строка ODS сохраняет прежние метки.
4. Развести два опыта. Для пустой дельты подготовить запуск, после которого `MAX(_load_ts)` ODS достиг максимума подготовленного STG, и повторить без новых данных. Затем подать отдельную пачку с более поздней `_load_ts`, но прежними бизнес-полями и `event_ts`. Она попадает в дельту, однако не меняет ODS и его границу загрузки; при повторе может читаться снова. Отсутствие изменений результата само по себе не означает пустую дельту.
5. Сверить ожидаемое состояние всех затронутых ключей, бизнес-поля и технические метки в каждом опыте. Испытать собственную проверку на известном неверном значении или пропущенном ключе и восстановить корректный результат.
## Критерии этой лабораторной
- [ ] Входные пачки и ожидаемые версии воспроизводимы; различены `event_ts` и `_load_ts`.
- [ ] Новые ключи вставляются, изменения применяются, дублей нет; бизнес-поля и метки новых, измененных и неизмененных строк соответствуют заданному договору.
- [ ] Несколько накопленных батчей обработаны одним запуском. Отдельно проверены пустая дельта и непустая дельта без изменений ODS, включая их повтор.
- [ ] Собственная DQ-проверка обнаруживает внесенную ошибку и проходит после исправления.
- [ ] После опыта ODS приведен в состояние, пригодное для следующих заданий DDS.
## Границы и результат работы автора
Подготовить задание для студента, необходимые заготовки/проверки и проверенный способ выполнения. Назвать входное состояние, самостоятельную часть, проверочные случаи и состояние для продолжения. Готовый стенд должен запускаться до лабораторной; выбранную часть разбирает уже студент во время задания. Стенд можно ломать и пересобирать, сохраняя файлы решения и понятный способ продолжения.
Материалы для автора и полное решение относятся к `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).
- [Загрузка ODS](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/sql/ods/bookings_load.sql)
- [DQ ODS](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/sql/ods/bookings_dq.sql)
- [Руководство ODS](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/docs/bookings_to_gp_ods.md)
- [Служебные поля](https://git.dementev.space/ddmitry/airflow-greenplum/src/branch/main/docs/design/naming_conventions.md)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #8
Статус и учебный результат
Кандидат на расширение обязательного цикла; перед реализацией оценить объем и место в маршруте.
Студент собирает текущее типизированное состояние ODS из накопленных пачек STG: вставляет новые ключи, применяет изменения существующих и сохраняет происхождение данных. Он может проверить обработку дельты независимо от способа доставки источника.
Место и самостоятельная часть
Предпосылки для учащегося — существующие задания на снимки ODS и лабораторная по инкременту STG. Кандидат —
bookings. Даны DDL и способ запуска; студент пишет преобразования, выбор версий и обновление ODS, затем собственные проверки результата.Что предусмотреть
book_dateее автоматически не захватывает; успешный опыт ODS не является доказательством доставки такого исправления из Postgres._load_idи_load_tsвыбранной версии STG; еслиbook_date,total_amountиevent_tsне изменились, строка ODS сохраняет прежние метки.MAX(_load_ts)ODS достиг максимума подготовленного STG, и повторить без новых данных. Затем подать отдельную пачку с более поздней_load_ts, но прежними бизнес-полями иevent_ts. Она попадает в дельту, однако не меняет ODS и его границу загрузки; при повторе может читаться снова. Отсутствие изменений результата само по себе не означает пустую дельту.Критерии этой лабораторной
event_tsи_load_ts.Границы и результат работы автора
Подготовить задание для студента, необходимые заготовки/проверки и проверенный способ выполнения. Назвать входное состояние, самостоятельную часть, проверочные случаи и состояние для продолжения. Готовый стенд должен запускаться до лабораторной; выбранную часть разбирает уже студент во время задания. Стенд можно ломать и пересобирать, сохраняя файлы решения и понятный способ продолжения.
Материалы для автора и полное решение относятся к
solution; инструкция для студента и необходимые общие средства — кmain. Переносить изменения выборочно с учетом различий веток. При размещении задания обновить его место во входе в задания и связанные ссылки; существующие задания ODS, измерений и DM сохраняются.Общая проверка готовности
git diff --checkпройден. Для изменений Python/DAG выполненыmake lintиmake test, а пропуски тестов перечислены отдельно. Статические проверки не заменяют учебный прогон.Сначала прочитать