fix telemtrie na dahsbaordu (15min misto 1h)
This commit is contained in:
33
db/migration/V039__telemetry_inverter_15m_aggregate.sql
Normal file
33
db/migration/V039__telemetry_inverter_15m_aggregate.sql
Normal file
@@ -0,0 +1,33 @@
|
||||
-- ============================================================
|
||||
-- 15min continuous aggregate telemetrie střídače (dashboard sloty)
|
||||
-- ============================================================
|
||||
-- Zarovnáno s 15min sloty UI (UTC time_bucket = floorSlotUtcMs v frontendu).
|
||||
-- Hodinový CA telemetry_inverter_hourly zůstává pro dlouhé grafy / legacy.
|
||||
|
||||
CREATE MATERIALIZED VIEW IF NOT EXISTS ems.telemetry_inverter_15m
|
||||
WITH (timescaledb.continuous) AS
|
||||
SELECT
|
||||
time_bucket('15 minutes', measured_at) AS slot_start,
|
||||
site_id,
|
||||
AVG(pv_power_w)::INT AS avg_pv_w,
|
||||
AVG(battery_power_w)::INT AS avg_battery_w,
|
||||
AVG(grid_power_w)::INT AS avg_grid_w,
|
||||
AVG(load_power_w)::INT AS avg_load_w,
|
||||
LAST(battery_soc_percent, measured_at) AS last_soc_pct,
|
||||
COUNT(*) AS sample_count
|
||||
FROM ems.telemetry_inverter
|
||||
GROUP BY slot_start, site_id
|
||||
WITH NO DATA;
|
||||
|
||||
-- Refresh: ≥2× time_bucket (15 min) → start_offset > 30 min
|
||||
SELECT add_continuous_aggregate_policy(
|
||||
'ems.telemetry_inverter_15m',
|
||||
start_offset => INTERVAL '45 minutes',
|
||||
end_offset => INTERVAL '1 minute',
|
||||
schedule_interval => INTERVAL '15 minutes'
|
||||
);
|
||||
|
||||
COMMENT ON MATERIALIZED VIEW ems.telemetry_inverter_15m IS
|
||||
'Čtvrthodinové agregáty telemetrie střídače. TimescaleDB continuous aggregate.
|
||||
Refresh každých 15 minut. Dashboard přehled (sloty 15 min).
|
||||
View vw_telemetry_15m_7d je v repeatable R__vw_telemetry_15m_7d.sql.';
|
||||
19
db/views/R__vw_telemetry_15m_7d.sql
Normal file
19
db/views/R__vw_telemetry_15m_7d.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
-- =============================================================
|
||||
-- R__vw_telemetry_15m_7d.sql
|
||||
-- EMS Platform – telemetrie střídače po 15 min (dashboard sloty)
|
||||
-- Repeatable migration – jedna aktuální definice view
|
||||
-- =============================================================
|
||||
-- Zdroj: continuous aggregate ems.telemetry_inverter_15m (V039).
|
||||
-- security_invoker=false: PostgREST ems_anon čte bez GRANT na podkladový CA.
|
||||
|
||||
CREATE OR REPLACE VIEW ems.vw_telemetry_15m_7d
|
||||
WITH (security_invoker = false)
|
||||
AS
|
||||
SELECT *
|
||||
FROM ems.telemetry_inverter_15m
|
||||
WHERE slot_start >= now() - INTERVAL '7 days'
|
||||
ORDER BY slot_start DESC;
|
||||
|
||||
COMMENT ON VIEW ems.vw_telemetry_15m_7d IS
|
||||
'Telemetrie střídače po 15 min za 7 dní (zdroj: telemetry_inverter_15m).
|
||||
security_invoker=false: čtení přes PostgREST role ems_anon bez GRANT na podkladový CA.';
|
||||
@@ -26,6 +26,7 @@ GRANT SELECT ON ems.vw_audit_weekly TO ems_anon;
|
||||
GRANT SELECT ON ems.vw_mode_log_recent TO ems_anon;
|
||||
GRANT SELECT ON ems.vw_operating_mode TO ems_anon;
|
||||
GRANT SELECT ON ems.vw_telemetry_hourly_7d TO ems_anon;
|
||||
GRANT SELECT ON ems.vw_telemetry_15m_7d TO ems_anon;
|
||||
GRANT SELECT ON ems.forecast_accuracy TO ems_anon;
|
||||
GRANT SELECT ON ems.vw_forecast_accuracy_by_lead_time TO ems_anon;
|
||||
GRANT SELECT ON ems.vw_forecast_accuracy_daily TO ems_anon;
|
||||
|
||||
Reference in New Issue
Block a user