Исправлены критические замечания
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user