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:
@@ -55,6 +55,10 @@ src AS (
|
|||||||
LEFT JOIN seats_agg AS sa
|
LEFT JOIN seats_agg AS sa
|
||||||
ON sa.airplane_code = a.airplane_code
|
ON sa.airplane_code = a.airplane_code
|
||||||
),
|
),
|
||||||
|
-- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER()
|
||||||
|
-- Этот подход работает безопасно только потому, что Airflow запускает
|
||||||
|
-- джобы загрузки для одной таблицы строго последовательно (concurrency=1).
|
||||||
|
-- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK.
|
||||||
max_sk AS (
|
max_sk AS (
|
||||||
SELECT COALESCE(MAX(airplane_sk), 0) AS v
|
SELECT COALESCE(MAX(airplane_sk), 0) AS v
|
||||||
FROM dds.dim_airplanes
|
FROM dds.dim_airplanes
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ WHERE d.airport_bk = s.airport_code
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- Statement 2: INSERT новых записей (MAX(sk) + ROW_NUMBER()).
|
-- Statement 2: INSERT новых записей (MAX(sk) + ROW_NUMBER()).
|
||||||
|
-- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER()
|
||||||
|
-- Этот подход работает безопасно только потому, что Airflow запускает
|
||||||
|
-- джобы загрузки для одной таблицы строго последовательно (concurrency=1).
|
||||||
|
-- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK.
|
||||||
WITH max_sk AS (
|
WITH max_sk AS (
|
||||||
SELECT COALESCE(MAX(airport_sk), 0) AS v
|
SELECT COALESCE(MAX(airport_sk), 0) AS v
|
||||||
FROM dds.dim_airports
|
FROM dds.dim_airports
|
||||||
|
|||||||
@@ -51,6 +51,10 @@ WITH src AS (
|
|||||||
) AS d
|
) AS d
|
||||||
WHERE d.rn = 1
|
WHERE d.rn = 1
|
||||||
),
|
),
|
||||||
|
-- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER()
|
||||||
|
-- Этот подход работает безопасно только потому, что Airflow запускает
|
||||||
|
-- джобы загрузки для одной таблицы строго последовательно (concurrency=1).
|
||||||
|
-- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK.
|
||||||
max_sk AS (
|
max_sk AS (
|
||||||
SELECT COALESCE(MAX(passenger_sk), 0) AS v
|
SELECT COALESCE(MAX(passenger_sk), 0) AS v
|
||||||
FROM dds.dim_passengers
|
FROM dds.dim_passengers
|
||||||
|
|||||||
@@ -74,6 +74,10 @@ WITH src AS (
|
|||||||
FROM ods.routes
|
FROM ods.routes
|
||||||
),
|
),
|
||||||
max_sk AS (
|
max_sk AS (
|
||||||
|
-- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER()
|
||||||
|
-- Этот подход работает безопасно только потому, что Airflow запускает
|
||||||
|
-- джобы загрузки для одной таблицы строго последовательно (concurrency=1).
|
||||||
|
-- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK.
|
||||||
SELECT COALESCE(MAX(route_sk), 0) AS v
|
SELECT COALESCE(MAX(route_sk), 0) AS v
|
||||||
FROM dds.dim_routes
|
FROM dds.dim_routes
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ WITH src AS (
|
|||||||
WHERE s.fare_conditions IS NOT NULL
|
WHERE s.fare_conditions IS NOT NULL
|
||||||
AND s.fare_conditions <> ''
|
AND s.fare_conditions <> ''
|
||||||
),
|
),
|
||||||
|
-- Учебный комментарий: Генерация SK через MAX() + ROW_NUMBER()
|
||||||
|
-- Этот подход работает безопасно только потому, что Airflow запускает
|
||||||
|
-- джобы загрузки для одной таблицы строго последовательно (concurrency=1).
|
||||||
|
-- При параллельной загрузке возникнет состояние гонки (race condition) и возможны дубли SK.
|
||||||
max_sk AS (
|
max_sk AS (
|
||||||
SELECT COALESCE(MAX(tariff_sk), 0) AS v
|
SELECT COALESCE(MAX(tariff_sk), 0) AS v
|
||||||
FROM dds.dim_tariffs
|
FROM dds.dim_tariffs
|
||||||
|
|||||||
Reference in New Issue
Block a user