Первая версия dag
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
-- Проверки качества данных для tickets
|
||||
|
||||
-- Проверка 1: совпадение количества билетов в источнике и STG
|
||||
DO $$
|
||||
DECLARE
|
||||
v_source_count BIGINT;
|
||||
v_stg_count BIGINT;
|
||||
BEGIN
|
||||
-- Количество в источнике (новые билеты)
|
||||
SELECT COUNT(*) INTO v_source_count
|
||||
FROM (
|
||||
SELECT t.ticket_no
|
||||
FROM stg.tickets_ext AS t
|
||||
JOIN stg.bookings_ext AS b ON t.book_ref = b.book_ref
|
||||
WHERE b.book_date > COALESCE(
|
||||
(SELECT max(src_created_at_ts) FROM stg.tickets
|
||||
WHERE batch_id <> '{{ run_id }}'::text OR batch_id IS NULL),
|
||||
TIMESTAMP '1900-01-01 00:00:00'
|
||||
)
|
||||
) AS source;
|
||||
|
||||
-- Количество в STG (текущий батч)
|
||||
SELECT COUNT(*) INTO v_stg_count
|
||||
FROM stg.tickets
|
||||
WHERE batch_id = '{{ run_id }}'::text;
|
||||
|
||||
-- Проверка совпадения
|
||||
IF v_source_count <> v_stg_count THEN
|
||||
RAISE EXCEPTION 'DQ FAILED: несовпадение количества билетов. Источник: %, STG: %',
|
||||
v_source_count, v_stg_count;
|
||||
ELSE
|
||||
RAISE NOTICE 'DQ PASSED: количество билетов совпадает (%)', v_stg_count;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Проверка 2: ссылочная целостность (все ticket_no должны иметь соответствующие book_ref)
|
||||
SELECT
|
||||
COUNT(*) AS orphan_tickets
|
||||
FROM stg.tickets
|
||||
WHERE batch_id = '{{ run_id }}'::text
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM stg.bookings
|
||||
WHERE stg.bookings.book_ref = stg.tickets.book_ref
|
||||
);
|
||||
-- Ожидаемое значение: 0
|
||||
|
||||
-- Проверка 3: отсутствие NULL в обязательных полях
|
||||
SELECT
|
||||
COUNT(*) AS null_tickets
|
||||
FROM stg.tickets
|
||||
WHERE batch_id = '{{ run_id }}'::text
|
||||
AND (ticket_no IS NULL OR book_ref IS NULL);
|
||||
-- Ожидаемое значение: 0
|
||||
Reference in New Issue
Block a user