-- 주간 데이터 품질 리포트
WITH weekly_quality AS (
SELECT
DATE_TRUNC('WEEK', timestamp) AS week_start,
details:flow_progress:flow_name AS flow_name,
EXPLODE(
FROM_JSON(
details:flow_progress:data_quality:expectations,
'ARRAY<STRUCT<name: STRING, passed_records: BIGINT, failed_records: BIGINT>>'
)
) AS exp
FROM event_log("pipeline-id-here")
WHERE event_type = 'flow_progress'
AND details:flow_progress:data_quality IS NOT NULL
)
SELECT
week_start,
flow_name,
exp.name AS rule_name,
SUM(exp.passed_records) AS total_passed,
SUM(exp.failed_records) AS total_failed,
ROUND(
SUM(exp.passed_records) * 100.0 /
NULLIF(SUM(exp.passed_records) + SUM(exp.failed_records), 0), 2
) AS pass_rate_pct,
-- 전주 대비 변화
LAG(
ROUND(SUM(exp.passed_records) * 100.0 /
NULLIF(SUM(exp.passed_records) + SUM(exp.failed_records), 0), 2)
) OVER (PARTITION BY flow_name, exp.name ORDER BY week_start) AS prev_week_rate
FROM weekly_quality
GROUP BY week_start, flow_name, exp.name
ORDER BY week_start DESC, flow_name;