-- Таблица для метрик пайплайнов
CREATE TABLE IF NOT EXISTS pipeline_metrics (
id SERIAL PRIMARY KEY,
run_time TIMESTAMP DEFAULT NOW(),
pipeline_name TEXT,
duration_seconds NUMERIC,
rows_processed INTEGER,
status TEXT
);
-- Вставляем тестовые данные (для демонстрации дашборда)
INSERT INTO pipeline_metrics (run_time, pipeline_name, duration_seconds, rows_processed, status) VALUES
(NOW() - INTERVAL '2 hours', 'etl_traffic', 45.2, 1440, 'SUCCESS'),
(NOW() - INTERVAL '4 hours', 'etl_traffic', 67.8, 1440, 'SUCCESS'),
(NOW() - INTERVAL '6 hours', 'etl_traffic', 120.5, 1440, 'FAIL'),
(NOW() - INTERVAL '8 hours', 'etl_traffic', 52.1, 1440, 'SUCCESS'),
(NOW() - INTERVAL '10 hours', 'etl_traffic', 48.3, 1440, 'SUCCESS'),
(NOW() - INTERVAL '12 hours', 'etl_traffic', 89.4, 1440, 'SUCCESS'),
(NOW() - INTERVAL '14 hours', 'etl_traffic', 35.6, 1440, 'SUCCESS'),
(NOW() - INTERVAL '16 hours', 'etl_traffic', 150.2, 1440, 'FAIL'),
(NOW() - INTERVAL '18 hours', 'etl_traffic', 44.7, 1440, 'SUCCESS'),
(NOW() - INTERVAL '20 hours', 'etl_traffic', 55.9, 1440, 'SUCCESS');
SELECT
ROUND(100.0 * SUM(CASE WHEN status = 'SUCCESS' THEN 1 ELSE 0 END) / COUNT(*), 1) AS success_rate_percent
FROM pipeline_metrics
WHERE run_time > NOW() - INTERVAL '7 days';