-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Special cases: Produce yearly reports for all sections #306
Special cases: Produce yearly reports for all sections #306
Conversation
@spch-GL Je cherche toujours à reproduire le problème en utilisant le jeu de données "EGAS". Pour mon test j'ai besoin d'identifier la section concernée. Le champs Comment puis-je identifier la section concernée? |
Ah autant pour moi j'ai retrouvé ton message qui spéficie installation id: |
Voici l'extrait de la table |
@spch-GL Le problème "key error" qui survient ici et dans 1-2 autres Pull requests provient du fait qu'une certaine requête à la base de données retourne un résultat vide. Pour faire simple, est-ce que tu peux confirmer le postulat suivant (qui est fait dans les tests): S'il existe un comptage pour l'installation |
L'erreur exposée dans ce test suggère que ce posultat est faux (ou alors que j'ai moi-même commis une erreur). |
Je pense effectivement que c'est faux. Si tu essayes sur l'installation EGAS (cas spécial) en 2021 cela fonctionne ? |
Le lien étant réalisé dans la table |
C'est pour vérifier si j'ai compris la logique implicite du plugin. J'essaie de comprendre pourquoi les instructions suivantes renvoient parfois un résultat vide: start = ...
end = ...
installation = ...
count = ..., installation, ...
# toutes et seules les sections dont les
# lanes sont observées par l'installation arbitraire
# définie plus haut et ont chacune un CountDetail
# correspondant au Count abritraire défini plus haut
sections = models.Section.objects.filter(
lane__id_installation=installation.id,
lane__countdetail__id_count=count.id
).distinct()
for section in sections:
details = models.CountDetail.objects.filter(
id_lane__id_section=section,
id_category__isnull=False,
timestamp__gte=start,
timestamp__lt=end,
)
# ? `details` est vide ?
# puis plus loin:
# KeyError: 'date' |
Un Dans l'interface, on doit sélectionner une Mais je ne comprends pas bien to code. |
SELECT
"count_detail"."import_status",
DATE_TRUNC(
'day',
"count_detail"."timestamp" AT TIME ZONE 'Europe/Zurich'
) AS "date",
EXTRACT(
'hour'
FROM
"count_detail"."timestamp" AT TIME ZONE 'Europe/Zurich'
) AS "hour",
SUM("count_detail"."times") AS "thm"
FROM
"count_detail"
INNER JOIN "lane" ON ("count_detail"."id_lane" = "lane"."id")
WHERE
(
"count_detail"."id_category" IS NOT NULL
AND "lane"."id_section" = 53326880
AND "count_detail"."timestamp" >= 2021 -01 -01 00 :00 :00 + 01 :00
AND "count_detail"."timestamp" < 2022 -01 -01 00 :00 :00 + 01 :00
AND "lane"."direction" = 2
)
GROUP BY
DATE_TRUNC(
'day',
"count_detail"."timestamp" AT TIME ZONE 'Europe/Zurich'
),
EXTRACT(
'hour'
FROM
"count_detail"."timestamp" AT TIME ZONE 'Europe/Zurich'
),
"count_detail"."import_status"
ORDER BY
"date" ASC,
"hour" ASC |
Afin qu'elle soit valide, j'ai dû modifier la clause WHERE ainsi:
La requête ne retourne rien |
Une remarque:
Mais dans la requête il n'y a pas de calcul de moyenne, c'est le trafic horaire constaté |
Encore une remarque: |
Ah voila qui est intéressant! Le code original, dans la fonction |
…y reports based corresponding to many sections
c202b66
to
a369037
Compare
2d61de0
to
674f440
Compare
This PR: