Исправлены критические замечания

This commit is contained in:
2026-01-18 21:33:46 +03:00
parent 762d539d52
commit ba74b521dc
11 changed files with 143 additions and 90 deletions
+3 -3
View File
@@ -32,7 +32,7 @@ WITH (appendonly=true, orientation=row, compresstype=zlib, compresslevel=1)
-- Ключ распределения: ticket_no
-- Обоснование: ticket_no — это основной бизнес-ключ для билетов.
-- Использование ticket_no обеспечивает:
-- 1. Co-location данных boarding_passes и tickets при JOIN по ticket_no
-- 2. Co-location данных boarding_passes и segments при JOIN по ticket_no
-- 3. Равномерное распределение данных по сегментам (ticket_no имеет высокую кардинальность)
-- 1. Co-location данных boarding_passes и segments при JOIN по ticket_no
-- 2. Равномерное распределение данных по сегментам (ticket_no имеет высокую кардинальность)
-- Примечание: stg.tickets распределена по book_ref, поэтому JOIN boarding_passes ↔ tickets по ticket_no может требовать motion.
DISTRIBUTED BY (ticket_no);
+1 -1
View File
@@ -38,5 +38,5 @@ WITH (appendonly=true, orientation=row, compresstype=zlib, compresslevel=1)
-- Использование flight_id обеспечивает:
-- 1. Равномерное распределение данных по сегментам (flight_id имеет высокую кардинальность)
-- 2. Оптимизацию запросов, которые фильтруют или группируют по flight_id
-- 3. Co-location данных flights и boarding_passes при JOIN по flight_id
-- Примечание: JOIN с таблицами, распределёнными по другим ключам, может требовать motion.
DISTRIBUTED BY (flight_id);
+3 -1
View File
@@ -76,7 +76,9 @@ BEGIN
SELECT COUNT(*)
INTO v_orphan_route_count
FROM stg.flights AS f
LEFT JOIN stg.routes AS r ON f.route_no = r.route_no
LEFT JOIN stg.routes AS r
ON f.route_no = r.route_no
AND r.batch_id = v_batch_id
WHERE f.batch_id = v_batch_id
AND r.route_no IS NULL;
+3 -3
View File
@@ -37,9 +37,9 @@ CREATE TABLE IF NOT EXISTS stg.routes (
)
WITH (appendonly=true, orientation=row, compresstype=zlib, compresslevel=1)
-- Ключ распределения: route_no
-- Обоснование: route_no — это уникальный идентификатор маршрута.
-- Обоснование: route_no — бизнес-идентификатор маршрута и часто используется в фильтрах/джойнах.
-- Использование route_no обеспечивает:
-- 1. Равномерное распределение данных по сегментам (route_no имеет высокую кардинальность)
-- 2. Co-location данных routes с airports и airplanes при JOIN
-- 3. Оптимизацию запросов, которые фильтруют или группируют по route_no
-- 2. Оптимизацию запросов, которые фильтруют или группируют по route_no
-- Примечание: JOIN по airport_code/airplane_code может требовать перераспределения данных (motion).
DISTRIBUTED BY (route_no);
+9 -3
View File
@@ -67,7 +67,9 @@ BEGIN
SELECT COUNT(*)
INTO v_orphan_airports_count
FROM stg.routes AS r
LEFT JOIN stg.airports AS da ON r.departure_airport = da.airport_code
LEFT JOIN stg.airports AS da
ON r.departure_airport = da.airport_code
AND da.batch_id = v_batch_id
WHERE r.batch_id = v_batch_id
AND da.airport_code IS NULL;
@@ -82,7 +84,9 @@ BEGIN
SELECT COUNT(*)
INTO v_orphan_airports_count
FROM stg.routes AS r
LEFT JOIN stg.airports AS aa ON r.arrival_airport = aa.airport_code
LEFT JOIN stg.airports AS aa
ON r.arrival_airport = aa.airport_code
AND aa.batch_id = v_batch_id
WHERE r.batch_id = v_batch_id
AND aa.airport_code IS NULL;
@@ -97,7 +101,9 @@ BEGIN
SELECT COUNT(*)
INTO v_orphan_airplanes_count
FROM stg.routes AS r
LEFT JOIN stg.airplanes AS a ON r.airplane_code = a.airplane_code
LEFT JOIN stg.airplanes AS a
ON r.airplane_code = a.airplane_code
AND a.batch_id = v_batch_id
WHERE r.batch_id = v_batch_id
AND a.airplane_code IS NULL;
+3 -1
View File
@@ -65,7 +65,9 @@ BEGIN
SELECT COUNT(*)
INTO v_orphan_airplanes_count
FROM stg.seats AS s
LEFT JOIN stg.airplanes AS a ON s.airplane_code = a.airplane_code
LEFT JOIN stg.airplanes AS a
ON s.airplane_code = a.airplane_code
AND a.batch_id = v_batch_id
WHERE s.batch_id = v_batch_id
AND a.airplane_code IS NULL;
+3 -3
View File
@@ -30,7 +30,7 @@ WITH (appendonly=true, orientation=row, compresstype=zlib, compresslevel=1)
-- Ключ распределения: ticket_no
-- Обоснование: ticket_no — это основной бизнес-ключ для билетов.
-- Использование ticket_no обеспечивает:
-- 1. Co-location данных segments и tickets при JOIN по ticket_no
-- 2. Co-location данных segments и boarding_passes при JOIN по ticket_no
-- 3. Равномерное распределение данных по сегментам (ticket_no имеет высокую кардинальность)
-- 1. Co-location данных segments и boarding_passes при JOIN по ticket_no
-- 2. Равномерное распределение данных по сегментам (ticket_no имеет высокую кардинальность)
-- Примечание: stg.tickets распределена по book_ref, поэтому JOIN segments ↔ tickets по ticket_no может требовать motion.
DISTRIBUTED BY (ticket_no);