refactor(orders): SQL приёма вынесен из DAG
- Зачем: - преобразования хранилища должны читаться рядом с целевым слоем, а DAG должен показывать оркестрацию. - Что: - запросы забора и разбора заказов разложены по каталогам STG и ODS. - общий контракт провода подключён в обе ветви штатным шаблонизатором Airflow. - SQL смонтирован во все службы Airflow, а правило раскладки записано в архитектуре. - Проверка: - make lint config-test smoke check-services. - airflow tasks render для pull_batch и parse_batch; airflow tasks test для parse_batch.
This commit is contained in:
@@ -414,7 +414,22 @@ kafka_offset)`: смотрят такую таблицу от класса, а
|
||||
разрастается до имени отдельного поля. Точная граница приёма — в
|
||||
[спецификации заказов](orders/ingestion.md).
|
||||
|
||||
## Раскладка DDL
|
||||
## Раскладка SQL
|
||||
|
||||
Исполняемые дагами запросы лежат по правилу
|
||||
`sql/<слой>/<объект>_<роль>.sql`. Слой — слой цели запроса: забор заказов в
|
||||
сырьё живёт в `sql/stg/orders_raw_load.sql`, две ветви разбора — в `sql/ods/`.
|
||||
Даг называет файлы, передаёт параметры и задаёт порядок выполнения, но не
|
||||
хранит текст преобразований. Общий фрагмент начинается с подчёркивания: файл
|
||||
`sql/ods/_order_wire_contract.sql` сам не исполняется, его включают обе ветви
|
||||
разбора.
|
||||
|
||||
Airflow читает и собирает эти файлы штатным шаблонизатором при исполнении
|
||||
задачи. Каталог `sql/` смонтирован во все его службы только для чтения. Поэтому
|
||||
обработчик дагов не зависит от наличия SQL на машине при разборе Python, а
|
||||
планировщик видит те же файлы при исполнении задачи.
|
||||
|
||||
### DDL
|
||||
|
||||
Файлы лежат в `sql/ddl/` и применяются по порядку имён. Сначала все статичные
|
||||
объекты, потом матвью — тогда к моменту создания матвью её цель уже существует.
|
||||
@@ -488,7 +503,8 @@ ODS. Второе: матвью приёма создаётся последне
|
||||
| ODS | `ods.order_snapshot_errors_rep` / `_dist` | строки слепка, не прошедшие строгий приём |
|
||||
|
||||
Матвью разбора у заказов нет: срез сырья раскладывают по этим двум целям два
|
||||
`INSERT SELECT` шага `parse_batch` в даге `orders_ingest`.
|
||||
`INSERT SELECT` шага `parse_batch` из файлов `sql/ods/order_snapshot_load.sql`
|
||||
и `sql/ods/order_snapshot_errors_load.sql`.
|
||||
|
||||
Слои DDS и DM появляются на следующих этапах; их состав задан разделом 7
|
||||
мастер-спеки и переносится сюда по мере постройки.
|
||||
|
||||
Reference in New Issue
Block a user