diff --git a/sql/dds/dim_airplanes_load.sql b/sql/dds/dim_airplanes_load.sql index 6eb1344..05999dd 100644 --- a/sql/dds/dim_airplanes_load.sql +++ b/sql/dds/dim_airplanes_load.sql @@ -55,6 +55,10 @@ src AS ( LEFT JOIN seats_agg AS sa ON sa.airplane_code = a.airplane_code ), +-- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER() +-- Этот подход работает безопасно только потому, что Airflow запускает +-- джобы загрузки для одной таблицы строго последовательно (concurrency=1). +-- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK. max_sk AS ( SELECT COALESCE(MAX(airplane_sk), 0) AS v FROM dds.dim_airplanes diff --git a/sql/dds/dim_airports_load.sql b/sql/dds/dim_airports_load.sql index 666e0bc..faf59ae 100644 --- a/sql/dds/dim_airports_load.sql +++ b/sql/dds/dim_airports_load.sql @@ -21,6 +21,10 @@ WHERE d.airport_bk = s.airport_code ); -- Statement 2: INSERT новых записей (MAX(sk) + ROW_NUMBER()). +-- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER() +-- Этот подход работает безопасно только потому, что Airflow запускает +-- джобы загрузки для одной таблицы строго последовательно (concurrency=1). +-- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK. WITH max_sk AS ( SELECT COALESCE(MAX(airport_sk), 0) AS v FROM dds.dim_airports diff --git a/sql/dds/dim_passengers_load.sql b/sql/dds/dim_passengers_load.sql index df48c0e..6075317 100644 --- a/sql/dds/dim_passengers_load.sql +++ b/sql/dds/dim_passengers_load.sql @@ -51,6 +51,10 @@ WITH src AS ( ) AS d WHERE d.rn = 1 ), +-- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER() +-- Этот подход работает безопасно только потому, что Airflow запускает +-- джобы загрузки для одной таблицы строго последовательно (concurrency=1). +-- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK. max_sk AS ( SELECT COALESCE(MAX(passenger_sk), 0) AS v FROM dds.dim_passengers diff --git a/sql/dds/dim_routes_load.sql b/sql/dds/dim_routes_load.sql index 49e0585..76113f5 100644 --- a/sql/dds/dim_routes_load.sql +++ b/sql/dds/dim_routes_load.sql @@ -74,6 +74,10 @@ WITH src AS ( FROM ods.routes ), max_sk AS ( + -- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER() + -- Этот подход работает безопасно только потому, что Airflow запускает + -- джобы загрузки для одной таблицы строго последовательно (concurrency=1). + -- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK. SELECT COALESCE(MAX(route_sk), 0) AS v FROM dds.dim_routes ) diff --git a/sql/dds/dim_tariffs_load.sql b/sql/dds/dim_tariffs_load.sql index ebe514f..cf4b87c 100644 --- a/sql/dds/dim_tariffs_load.sql +++ b/sql/dds/dim_tariffs_load.sql @@ -7,6 +7,10 @@ WITH src AS ( WHERE s.fare_conditions IS NOT NULL AND s.fare_conditions <> '' ), +-- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER() +-- Этот подход работает безопасно только потому, что Airflow запускает +-- джобы загрузки для одной таблицы строго последовательно (concurrency=1). +-- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK. max_sk AS ( SELECT COALESCE(MAX(tariff_sk), 0) AS v FROM dds.dim_tariffs