add support for barometric pressure
This commit is contained in:
@@ -41,6 +41,21 @@ SELECT create_hypertable('observations_ws90', 'ts', if_not_exists => TRUE);
|
||||
CREATE INDEX IF NOT EXISTS idx_observations_ws90_site_ts ON observations_ws90(site, ts DESC);
|
||||
CREATE INDEX IF NOT EXISTS idx_observations_ws90_station_ts ON observations_ws90(station_id, ts DESC);
|
||||
|
||||
-- Barometric pressure observations (from other MQTT sources)
|
||||
CREATE TABLE IF NOT EXISTS observations_baro (
|
||||
ts TIMESTAMPTZ NOT NULL,
|
||||
received_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
site TEXT NOT NULL,
|
||||
source TEXT NOT NULL,
|
||||
pressure_hpa DOUBLE PRECISION,
|
||||
payload_json JSONB
|
||||
);
|
||||
|
||||
SELECT create_hypertable('observations_baro', 'ts', if_not_exists => TRUE);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_observations_baro_site_ts ON observations_baro(site, ts DESC);
|
||||
CREATE INDEX IF NOT EXISTS idx_observations_baro_source_ts ON observations_baro(source, ts DESC);
|
||||
|
||||
-- Open-Meteo hourly baseline forecasts
|
||||
CREATE TABLE IF NOT EXISTS forecast_openmeteo_hourly (
|
||||
ts TIMESTAMPTZ NOT NULL,
|
||||
@@ -100,6 +115,37 @@ BEGIN
|
||||
END IF;
|
||||
END$$;
|
||||
|
||||
-- Raw retention: 90 days (barometric pressure)
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM timescaledb_information.jobs j
|
||||
WHERE j.proc_name = 'policy_retention'
|
||||
AND j.hypertable_name = 'observations_baro'
|
||||
) THEN
|
||||
PERFORM add_retention_policy('observations_baro', INTERVAL '90 days');
|
||||
END IF;
|
||||
END$$;
|
||||
|
||||
-- Compression after 7 days
|
||||
ALTER TABLE observations_baro SET (
|
||||
timescaledb.compress,
|
||||
timescaledb.compress_segmentby = 'site,source'
|
||||
);
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM timescaledb_information.jobs
|
||||
WHERE proc_name = 'policy_compression'
|
||||
AND hypertable_name = 'observations_baro'
|
||||
) THEN
|
||||
PERFORM add_compression_policy('observations_baro', INTERVAL '7 days');
|
||||
END IF;
|
||||
END$$;
|
||||
|
||||
-- 1-minute continuous aggregate
|
||||
CREATE MATERIALIZED VIEW IF NOT EXISTS cagg_ws90_1m
|
||||
WITH (timescaledb.continuous) AS
|
||||
|
||||
Reference in New Issue
Block a user