generated from dataforgoodfr/d4g-project-template
-
Notifications
You must be signed in to change notification settings - Fork 51
Analyst/lounes_pfas_udi_annuel #148
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
Merged
Merged
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
da387fa
resultats pfas udi annuel (model, dbt doc, notebook)
LounesAbd a0ae34c
fix dbt tests
LounesAbd 2fc2cc2
Merge remote-tracking branch 'upstream/main' into analyst/lounes_pfas…
LounesAbd b568f05
fix: generic tests on PFAS models profile
LounesAbd 20ce515
Merge remote-tracking branch 'upstream' into analyst/lounes_pfas_udi_…
LounesAbd 0f828ed
Merge remote-tracking branch 'upstream' into analyst/lounes_pfas_udi_…
LounesAbd dda12d2
fix : MAJ du modèle 'int__resultats_pfas_udi_annuel' avec les nouvell…
LounesAbd 3be0b02
Merge remote-tracking branch 'upstream' into analyst/lounes_pfas_udi_…
LounesAbd 4e781d9
Merge remote-tracking branch 'upstream' into analyst/lounes_pfas_udi_…
LounesAbd f506731
Merge remote-tracking branch 'upstream' into analyst/lounes_pfas_udi_…
LounesAbd 8fbc680
fix : smalls fixes on model and dbt profile
LounesAbd 2b385ba
feat : added dbt test file for pfas results
LounesAbd ef0b977
Merge remote-tracking branch 'upstream' into analyst/lounes_pfas_udi_…
LounesAbd 346f2a5
Merge branch 'main' into analyst/lounes_pfas_udi_annuel
jereze 8d344fb
merge tests
jereze 0ac21cb
ajoute test vérification de la couverture des 20 PFAS et 4 PFAS
jereze b9e49d0
update pfas annuel
jereze b9eb481
Merge branch 'main' into analyst/lounes_pfas_udi_annuel
jereze File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
74 changes: 74 additions & 0 deletions
74
dbt_/models/intermediate/pfas/int__resultats_pfas_udi_annuel.sql
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
WITH | ||
pfas_prels AS ( | ||
SELECT DISTINCT | ||
de_partition AS annee, | ||
cdreseau, | ||
referenceprel, | ||
datetimeprel, | ||
cdparametresiseeaux, | ||
limite_qualite, | ||
valeur_sanitaire_1, | ||
valtraduite | ||
FROM | ||
{{ ref('int__resultats_udi_communes') }} | ||
WHERE | ||
categorie = 'pfas' | ||
), | ||
|
||
-- 1 : Agrégation des résultats en une seule ligne par prélèvement / udi / année | ||
pfas_results_udi_agg AS ( | ||
SELECT | ||
referenceprel, | ||
cdreseau, | ||
annee, | ||
-- La somme des 20 PFAS est disponible comme un paramètre (SPFAS) | ||
MAX( | ||
CASE WHEN cdparametresiseeaux = 'SPFAS' THEN valtraduite ELSE 0 END | ||
) AS sum_20_pfas, | ||
COUNT( | ||
DISTINCT CASE | ||
WHEN cdparametresiseeaux = 'SPFAS' THEN referenceprel | ||
END | ||
) AS count_20_pfas, | ||
-- On check si la somme des 20 PFAS est supérieure | ||
-- à la limite reglementaire | ||
MAX( | ||
CASE | ||
WHEN | ||
cdparametresiseeaux = 'SPFAS' | ||
AND limite_qualite IS NOT NULL | ||
AND valtraduite IS NOT NULL | ||
AND valtraduite >= limite_qualite | ||
THEN 1 | ||
ELSE 0 | ||
END | ||
) AS sum_20_pfas_above_limit, | ||
COUNT( | ||
DISTINCT CASE | ||
WHEN | ||
valeur_sanitaire_1 IS NOT NULL | ||
AND valtraduite IS NOT NULL | ||
AND valtraduite >= valeur_sanitaire_1 | ||
THEN cdparametresiseeaux | ||
END | ||
) AS nb_pfas_above_vs | ||
FROM pfas_prels | ||
GROUP BY referenceprel, cdreseau, annee | ||
-- On drop les très rares cas où il n'y a pas la somme des 20 PFAS | ||
HAVING count_20_pfas = 1 | ||
) | ||
|
||
SELECT | ||
LounesAbd marked this conversation as resolved.
Show resolved
Hide resolved
|
||
cdreseau, | ||
annee, | ||
'pfas' AS categorie, | ||
'bilan_annuel_' || annee AS periode, | ||
COUNT(DISTINCT referenceprel) AS nb_prelevements, | ||
ROUND(( | ||
SUM(CASE WHEN sum_20_pfas_above_limit = 1 THEN 1 ELSE 0 END) | ||
/ | ||
COUNT(DISTINCT referenceprel) | ||
), 2) AS ratio_limite_qualite, | ||
SUM(nb_pfas_above_vs) AS nb_sup_valeur_sanitaire | ||
FROM pfas_results_udi_agg | ||
GROUP BY cdreseau, annee |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
-- Dans le calcul des résultats PFAS derniers prélèvements | ||
-- (int__resultats_pfas_udi_dernier.sql), on présuppose que la plupart du temps | ||
-- la somme des 20 PFAS (SPFAS) et la somme des 4 PFAS (PFOA, PFOS, PFNA, | ||
-- PFHXS) sont bien présentes. Ce test permet de vérifier que pour au moins 98% | ||
-- des couples cdreseau/referenceprel c'est le cas. | ||
|
||
WITH yearly_pfas_results AS ( | ||
SELECT | ||
cdreseau, | ||
referenceprel, | ||
-- Vérifie si la somme des 20 PFAS est disponible | ||
COUNT( | ||
DISTINCT CASE | ||
WHEN cdparametresiseeaux = 'SPFAS' THEN cdparametresiseeaux | ||
END | ||
) AS has_sum_20_pfas, | ||
-- Vérifie si tous les 4 PFAS spécifiques sont disponibles | ||
COUNT( | ||
DISTINCT CASE | ||
WHEN | ||
cdparametresiseeaux IN ('PFOA', 'PFOS', 'PFNA', 'PFHXS') | ||
THEN cdparametresiseeaux | ||
END | ||
) AS count_4_pfas | ||
FROM {{ ref('int__resultats_udi_communes') }} | ||
WHERE | ||
categorie = 'pfas' | ||
AND CURRENT_DATE - datetimeprel < INTERVAL 1 YEAR | ||
GROUP BY cdreseau, referenceprel | ||
) | ||
|
||
SELECT | ||
|
||
COUNT(*) AS total_aggregations, | ||
-- Pourcentage d'agrégations avec la somme des 20 PFAS présente | ||
ROUND( | ||
( | ||
SUM(CASE WHEN has_sum_20_pfas = 1 THEN 1 ELSE 0 END) | ||
* 100.0 | ||
/ COUNT(*) | ||
), | ||
2 | ||
) AS pct_with_sum_20_pfas, | ||
-- Pourcentage d'agrégations avec tous les 4 PFAS spécifiques présents | ||
ROUND( | ||
(SUM(CASE WHEN count_4_pfas = 4 THEN 1 ELSE 0 END) * 100.0 / COUNT(*)), | ||
2 | ||
) AS pct_with_all_4_pfas | ||
FROM yearly_pfas_results | ||
|
||
HAVING pct_with_sum_20_pfas < 98 OR pct_with_all_4_pfas < 98 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,107 @@ | ||
SELECT * | ||
FROM {{ ref('int__resultats_pfas_udi_dernier') }} | ||
-- dernier udi | ||
SELECT | ||
'dernier_prel' AS periode, | ||
cdreseau, | ||
categorie, | ||
resultat, | ||
0 AS ratio_limite_qualite, | ||
0 AS nb_sup_valeur_sanitaire | ||
FROM | ||
{{ ref('int__resultats_pfas_udi_dernier') }} | ||
WHERE | ||
( | ||
-- test n°1 | ||
-- test | ||
-- l'UDI 013001457 a un prélevement le 2025-02-19 09:58:00 | ||
-- avec un dépassement de valeur sanitaire pour PFOS | ||
cdreseau = '013001457' | ||
AND dernier_prel_datetime = TIMESTAMP '2025-02-19 09:58:00' | ||
AND resultat != 'sup_valeur_sanitaire' | ||
) | ||
OR ( | ||
-- test n°2 | ||
cdreseau = '003000370' | ||
AND dernier_prel_datetime = TIMESTAMP '2025-02-18 08:45:00' | ||
AND resultat != 'non_quantifie' | ||
) | ||
OR ( | ||
-- test n°3 | ||
cdreseau = '004001032' | ||
AND dernier_prel_datetime = TIMESTAMP '2025-02-28 12:33:00' | ||
AND resultat != 'somme_20pfas_inf_0_1_et_4pfas_inf_0_02' | ||
) | ||
OR ( | ||
-- test n°4 | ||
cdreseau = '008000855' | ||
AND dernier_prel_datetime = TIMESTAMP '2025-02-27 09:24:00' | ||
AND resultat != 'sup_valeur_sanitaire' | ||
) | ||
OR | ||
( | ||
cdreseau = '00800107747' | ||
AND dernier_prel_datetime = '2025-02-27 09:24:00' | ||
AND resultat != 'sup_valeur_sanitaire' | ||
) | ||
OR | ||
( | ||
cdreseau = '011004114' | ||
AND dernier_prel_datetime = '2025-02-24 13:55:00' | ||
AND resultat != 'somme_20pfas_sup_0_1' | ||
) | ||
OR | ||
( | ||
cdreseau = '001000404' | ||
AND dernier_prel_datetime = '2024-11-29 08:08:00' | ||
AND resultat != 'somme_20pfas_inf_0_1_et_4pfas_sup_0_02' | ||
) | ||
OR | ||
( | ||
cdreseau = '001000511' | ||
AND dernier_prel_datetime = '2024-11-28 09:58:00' | ||
AND resultat != 'somme_20pfas_inf_0_1_et_4pfas_inf_0_02' | ||
) | ||
OR | ||
( | ||
cdreseau = '003000370' | ||
AND dernier_prel_datetime = TIMESTAMP '2025-02-18 08:45:00' | ||
AND resultat != 'non_quantifie' | ||
) | ||
UNION ALL | ||
-- annuel udi | ||
SELECT | ||
'bilan_annuel' AS periode, | ||
cdreseau, | ||
categorie, | ||
'' AS resultat, | ||
ratio_limite_qualite, | ||
nb_sup_valeur_sanitaire | ||
FROM | ||
{{ ref('int__resultats_pfas_udi_annuel') }} | ||
WHERE | ||
( | ||
cdreseau = '001000356' | ||
AND annee = '2025' | ||
AND | ||
( | ||
ratio_limite_qualite != 0 | ||
OR nb_sup_valeur_sanitaire != 0 | ||
) | ||
) | ||
OR | ||
( | ||
cdreseau = '074000043' | ||
AND annee = '2022' | ||
AND ( | ||
ratio_limite_qualite != 0.1 | ||
OR nb_sup_valeur_sanitaire != 2 | ||
) | ||
) | ||
OR | ||
( | ||
cdreseau = '030000200' | ||
AND annee = '2024' | ||
AND ( | ||
nb_sup_valeur_sanitaire != 0 | ||
OR ratio_limite_qualite != 0.25 | ||
) | ||
) | ||
OR | ||
( | ||
cdreseau = '069000025' | ||
AND annee IN ('2022', '2023', '2024') | ||
AND ( | ||
nb_sup_valeur_sanitaire != 0 | ||
OR ratio_limite_qualite != 0 | ||
) | ||
) |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.