Aller au contenu

Aide Fonction sql /Grafana


Messages recommandés

Posté(e)

Bonjour,

 

Possible d'avoir de l'aide concernant ma requête sous grafana ? 

 

Capture.JPG.e47eba43c1aba15dc5eef43eeb844845.JPG

 

je souhaite grouper les couts de l'eau, elec et gaz par mois.

 

Le problème est pour le gaz , j'ai modifié mon capteur avec le Gazpar et du coup il considère le "mois" ... à mi chemin :D

 

SELECT
  date AS "time",
  (mon blabla de calculs) AS Gaz
FROM domocharts_water_day
WHERE
  device_id = 540
 GROUP BY MONTH(date) DESC
LIMIT 2

je n'utilise pas la table "domocharts_water_month"  car sinon je bloque également du coté de l'électricité  mais peut être que la conversion est plus " pratique " ? 

 

 

Capture2.JPG.8f7dcebaba331b990745a2a3e98f8bcb.JPG

 

FROM domocharts_energy_day
WHERE
  device_id = 507
 GROUP BY MONTH(date) desc
 limit 2

 

 

Merci !

Posté(e)

Je ne comprends pas bien ta problématique.

Déjà je ne vois pas en quoi cette histoire de mi-chemin pour le compteur de gaz est problématique ? A partir du moment où tu fais un SELECT ... SUM(...) AS Gaz ... GROUP BY MONTH(date) il va faire la somme de tous les jours du mois, peu importe que ça commence en cours de mois ou non.

 

Ensuite comment tu agrège les requêtes sur la même graph ? Tu fais une UNION ?

Posté(e) (modifié)

Ma problématique est que j'ai exactement la même requête avec seulement un changement du "Device ID"

et pourtant le graph du gaz est coupé. et j'utilise bien le SUM(...)

 

Ma seule indication est de ne pas avoir de "Stats" sur le début du mois pour le gaz. d'où ma question ici :s

Capture3.thumb.JPG.347dd12813f212cfa330faecef4aea4b.JPG

 

 

non pas d'UNION. Les requêtes son simplement à la suite.

Dans les : SELECT date AS "time"  la colonne date sont de format identique sur les deux tables

 

Modifié par Bloug
Posté(e)

Je pense que tu devrais essayer avec une UNION.

C'est à dire, dans Grafana, une seule grosse requête, celle-ci étant composée de plusieurs requêtes regroupées entre elles avec une (ou plusieurs) UNION.

Posté(e)

bon j'ai trouvé une solution simple, j'ai simplement ajouté une valeur de 0 dans la table le avec la date du 1er jour du mois .... mais c'est quand même bizzzare

 

Posté(e)

J'ai compris !

Malgré ton GROUP BY MONTH..., tu avais conservé un SELECT date, ce qui n'est pas bon.

Il faut que ton SELECT soit aligné sur ton GROUP BY.
Donc un truc comme SELECT MONTH(date) AS "Mois" devrait le faire.

  • Like 1
Posté(e) (modifié)

Bon j'ai pas supprimé la valeur de 0 à la date du 1er septembre mais en modifiant avec ta methode j'arrive au même résultat , coïncidence ?

 

SELECT
  MONTH(date) AS 'time',
SUM(sum_value*monblabla) AS Eau
FROM domocharts_water_day
WHERE
  device_id = 540
 GROUP BY MONTH(date) DESC
LIMIT 2

Un grand merci pour l'explication ! :60:

Modifié par Bloug
Posté(e)

En fait Grafana a besoin d'un index commun pour faire "matcher" les données.
Mais comme ton SELECT n'était pas aligné sur le GROUP BY, tu te retrouvais avec une valeur aléatoire de date (basée sur les algo internes de la requête SQL, qu'on ne maitrise pas).

 

PS : n'oublie pas d'ajouter le GROUP BY YEAR... que je t'ai conseillé précédemment sinon tu auras des valeurs aberrantes l'année prochaine.

 

×
×
  • Créer...