-
Notifications
You must be signed in to change notification settings - Fork 51
Analyst/vinca nitrates #143
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
Conversation
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (2)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including You can disable this status message by setting the WalkthroughLa modification ajuste le seuil de zoom auquel l’épaisseur de la bordure sur la carte commence à augmenter. Désormais, l’épaisseur reste à 0 pixel jusqu’au niveau de zoom 7 (au lieu de 6), puis elle s’interpole progressivement jusqu’à 2 pixels au niveau de zoom 20. Aucun changement n’a été apporté aux entités exportées ou publiques. Changes
Sequence Diagram(s)sequenceDiagram
participant Utilisateur
participant PollutionMapBase
Utilisateur->>PollutionMapBase: Modifie le niveau de zoom
PollutionMapBase->>PollutionMapBase: Calcule l’épaisseur de la bordure selon le zoom (0 px jusqu’à 7, interpolation jusqu’à 20)
PollutionMapBase-->>Utilisateur: Affiche la carte avec la nouvelle épaisseur de bordure
Possibly related PRs
Poem
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Bonjour @20k-P, Nitrates (en NO3)< 50 mg/L split_nitrites.valtraduite_no3 <0.5 --> si j'ai bien compris cela doit être <50 ![]() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello !
Après revue, j'ai aussi l'impression qu'il manque la condition pour le paramètre 'NO2' (Nitrites) dans le CTE 'split_nitrites'.
=> Ajouter MAX(CASE WHEN last_pvl.cdparametresiseeaux = 'NO2' THEN last_pvl.valtraduite END) AS valtraduite_no2
et les conditions associées.
Autrement je modifierai la première condition qui qualifie en 'non_quantifie' car j'ai l'impression que le CASE WHEN que l'on a actuellement classifie les résultats en 'non_quantifie' même si on a juste une substance en NULL. Exemple: le NO2 est NULL mais NO3 et NO3_NO2 ont des valeurs --> non_quantifie
.
Je propose quelque chose comme :
WHEN COALESCE(split_nitrites.valtraduite_no3, 0) = 0 AND COALESCE(split_nitrites.valtraduite_no3_no2, 0) = 0 AND COALESCE(split_nitrites.valtraduite_no2, 0) = 0 THEN 'non_quantifie'
Dites moi si c'est pertinent ou pas. Peut être que je me trompe sur le fonctionnement du CASE WHEN.
Autrement ça m'a l'air bon :)
Merci @githubzey et @LounesAbd pour les retours très pertinents . 😃 J'ai modifié le SQL et ajouté des checks dans le notebook. J'ai un doute sur la classification dans le cas suivant (on a bien les mesures mais les 3 sont à 0)
--> Est-ce "conforme" ou "non quantifié" ? pour le moment j'ai mis "non quantifié" |
Bon pour moi après 2ème review ! Pour la classification "conforme" vs "non quantifié", ce que je comprends c'est que si c'est "non quantifié" c'est forcément conforme, juste que la substance n'a pas été trouvée malgré sa recherche. Alors que "conforme" c'est si la substance est trouvée mais pas assez pour être "non conforme"... À re-confirmer ! J'ai aussi un doute du coup haha |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pour moi aussi, tout semble bon. Merci
AND split_nitrites.valtraduite_no2 = 0 | ||
AND split_nitrites.valtraduite_no3_no2 = 0 | ||
) | ||
THEN 'non_quantifie' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bonjour,
Après réflexion, j’ai une question concernant la condition
CASE
WHEN
split_nitrites.nb_parametres != 3
OR (
split_nitrites.valtraduite_no3 = 0
AND split_nitrites.valtraduite_no2 = 0
AND split_nitrites.valtraduite_no3_no2 = 0
)
THEN 'non_quantifie'.
Si j’ai bien compris, lorsqu’un prélèvement ne contient pas les trois substances attendues, on le considère comme "non quantifié". Mais pourquoi ne pas vérifier quand même les valeurs des substances disponibles ? Par exemple, si l’une d’elles dépasse son seuil, même si les deux autres sont absentes.
Pour tester cela, j’ai ajouté une condition supplémentaire dans le code suivant sur mon local:
WHEN
split_nitrites.nb_parametres != 3
AND ( split_nitrites.valtraduite_no3 >= 50
OR split_nitrites.valtraduite_no2 >= 0.5
OR split_nitrites.valtraduite_no3_no2 >= 1 )
THEN 'anomalie'
Cependant, aucun cas n’a été détecté comme anomalie.
Je voulais donc mieux comprendre pourquoi on ne tient pas compte des substances disponibles lorsqu’il en manque une ou deux. Merci.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Très bonne question @githubzey ! :)
J'ai considéré que pour split_nitrites.nb_parametres != 3
on ne pouvait jamais avoir 'conforme' car on n'avait pas les données pour les 3 substances.
J'avais donc le choix entre "non conforme" et "non quantifié". Je me suis dit que "non conforme" était un peu dur car en réalité on n'avait pas toutes les informations pour conclure. Mais c'est discutable :)
Ce à quoi il faut faire attention quand la substance n'a pas de données on met 0 dans le max, il faut faire attention de ne pas confondre ce 0 avec un vrai 0.
Et il me semble de manière générale, valtraduite=0
doit être ignoré / considéré comme "non qualifié" (voir ici )
on pourrait essayer de partir sur
CASE
WHEN
split_nitrites.valtraduite_no3 = 0
AND split_nitrites.valtraduite_no2 = 0
AND split_nitrites.valtraduite_no3_no2 = 0
THEN 'non_quantifie'
WHEN
split_nitrites.nb_parametres = 3
AND split_nitrites.valtraduite_no3 < 50
AND split_nitrites.valtraduite_no2 < 0.5
AND split_nitrites.valtraduite_no3_no2 < 1
THEN 'conforme'
WHEN
split_nitrites.valtraduite_no3 >= 50
OR split_nitrites.valtraduite_no2 >= 0.5
OR split_nitrites.valtraduite_no3_no2 >= 1
THEN 'non_conforme'
WHEN
split_nitrites.nb_parametres != 3
AND ( split_nitrites.valtraduite_no3 < 50
OR split_nitrites.valtraduite_no2 < 0.5
OR split_nitrites.valtraduite_no3_no2 < 1 )
THEN 'non_quantifie'
ELSE 'error'
END AS resultat
dbt_/models/intermediate/nitrites/int__resultats_nitrites_udi_dernier.sql
Outdated
Show resolved
Hide resolved
Salut Vinca !
Cet exemple illustre bien, pour NO2, on préférerait sûrement prendre celui d'août et non décembre, afin d'avoir les 3 à la même date.
|
Je comprends ta question mais l'objectif est le dernier prélèvement par UDI.
Je fais un max pour avoir une ligne avec toutes les valeurs de référence pour chaque dernier prélèvement avec le CROSS JOIN.
Je vais regarder ça. Je n'ai pas pensé à inverser les tests. |
MAX( | ||
CASE | ||
WHEN | ||
cdparametresiseeaux = 'NO3' | ||
THEN limite_qualite | ||
END | ||
) AS limite_qualite_no3, | ||
MAX( | ||
CASE | ||
WHEN | ||
cdparametresiseeaux = 'NO3_NO2' | ||
THEN limite_qualite | ||
END | ||
) AS limite_qualite_no3_no2, | ||
MAX( | ||
CASE | ||
WHEN | ||
cdparametresiseeaux = 'NO2' | ||
THEN limite_qualite | ||
END | ||
) AS limite_qualite_no2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello ! Pourquoi est-ce que tu utilises la fonction MAX() ici ? La table 'int__valeurs_de_reference' n'a que des lignes distinctes pour la catégorie 'nitrate'.
Pourquoi ne pas juste selectionner 'cdparametresiseeaux', 'categorie_1' et 'limite_qualite' avec un filtre sur categorie = 'nitrate' ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je crois comprendre... Est-ce que c'est pour uniformiser les noms pour le cross join qui suit dans le CTE d'après ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C'est pour avoir une seule ligne avec les 3 valeurS de référence. Et ensuite les avoir toutes les 3 pour chaque prélèvements avec le cross join. Si tu ne fais pas ça il peut manquer des valeurs et en plus les lignes sont multipliées
C'est ce que j'expliquais dans le commentaire ici
si je fais que categorie = 'nitrate'
j'ai 3 lignes et non une seule.
Si vous avez une meilleure solution, je veux bien essayer
dbt_/models/intermediate/nitrites/int__resultats_nitrites_udi_dernier.sql
Outdated
Show resolved
Hide resolved
dbt_/models/intermediate/nitrites/int__resultats_nitrites_udi_dernier.sql
Outdated
Show resolved
Hide resolved
dbt_/models/intermediate/nitrites/int__resultats_nitrites_udi_dernier.sql
Outdated
Show resolved
Hide resolved
dbt_/models/intermediate/nitrites/int__resultats_nitrites_udi_dernier.sql
Outdated
Show resolved
Hide resolved
Hello @20k-P , merci, c'est bon pour moi le code SQL ! |
Validé sur Slack. Merge 👏 |
Last prélèvement pour les nitrites
Les règles choisies/proposées
Si on a les 3 paramètres disponibles
Si on n'a pas nitrate/50 + nitrites/3 mais qu'on a nitrate et nitrites
==> on le calcule et on applique comme ci-dessus
Update 12/05/2025
Ajout d'une condition sur les dates de prélèvement/mesure
Les règles choisies
Si on a les 3 paramètres disponibles avec moins de 30 jours de différences
Si on n'a pas nitrate/50 + nitrites/3 mais qu'on a nitrate et nitrites
==> on le calcule et on applique comme ci-dessus
Update 14/05/2025
Les règles choisies
Pour le choix du dernier prélèvement (date et id) : on se réfère uniquement à nitrate (no3)
Mais on doit regarder ensuite toutes les données (no3/no2) des prélèvements sélectionnés
Summary by CodeRabbit