Дашборды в Metabase

-- Таблица для метрик пайплайнов 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';

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';

SELECT ROUND(MAX(duration_seconds), 1) AS max_duration_seconds FROM pipeline_metrics WHERE run_time > NOW() - INTERVAL '7 days';