Skip to content

Commit b9e49d0

Browse files
committed
update pfas annuel
1 parent 0ac21cb commit b9e49d0

File tree

3 files changed

+78
-89
lines changed

3 files changed

+78
-89
lines changed

dbt_/models/intermediate/pfas/_int__pfas_models.yml

Lines changed: 43 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -49,57 +49,53 @@ models:
4949

5050
- name: int__resultats_pfas_udi_annuel
5151
description: >
52-
Bilan annuel des prélèvements d’eau potable pour les PFAS à l’échelle des UDI (Unités de distribution d’eau).
53-
Ce modèle agrège les résultats des prélèvements d’une année donnée en identifiant la fréquence de dépassement
54-
de la limite règlementaire, et indique si la limite sanitaire a été depassée au moins une fois ou non.
52+
Bilan annuel des prélèvements d’eau potable pour les PFAS à l’échelle des UDI (Unités de distribution d’eau).
53+
Ce modèle agrège les résultats des prélèvements d’une année donnée en identifiant la fréquence de dépassement
54+
de la limite règlementaire, et indique si la limite sanitaire a été depassée au moins une fois ou non.
5555
columns:
56-
- name: cdreseau
57-
description: "Code de l’unité de distribution d’eau (UDI)."
58-
tests:
59-
- not_null
56+
- name: cdreseau
57+
description: "Code de l’unité de distribution d’eau (UDI)."
58+
tests:
59+
- not_null
6060

61-
- name: annee
62-
description: "Année du prélèvement (extraite de la colonne 'de_partition')."
63-
type: SMALLINT
64-
tests:
65-
- not_null
61+
- name: annee
62+
description: "Année du prélèvement (extraite de la colonne 'de_partition')."
63+
type: SMALLINT
64+
tests:
65+
- not_null
6666

67-
- name: categorie
68-
description: "Catégorie du paramètre analysé (ici, toujours 'pfas')."
69-
type: VARCHAR
70-
tests:
71-
- accepted_values:
72-
values: ["pfas"]
67+
- name: categorie
68+
description: "Catégorie du paramètre analysé (ici, toujours 'pfas')."
69+
type: VARCHAR
70+
tests:
71+
- accepted_values:
72+
values: ["pfas"]
7373

74-
- name: periode
75-
description: "Période d’analyse, définie sous la forme 'bilan_annuel_<année>'."
76-
type: VARCHAR
77-
tests:
78-
- not_null
79-
- dbt_utils.expression_is_true:
80-
expression: "LIKE 'bilan_annuel%'"
74+
- name: periode
75+
description: "Période d’analyse, définie sous la forme 'bilan_annuel_<année>'."
76+
type: VARCHAR
77+
tests:
78+
- not_null
79+
- dbt_utils.expression_is_true:
80+
expression: "LIKE 'bilan_annuel%'"
8181

82-
- name: nb_prelevements
83-
description: "Nombre total de prélèvements effectués dans l’année."
84-
type: INTEGER
85-
tests:
86-
- not_null
82+
- name: nb_prelevements
83+
description: "Nombre total de prélèvements effectués dans l’année."
84+
type: INTEGER
85+
tests:
86+
- not_null
8787

88-
- name: ratio_depassements_limite_reg
89-
description: "Ratio des prélèvements avec dépassement de la limite règlementaire (SPFAS >= 0.1 µg/L)."
90-
type: FLOAT
91-
tests:
92-
- not_null
93-
- dbt_expectations.expect_column_values_to_be_between:
94-
min_value: 0
95-
max_value: 1
88+
- name: ratio_limite_qualite
89+
description: "Ratio des prélèvements avec dépassement de la limite règlementaire (SPFAS >= 0.1 µg/L)."
90+
type: FLOAT
91+
tests:
92+
- not_null
93+
- dbt_expectations.expect_column_values_to_be_between:
94+
min_value: 0
95+
max_value: 1
9696

97-
- name: resultat_limite_sanitaire
98-
description: "Indique si au moins un dépassement de limite sanitaire a été observé dans l'année."
99-
type: VARCHAR
100-
tests:
101-
- accepted_values:
102-
values:
103-
- aucun_pfas_sup_valeur_sanitaire
104-
- min_1_pfas_sup_valeur_sanitaire
105-
97+
- name: nb_sup_valeur_sanitaire
98+
description: "Indique le nombre de dépassement de limite sanitaire observé dans l'année."
99+
type: INTEGER
100+
tests:
101+
- not_null

dbt_/models/intermediate/pfas/int__resultats_pfas_udi_annuel.sql

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,20 @@ pfas_results_udi_agg AS (
2727
) AS sum_20_pfas,
2828
COUNT(
2929
DISTINCT CASE
30-
WHEN cdparametresiseeaux = 'SPFAS' THEN cdparametresiseeaux
30+
WHEN cdparametresiseeaux = 'SPFAS' THEN referenceprel
3131
END
32-
) AS is_20_pfas,
32+
) AS count_20_pfas,
3333
-- On check si la somme des 20 PFAS est supérieure
3434
-- à la limite reglementaire
35-
COUNT(
36-
DISTINCT CASE
35+
MAX(
36+
CASE
3737
WHEN
38-
(
39-
CASE
40-
WHEN
41-
cdparametresiseeaux = 'SPFAS'
42-
THEN valtraduite
43-
ELSE 0
44-
END
45-
)
46-
>= limite_qualite
47-
THEN cdparametresiseeaux
38+
cdparametresiseeaux = 'SPFAS'
39+
AND limite_qualite IS NOT NULL
40+
AND valtraduite IS NOT NULL
41+
AND valtraduite >= limite_qualite
42+
THEN 1
43+
ELSE 0
4844
END
4945
) AS sum_20_pfas_above_limit,
5046
COUNT(
@@ -59,7 +55,7 @@ pfas_results_udi_agg AS (
5955
FROM pfas_prels
6056
GROUP BY referenceprel, cdreseau, annee
6157
-- On drop les très rares cas où il n'y a pas la somme des 20 PFAS
62-
HAVING is_20_pfas = 1
58+
HAVING count_20_pfas = 1
6359
)
6460

6561
SELECT
@@ -72,15 +68,7 @@ SELECT
7268
SUM(CASE WHEN sum_20_pfas_above_limit = 1 THEN 1 ELSE 0 END)
7369
/
7470
COUNT(DISTINCT referenceprel)
75-
), 2) AS ratio_depassements_limite_reg,
76-
(CASE
77-
WHEN
78-
MAX(nb_pfas_above_vs) > 0
79-
THEN 'min_1_pfas_sup_valeur_sanitaire'
80-
WHEN
81-
MAX(nb_pfas_above_vs) = 0
82-
THEN 'aucun_pfas_sup_valeur_sanitaire'
83-
ELSE 'erreur'
84-
END) AS resultat_limite_sanitaire
71+
), 2) AS ratio_limite_qualite,
72+
SUM(nb_pfas_above_vs) AS nb_sup_valeur_sanitaire
8573
FROM pfas_results_udi_agg
8674
GROUP BY cdreseau, annee

dbt_/tests/test_pfas_results.sql

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ SELECT
44
cdreseau,
55
categorie,
66
resultat,
7-
0 AS ratio_depassements_limite_reg,
8-
0 AS resultat_limite_sanitaire
7+
0 AS ratio_limite_qualite,
8+
0 AS nb_sup_valeur_sanitaire
99
FROM
1010
{{ ref('int__resultats_pfas_udi_dernier') }}
1111
WHERE
@@ -64,39 +64,44 @@ SELECT
6464
cdreseau,
6565
categorie,
6666
'' AS resultat,
67-
ratio_depassements_limite_reg,
68-
resultat_limite_sanitaire
67+
ratio_limite_qualite,
68+
nb_sup_valeur_sanitaire
6969
FROM
70-
int__resultats_pfas_udi_annuel
70+
{{ ref('int__resultats_pfas_udi_annuel') }}
7171
WHERE
7272
(
7373
cdreseau = '001000356'
74-
AND categorie = 'pfas'
7574
AND annee = '2025'
76-
AND ratio_depassements_limite_reg = 0
77-
AND resultat_limite_sanitaire != 'aucun_pfas_sup_valeur_sanitaire'
75+
AND
76+
(
77+
ratio_limite_qualite != 0
78+
OR nb_sup_valeur_sanitaire != 0
79+
)
7880
)
7981
OR
8082
(
8183
cdreseau = '074000043'
82-
AND categorie = 'pfas'
8384
AND annee = '2022'
84-
AND ratio_depassements_limite_reg = 0.1
85-
AND resultat_limite_sanitaire != 'min_1_pfas_sup_valeur_sanitaire'
85+
AND (
86+
ratio_limite_qualite != 0.1
87+
OR nb_sup_valeur_sanitaire != 2
88+
)
8689
)
8790
OR
8891
(
8992
cdreseau = '030000200'
90-
AND categorie = 'pfas'
9193
AND annee = '2024'
92-
AND resultat_limite_sanitaire = 'aucun_pfas_sup_valeur_sanitaire'
93-
AND ratio_depassements_limite_reg != 0.25
94+
AND (
95+
nb_sup_valeur_sanitaire != 0
96+
OR ratio_limite_qualite != 0.25
97+
)
9498
)
9599
OR
96100
(
97101
cdreseau = '069000025'
98-
AND categorie = 'pfas'
99102
AND annee IN ('2022', '2023', '2024')
100-
AND resultat_limite_sanitaire = 'aucun_pfas_sup_valeur_sanitaire'
101-
AND ratio_depassements_limite_reg != 0
103+
AND (
104+
nb_sup_valeur_sanitaire != 0
105+
OR ratio_limite_qualite != 0
106+
)
102107
)

0 commit comments

Comments
 (0)