Files
airflow-greenplum/sql/stg/routes_load.sql
T

42 lines
1.3 KiB
SQL

-- Загрузка всех строк из stg.routes_ext в stg.routes (full load).
-- Используем batch_id для отслеживания загрузки.
INSERT INTO stg.routes (
route_no,
validity,
departure_airport,
arrival_airport,
airplane_code,
days_of_week,
scheduled_time,
duration,
src_created_at_ts,
load_dttm,
batch_id
)
SELECT
ext.route_no::text,
ext.validity::text,
ext.departure_airport::text,
ext.arrival_airport::text,
ext.airplane_code::text,
ext.days_of_week::text,
ext.scheduled_time::text,
ext.duration::text,
now()::timestamp,
now()::timestamp,
'{{ run_id }}'::text
FROM stg.routes_ext AS ext
WHERE NOT EXISTS (
-- Защита от дублей в рамках одного batch_id по составному ключу (route_no, validity)
SELECT 1
FROM stg.routes AS r
WHERE r.batch_id = '{{ run_id }}'::text
AND r.route_no = ext.route_no::text
AND r.validity = ext.validity::text
);
-- Обновляем статистику для оптимизатора Greenplum
-- Это критично для корректной работы оптимизатора и выбора оптимального плана выполнения
ANALYZE stg.routes;