docs(dds): добавлены учебные комментарии о генерации SK

- Зачем:
  - объяснить студентам, почему подход MAX() + ROW_NUMBER() безопасен только при последовательном запуске.
- Что:
  - добавлен комментарий в dim_airplanes_load.sql.
  - добавлен комментарий в dim_airports_load.sql.
  - добавлен комментарий в dim_passengers_load.sql.
  - добавлен комментарий в dim_routes_load.sql.
  - добавлен комментарий в dim_tariffs_load.sql.
- Проверка:
  - git diff HEAD~1 sql/dds/.
This commit is contained in:
2026-03-01 17:42:42 +03:00
parent 8870ba9088
commit e29a249830
5 changed files with 20 additions and 0 deletions
+4
View File
@@ -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
+4
View File
@@ -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
+4
View File
@@ -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
+4
View File
@@ -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
)
+4
View File
@@ -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