Bloug Posté(e) le 1 novembre 2022 Signaler Posté(e) le 1 novembre 2022 Bonjour, Possible d'avoir de l'aide concernant ma requête sous grafana ? 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 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 " ? FROM domocharts_energy_day WHERE device_id = 507 GROUP BY MONTH(date) desc limit 2 Merci !
Lazer Posté(e) le 1 novembre 2022 Signaler Posté(e) le 1 novembre 2022 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 ?
Bloug Posté(e) le 1 novembre 2022 Auteur Signaler Posté(e) le 1 novembre 2022 (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 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é le 1 novembre 2022 par Bloug
Lazer Posté(e) le 1 novembre 2022 Signaler Posté(e) le 1 novembre 2022 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.
Bloug Posté(e) le 1 novembre 2022 Auteur Signaler Posté(e) le 1 novembre 2022 ok je vais regarder cette piste merci !
Lazer Posté(e) le 1 novembre 2022 Signaler Posté(e) le 1 novembre 2022 Autre piste, dans ton GROUP BY, je rajouterai également l'année en plus : , YEAR(date)
Bloug Posté(e) le 1 novembre 2022 Auteur Signaler Posté(e) le 1 novembre 2022 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
Lazer Posté(e) le 1 novembre 2022 Signaler Posté(e) le 1 novembre 2022 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. 1
Bloug Posté(e) le 1 novembre 2022 Auteur Signaler Posté(e) le 1 novembre 2022 (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 ! Modifié le 1 novembre 2022 par Bloug
Lazer Posté(e) le 1 novembre 2022 Signaler Posté(e) le 1 novembre 2022 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.
Messages recommandés