-
Notifications
You must be signed in to change notification settings - Fork 51
calcul resultats metabolites #162
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
Changes from 6 commits
6b10419
926ace2
7c9b13e
d34b850
5db4297
5ba2779
83da98f
ee1fb46
9b8c4eb
c74e38a
e4c8dcb
5b41a1d
7e5e5e1
6682f04
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,3 @@ | ||
[sqlfluff] | ||
dialect = duckdb | ||
|
||
|
||
dialect = duckdb | ||
max_line_length = 100 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
version: 1 | ||
|
||
models: | ||
- name: int__resultats_metabolite_specifique_udi_dernier | ||
description: "Résultats des derniers prélèvements pour les métabolites de pesticides spécifiques par UDI." | ||
tests: | ||
- dbt_utils.unique_combination_of_columns: | ||
combination_of_columns: | ||
- cdreseau | ||
- categorie | ||
columns: | ||
- name: cdreseau | ||
description: "Code de l'installation (UDI)." | ||
tests: | ||
- not_null | ||
|
||
- name: categorie | ||
description: "Catégorie du métabolite analysé." | ||
tests: | ||
- accepted_values: | ||
values: | ||
- "metabolite_esa_metolachlore" | ||
- "metabolite_chlorothalonil_r471811" | ||
- "metabolite_chloridazone_desphenyl" | ||
- "metabolite_chloridazone_methyl_desphenyl" | ||
- "metabolite_atrazine_desethyl" | ||
|
||
- name: dernier_prel_datetime | ||
description: "Date et heure du dernier prélèvement pris en compte dans l'analyse." | ||
type: TIMESTAMP | ||
tests: | ||
- not_null | ||
- dbt_utils.expression_is_true: | ||
expression: ">= CURRENT_DATE - INTERVAL 1 YEAR" | ||
|
||
- name: resultat | ||
description: "Interprétation du résultat en fonction des seuils sanitaires et des valeurs mesurées." | ||
type: VARCHAR | ||
tests: | ||
- accepted_values: | ||
values: | ||
- "non_quantifie" | ||
- "inf_limite_qualite" | ||
- "sup_limite_qualite" | ||
- "inf_limite_qualite_sup_0_1" | ||
- "sup_valeur_sanitaire" | ||
|
||
- name: periode | ||
description: "Période d'analyse des prélèvements (ici, toujours 'dernier_prel')." | ||
type: VARCHAR | ||
tests: | ||
- accepted_values: | ||
values: ["dernier_prel"] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
-------------------------------------------------------------- | ||
-- Tous les autres métabolites que ceux utilisés - | ||
-- dans int__resultats_metabolite_specifique_udi_dernier.sql - | ||
-------------------------------------------------------------- | ||
|
||
WITH autres_metabolites_results AS ( | ||
SELECT * | ||
jereze marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
FROM {{ ref('int__resultats_udi_communes') }} | ||
WHERE | ||
categorie = 'pesticide' | ||
AND | ||
categorie_2 = 'metabolite' | ||
AND | ||
cdparametresiseeaux NOT IN ( | ||
'ESAMTC', | ||
'MTCESA', | ||
'471811R', | ||
'R471811', | ||
'CLDZ_D', | ||
'CLDZ_MD', | ||
'ADET' | ||
) | ||
AND | ||
-- On garde les prélèvements de moins d'un an | ||
CURRENT_DATE - datetimeprel < INTERVAL 1 YEAR | ||
), | ||
|
||
latest_datetimeprel_by_cdreseau AS ( | ||
|
||
SELECT | ||
cdreseau, | ||
MAX(datetimeprel) AS max_datetimeprel | ||
FROM autres_metabolites_results | ||
GROUP BY cdreseau | ||
), | ||
|
||
latest_referenceprel_results AS ( | ||
SELECT | ||
r.cdreseau, | ||
MAX(r.referenceprel) AS referenceprel | ||
FROM autres_metabolites_results AS r | ||
INNER JOIN latest_datetimeprel_by_cdreseau AS latest | ||
ON | ||
r.cdreseau = latest.cdreseau | ||
AND r.datetimeprel = latest.max_datetimeprel | ||
GROUP BY r.cdreseau | ||
), | ||
|
||
latest_autres_metabolites_results AS ( | ||
-- latest_autres_metabolites_results contient, pour chaque cdreseau, | ||
-- les prélèvements du dernier referenceprel | ||
SELECT r.* | ||
FROM autres_metabolites_results AS r | ||
INNER JOIN latest_referenceprel_results AS latest | ||
ON | ||
r.cdreseau = latest.cdreseau | ||
AND | ||
r.referenceprel = latest.referenceprel | ||
) | ||
|
||
|
||
|
||
SELECT | ||
cdreseau, | ||
'metabolite_divers' AS categorie, | ||
'dernier_prel' AS periode, | ||
MAX(datetimeprel) AS dernier_prel_datetime, | ||
CASE | ||
WHEN | ||
BOOL_AND(valtraduite IS NULL OR valtraduite = 0) | ||
THEN 'aucun_parametre_quantifie' | ||
WHEN BOOL_OR(valeur_sanitaire_1 IS NOT NULL AND valtraduite >= valeur_sanitaire_1) | ||
THEN 'sup_valeur_sanitaire' | ||
WHEN | ||
-- au moins 1 métabolite pertinent ou pertinent par défaut > 0,1 µg/L | ||
BOOL_OR( | ||
CASE | ||
WHEN categorie_3 = 'pertinent' OR categorie_3 = 'pertinent_par_defaut' | ||
THEN valtraduite >= limite_qualite | ||
ELSE FALSE | ||
END | ||
) | ||
OR | ||
-- la somme des métabolites pertinents et pertinents par défaut > 0,5 µg/L | ||
SUM( | ||
CASE | ||
WHEN | ||
categorie_3 = 'pertinent' OR categorie_3 = 'pertinent_par_defaut' | ||
THEN valtraduite | ||
ELSE 0 | ||
END | ||
) >= 0.5 | ||
OR | ||
-- au moins 1 métabolite non pertinent > 0,9 µg/L | ||
BOOL_OR( | ||
CASE | ||
WHEN | ||
categorie_3 = 'non_pertinent' | ||
THEN valtraduite >= 0.9 | ||
ELSE FALSE | ||
END | ||
) | ||
THEN 'sup_limite_qualite' | ||
WHEN | ||
-- tous les métabolites pertinents ou pertinents par défaut < 0,1 µg/L | ||
BOOL_AND( | ||
CASE | ||
WHEN | ||
categorie_3 = 'pertinent' OR categorie_3 = 'pertinent_par_defaut' | ||
THEN valtraduite < limite_qualite | ||
ELSE | ||
-- on ne s'intéresse pas à ces cas, donc on retourne | ||
-- TRUE pour ne pas bloquer la condition BOOL_AND | ||
TRUE | ||
END | ||
) | ||
AND | ||
-- la somme des métabolites pertinents et pertinents par défaut < 0,5 µg/L | ||
SUM( | ||
CASE | ||
WHEN | ||
categorie_3 = 'pertinent' OR categorie_3 = 'pertinent_par_defaut' | ||
THEN valtraduite | ||
ELSE 0 | ||
END | ||
) < 0.5 | ||
AND | ||
-- tous les métabolites non pertinents < 0.9 µg/L | ||
BOOL_AND( | ||
CASE | ||
WHEN | ||
categorie_3 = 'non_pertinent' | ||
THEN valtraduite < 0.9 | ||
ELSE | ||
-- on ne s'intéresse pas à ces cas, donc on retourne | ||
-- TRUE pour ne pas bloquer la condition BOOL_AND | ||
TRUE | ||
END | ||
) | ||
THEN 'inf_limite_qualite' | ||
ELSE 'erreur' | ||
END AS resultat | ||
|
||
FROM latest_autres_metabolites_results | ||
GROUP BY cdreseau |
Uh oh!
There was an error while loading. Please reload this page.