- Зачем: - закрыты задачи P0 и P1 из ревью архитектуры для повышения понятности стенда для студентов. - Что: - исправлен distribution key для airport_traffic в дизайн-документе. - добавлены комментарии о генерации SK и отсутствии SK в фактах. - создан документ docs/dag_execution_order.md с описанием порядка запуска DAG-ов. - объяснена логика late-arriving dimensions и batch resolver. - добавлена legacy-пометка для хелпера greenplum.py. - Проверка: - визуальная проверка добавленных комментариев и новых файлов.
28 lines
1.3 KiB
SQL
28 lines
1.3 KiB
SQL
-- DDL для DDS-слоя по таблице fact_flight_sales.
|
|
|
|
CREATE SCHEMA IF NOT EXISTS dds;
|
|
|
|
-- Учебный комментарий: Почему у факта нет своего суррогатного ключа (fact_sk)?
|
|
-- В классическом DWH (Кимбалл) таблица фактов идентифицируется набором её
|
|
-- измерений или дегенеративных ключей (в нашем случае: ticket_no + flight_id).
|
|
-- Добавление отдельного ID только тратит место и не несёт аналитической ценности.
|
|
CREATE TABLE IF NOT EXISTS dds.fact_flight_sales (
|
|
calendar_sk INTEGER,
|
|
departure_airport_sk INTEGER,
|
|
arrival_airport_sk INTEGER,
|
|
airplane_sk INTEGER,
|
|
tariff_sk INTEGER,
|
|
passenger_sk INTEGER,
|
|
route_sk INTEGER,
|
|
book_ref TEXT NOT NULL,
|
|
ticket_no TEXT NOT NULL,
|
|
flight_id INTEGER NOT NULL,
|
|
book_date DATE,
|
|
seat_no TEXT,
|
|
price NUMERIC(10,2),
|
|
is_boarded BOOLEAN NOT NULL,
|
|
_load_id TEXT NOT NULL,
|
|
_load_ts TIMESTAMP NOT NULL DEFAULT now()
|
|
)
|
|
DISTRIBUTED BY (ticket_no);
|