Compare commits

..

2 Commits

Author SHA1 Message Date
Raymond Bourges
06c6e4da7c REF : group by plus simples 2026-03-14 06:48:36 +01:00
Raymond Bourges
9cdc80a238 FEAT : ajout de grafana 2026-03-14 06:47:57 +01:00
4 changed files with 35 additions and 11 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
tmp/

View File

@ -1,7 +1,32 @@
services:
timescaledb:
image: timescale/timescaledb-ha:pg18
ports:
- 5432:5432
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- ./tmp/data/postgres:/home/postgres/pgdata # TODO : penser à changer sur serveur vs postgres de base !
grafana:
image: grafana/grafana:main-ubuntu
ports:
- 3000:3000
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
# - GF_SERVER_DOMAIN=mesures-{{ client.nom }}.arbi.fr
# - GF_SERVER_ROOT_URL=https://mesures-{{ client.nom }}.arbi.fr
- TZ=Europe/Paris
- GF_DATABASE_TYPE=postgres
- GF_DATABASE_HOST=timescaledb:5432
- GF_DATABASE_NAME=grafana
- GF_DATABASE_USER=postgres
- GF_DATABASE_PASSWORD=postgres
- GF_DATABASE_SSL_MODE=disable
volumes:
- ./tmp/data/grafana:/var/lib/grafana
depends_on:
- timescaledb

View File

@ -1,4 +1,4 @@
CREATE TABLE mesure_gauge ( -- TODO ; revoir précudes d'injection de données pour faire la différence entre gauge et compteur
CREATE TABLE mesure_gauge ( -- TODO ; revoir procédures d'injection des données pour faire la différence entre gauge et compteur
"date" TIMESTAMPTZ,
id_captation INT NOT NULL,
valeur float4 NOT NULL
@ -28,7 +28,7 @@ SELECT
MAX(mg.valeur),
MIN(mg.valeur)
FROM mesure_gauge mg
GROUP BY id_captation, time_bucket(INTERVAL '1 hour', mg."date");
GROUP BY 1, 2;
SELECT add_continuous_aggregate_policy( -- On met à jour les données tt les h en relisant les données brutes entre 1 mois et 1 jour
'mesure_gauge_heure',
@ -48,7 +48,7 @@ SELECT
MAX(mg.max),
MIN(mg.min)
FROM mesure_gauge_heure mg
GROUP BY id_captation, time_bucket(INTERVAL '1 DAY', mg."date");
GROUP BY 1, 2;
SELECT add_continuous_aggregate_policy( -- On met à jour les données tt les h en relisant les données brutes entre 1 mois et 1 jour
'mesure_gauge_jour',
@ -66,6 +66,6 @@ select
average(rollup(valeur_temporelle)) AS moyenne -- rollup pour avour le concaténation des valeur_temporelle
from mesure_gauge_heure mgh
where mgh.id_captation = 59 -- puissance PAC
group by mgh.id_captation, time_bucket(INTERVAL '1 DAY', mgh."date")
group by 1, 2
order by "date" desc
limit 1000;

View File

@ -1,4 +1,4 @@
CREATE TABLE mesure_compteur ( -- TODO ; revoir précudes d'injection de données pour faire la différence entre gauge et compteur
CREATE TABLE mesure_compteur ( -- TODO ; revoir procédures d'injection des données pour faire la différence entre gauge et compteur
"date" TIMESTAMPTZ,
id_captation INT NOT NULL,
valeur float4 NOT NULL
@ -26,9 +26,7 @@ SELECT
time_bucket(INTERVAL '1 hour', mc."date") AS "date",
counter_agg(mc."date", mc.valeur) AS valeur_temporelle
FROM mesure_compteur mc
GROUP BY
id_captation,
time_bucket(INTERVAL '1 hour', mc."date");
GROUP BY 1, 2;
SELECT add_continuous_aggregate_policy('mesure_compteur_heure', -- On met à jour les données tt les h en relisant les données brutes entre 1 mois et 1 jour
start_offset => INTERVAL '1 month',
@ -44,7 +42,7 @@ SELECT
time_bucket(INTERVAL '1 DAY', mg."date") AS "date",
rollup(valeur_temporelle) AS valeur_temporelle
FROM mesure_compteur_heure mg
GROUP BY id_captation, time_bucket(INTERVAL '1 DAY', mg."date");
GROUP BY 1, 2;
SELECT add_continuous_aggregate_policy( -- On met à jour les données tt les h en relisant les données brutes entre 1 mois et 1 jour
'mesure_compteur_jour',
@ -66,5 +64,5 @@ SELECT
last_val(rollup(mch.valeur_temporelle)) AS index_fin
FROM mesure_compteur_heure mch
where mch.id_captation = 89 -- HP
group by mch.id_captation, time_bucket(INTERVAL '1 DAY', mch."date")
group by 1, 2
order by "date" desc