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:
@@ -0,0 +1,27 @@
|
||||
-- Забор порции слепка заказов из Kafka в сырьё STG.
|
||||
--
|
||||
-- Забор — один прямой SELECT, без цикла до пустоты: одна порция ClickHouse
|
||||
-- берёт десятки тысяч сообщений, а слепок дня — порядка полутора тысяч строк.
|
||||
-- Короткая порция оставит хвост до следующего прогона, а отказ после чтения
|
||||
-- унесёт прочитанное с собой: офсеты коммитятся в момент чтения. Граница
|
||||
-- целиком — ADR 0008, «Следствия».
|
||||
--
|
||||
-- stream_like_engine_allow_direct_select разрешает читать чтеца запросом; вторая
|
||||
-- половина пары объявлена на самой таблице (sql/ddl/10-stg-tables.sql).
|
||||
-- distributed_foreground_insert = 1 — конвенция ETL-вставок стенда: задача не
|
||||
-- должна зеленеть раньше, чем строки легли на шарды.
|
||||
|
||||
INSERT INTO stg.orders_raw_dist
|
||||
SELECT
|
||||
raw,
|
||||
_topic AS kafka_topic,
|
||||
_partition AS kafka_partition,
|
||||
_offset AS kafka_offset,
|
||||
_timestamp_ms AS kafka_timestamp,
|
||||
hostName() AS consumer_host,
|
||||
{load_id:String} AS _load_id,
|
||||
now64(3) AS _load_ts
|
||||
FROM stg.orders_raw_kafka
|
||||
SETTINGS
|
||||
stream_like_engine_allow_direct_select = 1,
|
||||
distributed_foreground_insert = 1
|
||||
Reference in New Issue
Block a user