Skip to content

Commit 346f2a5

Browse files
committed
Merge branch 'main' into analyst/lounes_pfas_udi_annuel
2 parents ef0b977 + 67947a8 commit 346f2a5

File tree

4 files changed

+54
-54
lines changed

4 files changed

+54
-54
lines changed

dbt_/models/intermediate/pfas/_int__pfas_models.yml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@ models:
44
- name: int__resultats_pfas_udi_dernier
55
description: "Résultats des derniers prélèvements pour les PFAS par UDI. Ce modèle sélectionne le dernier prélèvement pour chaque paramètre PFAS et agrège les résultats pour identifier les dépassements des seuils sanitaires."
66
columns:
7-
- name: referenceprel
8-
description: "Référence unique du prélèvement."
9-
tests:
10-
- not_null
11-
127
- name: cdreseau
138
description: "Code de l'installation (UDI)."
149
tests:
@@ -35,11 +30,11 @@ models:
3530
tests:
3631
- accepted_values:
3732
values:
38-
- "aucun_parametre_quantifie"
33+
- "non_quantifie"
3934
- "somme_20pfas_inf_0_1_et_4pfas_inf_0_02"
4035
- "somme_20pfas_inf_0_1_et_4pfas_sup_0_02"
4136
- "somme_20pfas_sup_0_1"
42-
- "un_pfas_sup_valeur_sanitaire"
37+
- "sup_valeur_sanitaire"
4338

4439
- name: periode
4540
description: "Période d'analyse des prélèvements (ici, toujours 'dernier_prel')."
Lines changed: 21 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
WITH latest_pfas_results AS (
22
SELECT
3-
*,
3+
cdreseau,
4+
referenceprel,
5+
categorie,
6+
cdparametresiseeaux,
7+
datetimeprel,
8+
limite_qualite,
9+
valeur_sanitaire_1,
10+
valtraduite,
411
ROW_NUMBER() OVER (
512
PARTITION BY cdreseau, cdparametresiseeaux
613
ORDER BY datetimeprel DESC
@@ -13,37 +20,12 @@ WITH latest_pfas_results AS (
1320
CURRENT_DATE - datetimeprel < INTERVAL 1 YEAR
1421
),
1522

16-
valeurs_sanitaires (cdparametresiseeaux, valeur_sanitaire) AS (
17-
SELECT * FROM (
18-
VALUES
19-
('PFOA', 0.075),
20-
('PFHPA', 0.075),
21-
('PFHXA', 960),
22-
('PFPEA', 960),
23-
('PFBA', 72),
24-
('PFBS', 240),
25-
('PFOS', 0.18),
26-
('PFHXS', 12)
27-
-- TODO : vérifier unicité de cdparametresiseeaux
28-
)
29-
),
30-
31-
latest_pfas_results_with_valeurs_sanitaires AS (
32-
SELECT
33-
r.*,
34-
vs.valeur_sanitaire
35-
FROM latest_pfas_results AS r
36-
LEFT JOIN valeurs_sanitaires AS vs
37-
ON r.cdparametresiseeaux = vs.cdparametresiseeaux
38-
WHERE r.row_number = 1
39-
),
40-
4123
aggregated_results AS (
4224
SELECT
4325
referenceprel,
4426
cdreseau,
45-
MIN(datetimeprel) AS datetimeprel,
4627
COUNT(DISTINCT cdparametresiseeaux) AS nb_parametres,
28+
MAX(datetimeprel) AS datetimeprel,
4729
-- La somme des 20 PFAS est disponible comme un paramètre (SPFAS)
4830
MAX(
4931
CASE WHEN cdparametresiseeaux = 'SPFAS' THEN valtraduite ELSE 0 END
@@ -74,9 +56,9 @@ aggregated_results AS (
7456
COUNT(
7557
DISTINCT CASE
7658
WHEN
77-
valeur_sanitaire IS NOT NULL
59+
valeur_sanitaire_1 IS NOT NULL
7860
AND valtraduite IS NOT NULL
79-
AND valtraduite >= valeur_sanitaire
61+
AND valtraduite >= valeur_sanitaire_1
8062
THEN cdparametresiseeaux
8163
END
8264
) AS nb_pfas_above_limit,
@@ -85,34 +67,35 @@ aggregated_results AS (
8567
WHEN valtraduite != 0 THEN cdparametresiseeaux
8668
END
8769
) AS nb_quantified_params
88-
FROM latest_pfas_results_with_valeurs_sanitaires
70+
FROM latest_pfas_results
71+
WHERE row_number = 1 -- On garde seulement le dernier prélèvement
72+
-- pour chaquecouple cdreseau/referenceprel
8973
GROUP BY referenceprel, cdreseau
9074
HAVING
91-
-- On vérifie que la somme des 20 PFAS est bien présente
75+
-- On vérifie que la somme des 20 PFAS est bien présente (>95% des cas)
9276
is_20_pfas = 1
9377
AND
94-
-- On vérifie que la somme des 4 PFAS est bien présente
78+
-- On vérifie que la somme des 4 PFAS est bien présente (>95% des cas)
9579
nb_4_pfas = 4
96-
-- TODO: On pourrait prendre essayer de prendre un autre prélèvement si
97-
-- le dernier n'a pas les 20 PFAS et les 4 PFAS
9880
)
9981

10082
SELECT
101-
referenceprel,
10283
cdreseau,
10384
'pfas' AS categorie,
104-
datetimeprel AS dernier_prel_datetime,
10585
'dernier_prel' AS periode,
86+
datetimeprel AS dernier_prel_datetime,
10687
nb_parametres,
10788
CASE
10889
WHEN
10990
nb_pfas_above_limit > 0
110-
THEN 'un_pfas_sup_valeur_sanitaire'
91+
THEN 'sup_valeur_sanitaire'
11192
WHEN
11293
nb_quantified_params = 0
113-
THEN 'aucun_parametre_quantifie'
94+
THEN 'non_quantifie'
11495
WHEN
11596
sum_20_pfas < 0.1 AND sum_4_pfas < 0.02
97+
-- On laisse les valeurs 0.1 et 0.02 en dur car 0.02 n'est pas
98+
-- dans le fichier de GF. Plus compréhensible comme ça
11699
THEN 'somme_20pfas_inf_0_1_et_4pfas_inf_0_02'
117100
WHEN
118101
sum_20_pfas < 0.1 AND sum_4_pfas >= 0.02
@@ -122,10 +105,3 @@ SELECT
122105
END AS resultat
123106
FROM aggregated_results
124107
ORDER BY datetimeprel DESC
125-
126-
/*
127-
Précisions importantes:
128-
129-
J'ai choisi de mettre ≥ au lieu de > pour les valeurs seuils.
130-
À confirmer avec GF.
131-
*/

dbt_/tests/test_pfas_results.sql

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
SELECT *
2+
FROM {{ ref('int__resultats_pfas_udi_dernier') }}
3+
WHERE
4+
(
5+
-- test n°1
6+
-- l'UDI 013001457 a un prélevement le 2025-02-19 09:58:00
7+
-- avec un dépassement de valeur sanitaire pour PFOS
8+
cdreseau = '013001457'
9+
AND dernier_prel_datetime = TIMESTAMP '2025-02-19 09:58:00'
10+
AND resultat != 'sup_valeur_sanitaire'
11+
)
12+
OR (
13+
-- test n°2
14+
cdreseau = '003000370'
15+
AND dernier_prel_datetime = TIMESTAMP '2025-02-18 08:45:00'
16+
AND resultat != 'non_quantifie'
17+
)
18+
OR (
19+
-- test n°3
20+
cdreseau = '004001032'
21+
AND dernier_prel_datetime = TIMESTAMP '2025-02-28 12:33:00'
22+
AND resultat != 'somme_20pfas_inf_0_1_et_4pfas_inf_0_02'
23+
)
24+
OR (
25+
-- test n°4
26+
cdreseau = '008000855'
27+
AND dernier_prel_datetime = TIMESTAMP '2025-02-27 09:24:00'
28+
AND resultat != 'sup_valeur_sanitaire'
29+
)

webapp/lib/polluants.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ export const availableCategories: ICategory[] = [
9494
sourcesExposition:
9595
"Ustensiles de cuisine, emballages alimentaires, eau potable.",
9696
resultats: {
97-
aucun_parametre_quantifie: {
97+
non_quantifie: {
9898
label: "Aucun paramètre quantifié",
9999
couleur: "#75D3B4",
100100
couleurFond: "#75D3B4",
@@ -121,7 +121,7 @@ export const availableCategories: ICategory[] = [
121121
couleurFond: "#FBBD6C",
122122
picto: null,
123123
},
124-
un_pfas_sup_valeur_sanitaire: {
124+
sup_valeur_sanitaire: {
125125
label: "Au moins un paramètre au-dessus de la limite sanitaire",
126126
couleur: "#FB726C",
127127
couleurFond: "#FB726C",

0 commit comments

Comments
 (0)