timescaledb/notes.md
2026-03-04 19:46:33 +01:00

1.6 KiB

timescaledb

https://github.com/timescale/timescaledb

Test

Récup datas

ssh grab-4
docker exec -t client-demo-postgres-1 pg_dump -Fc -U postgres -d postgres -f /tmp/backup_postgres.dump
docker cp client-demo-postgres-1:/tmp/backup_postgres.dump /tmp/backup_postgres.dump
exit

cd /tmp
scp grab-4:/tmp/backup_postgres.dump .
pg_restore -c -x -t mesure -d postgres -h localhost -U postgres -W  backup_postgres.dump
pg_restore -c -x -I mesure_idx1 -d postgres -h localhost -U postgres -W  backup_postgres.dump
pg_restore -c -x -I mesure_idx2 -d postgres -h localhost -U postgres -W  backup_postgres.dump

Création d'une hypertable

CREATE TABLE mesure_ng (
  "date" TIMESTAMPTZ,
  id_captation INT NOT NULL,
  valeur float4 NOT NULL,
) WITH (
  tsdb.hypertable,
  timescaledb.segmentby = 'id_captation',
  timescaledb.orderby='time DESC'
)

INSERT INTO mesure_ng ("date", id_captation, valeur)
  SELECT "date", id_captation, valeur
    FROM mesure

Ex. de requête

SELECT
  time_bucket('1 hour', "date") AS heure,
  round(
    average(
      time_weight('linear', "date", valeur)
    )
  ) AS moyenne_conso,
  COUNT(*) AS nombre_de_mesures
FROM
  mesure_ng
WHERE
  "date" BETWEEN '2026-03-01 00:00:00' AND '2026-03-31 23:59:59'
  and id_captation = 59 -- puissance PAC
GROUP BY
  heure
ORDER BY
  heure;

Continuous aggregates (WIP)

https://www.tigerdata.com/docs/use-timescale/latest/continuous-aggregates/create-a-continuous-aggregate

  • CREATE MATERIALIZED VIEW
  • SELECT add_continuous_aggregate_policy
  • supprimer les "vieilles" données de mesure_ng