Skip to content
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
7bbc835
init
simondac Apr 11, 2025
c115571
init
simondac Apr 11, 2025
1b4ea89
delete
simondac Apr 14, 2025
ad7843d
livraison métaux lourds - plomb pour 1ère PR
simondac Apr 14, 2025
3b827e1
suppression ";" qui pose problème
simondac Apr 14, 2025
02814fc
correction resultats_udi_pb_dernier_prel.datetimeprel
simondac Apr 14, 2025
8959dc4
bug accepted_values corrigé
simondac Apr 14, 2025
59f4692
modif marginales
simondac Apr 14, 2025
a93e28a
mise à niveau suite chgt venv
simondac Apr 16, 2025
b06b8a4
correction
simondac Apr 16, 2025
2e60b61
Merge remote-tracking branch 'origin/main' into analyst/simon_met_lou…
simondac Apr 16, 2025
7b6ed93
ajout description et type
simondac Apr 16, 2025
c19ea13
vérif nom categorie suite à merge main dans branche
simondac Apr 16, 2025
07434f6
ajout "ref" dans .SQL
simondac Apr 17, 2025
b05a156
fix ref
simondac Apr 17, 2025
3e6058c
correction >=10 au lieu de >10
simondac Apr 17, 2025
6b9b694
fichier renommé
simondac Apr 18, 2025
5bb0d0b
ajout arsenic dernier prel
simondac Apr 18, 2025
d73f1e6
notebook complété suite à ajout Arsenic et simplification requête der…
simondac Apr 18, 2025
e0909bc
ajout arsenic
simondac Apr 18, 2025
66b043b
correction longueur lignes
simondac Apr 18, 2025
f70d90e
fix reference
simondac Apr 18, 2025
14609c0
fix ref ?
simondac Apr 18, 2025
bdfedaa
suppr unicité cdreseau
simondac Apr 18, 2025
646c366
modif suite review Vinca
simondac Apr 18, 2025
9fdb360
modif model
simondac Apr 18, 2025
ceb3626
modif indentation
simondac Apr 18, 2025
7c0ee63
modif indentation
simondac Apr 18, 2025
6eec0da
ajout commune dernier prel
simondac Apr 18, 2025
20772de
sup_limite_qualite renommé sup_limite_sanitaire
simondac Apr 20, 2025
08d13b2
fix sup_limite_sanitaire
simondac Apr 20, 2025
e24d493
Ajout requêtes prélèvements annuels UDI et Commune
simondac Apr 21, 2025
8d234f4
fix ligne vierge fin script
simondac Apr 21, 2025
1102c4c
ajout annuel dans model yaml
simondac Apr 21, 2025
380f2e3
suppr venv
simondac Apr 21, 2025
1fcd803
venv non indexés
simondac Apr 21, 2025
c26a6a6
venv non indexé
simondac Apr 21, 2025
483c484
modif test unicité
simondac Apr 21, 2025
65a83f1
Merge branch 'main' into analyst/simon_met_lourds_arsenic_pb
simondac Apr 21, 2025
b0e2a90
ajout categorie au test d'unicité sub_indus annuel
simondac Apr 21, 2025
900a936
ajout description et type manquatns
simondac Apr 21, 2025
eeba613
récupération des valeurs des champs limite_qualite et valeur_sanitair…
simondac Apr 23, 2025
68b3a61
Merge branch 'main' into analyst/simon_met_lourds_arsenic_pb
jereze Jul 21, 2025
6ca59e0
update int__resultats_metaux_lourds_*_dernier models
jereze Jul 21, 2025
56c137e
update int__resultats_metaux_lourds_*_annuel models
jereze Jul 21, 2025
b55806b
add metaux_lourds to results
jereze Jul 21, 2025
bd69c85
config website
jereze Jul 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2,824 changes: 2,824 additions & 0 deletions analytics/notebooks/resultats_metaux_lourds.ipynb

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
version: 2

models:
- name: int__resultats_metaux_lourds_udi_dernier
description: >
Resultats Plomb et Arsenic par UDI pour la
temporalité 'derniers prélèvements'
columns:
- name: categorie
tests:
- not_null
- accepted_values:
values:
- metaux_lourds_pb
- metaux_lourds_as

- name: cdreseau
description: "Code de l'installation (unité de distribution)"
type: VARCHAR
tests:
- not_null

- 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: periode
description: "Période de résultat"
type: VARCHAR
tests:
- accepted_values:
values: ["dernier_prel"]

- name: dernier_prel_valeur
description: "Valeur du dernier prélèvement"
type: FLOAT

- name: resultat
description: "Résultat"
type: VARCHAR
tests:
- not_null
- accepted_values:
values:
- aucun_parametre_quantifie
- sup_limite_qualite
- sup_limite_qualite_2036
- inf_5
- as_sup_10_inf_13
- inf_10
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
-- Ici on ne garde que le dernier prélèvement
-- pour chaque UDI dans la dernière année
WITH metaux_lourds_dernier_prel AS (
SELECT
*,
ROW_NUMBER()
OVER (
PARTITION BY
cdreseau,
cdparametresiseeaux
ORDER BY datetimeprel DESC
)
AS row_number
FROM
{{ ref('int__resultats_udi_communes') }}
WHERE
cdparametresiseeaux IN ('PB', 'AS')
AND
-- On garde les prélèvements de moins d'un an
CURRENT_DATE - datetimeprel
< INTERVAL 1 YEAR
)

-- Ici on ne prend que le prélèvement le plus récent (avec row_number = 1)
-- pour chaque type de métaux lourds
SELECT
cdreseau,
datetimeprel AS dernier_prel_datetime,
'dernier_prel' AS periode,
valtraduite AS dernier_prel_valeur,
CASE
WHEN
cdparametresiseeaux = 'PB'
THEN 'metaux_lourds_pb'
WHEN
cdparametresiseeaux = 'AS'
THEN 'metaux_lourds_as'
END AS categorie,
CASE
WHEN
cdparametresiseeaux = 'PB'
AND (
valtraduite IS NULL
OR valtraduite = 0
)
THEN 'aucun_parametre_quantifie'
WHEN
cdparametresiseeaux = 'PB'
AND valtraduite >= 10
THEN 'sup_limite_qualite'
WHEN
cdparametresiseeaux = 'PB'
AND valtraduite >= 5
AND valtraduite < 10
THEN 'sup_limite_qualite_2036'
WHEN
cdparametresiseeaux = 'PB'
AND valtraduite < 5
THEN 'inf_5'
Copy link
Collaborator

@20k-P 20k-P Apr 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inf_limite_qualite ??

WHEN
cdparametresiseeaux = 'AS'
AND (
valtraduite IS NULL
OR valtraduite = 0
)
THEN 'aucun_parametre_quantifie'
WHEN
cdparametresiseeaux = 'AS'
AND valtraduite >= 13
THEN 'sup_limite_qualite'
WHEN
cdparametresiseeaux = 'AS'
AND valtraduite >= 10
AND valtraduite < 13
THEN 'as_sup_10_inf_13'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A discuter mais je pense que Jérémy et les dev web voudront qqch de plus clair.

WHEN
cdparametresiseeaux = 'AS'
AND valtraduite < 10
THEN 'inf_10'
Copy link
Collaborator

@20k-P 20k-P Apr 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inf_limite_qualite ??

ELSE 'erreur'
END AS resultat
FROM
metaux_lourds_dernier_prel
WHERE
row_number = 1
ORDER BY
cdreseau
222 changes: 222 additions & 0 deletions venv/Lib/site-packages/_distutils_hack/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
# don't import any costly modules
import sys
import os


is_pypy = '__pypy__' in sys.builtin_module_names


def warn_distutils_present():
if 'distutils' not in sys.modules:
return
if is_pypy and sys.version_info < (3, 7):
# PyPy for 3.6 unconditionally imports distutils, so bypass the warning
# https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250
return
import warnings

warnings.warn(
"Distutils was imported before Setuptools, but importing Setuptools "
"also replaces the `distutils` module in `sys.modules`. This may lead "
"to undesirable behaviors or errors. To avoid these issues, avoid "
"using distutils directly, ensure that setuptools is installed in the "
"traditional way (e.g. not an editable install), and/or make sure "
"that setuptools is always imported before distutils."
)


def clear_distutils():
if 'distutils' not in sys.modules:
return
import warnings

warnings.warn("Setuptools is replacing distutils.")
mods = [
name
for name in sys.modules
if name == "distutils" or name.startswith("distutils.")
]
for name in mods:
del sys.modules[name]


def enabled():
"""
Allow selection of distutils by environment variable.
"""
which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'local')
return which == 'local'


def ensure_local_distutils():
import importlib

clear_distutils()

# With the DistutilsMetaFinder in place,
# perform an import to cause distutils to be
# loaded from setuptools._distutils. Ref #2906.
with shim():
importlib.import_module('distutils')

# check that submodules load as expected
core = importlib.import_module('distutils.core')
assert '_distutils' in core.__file__, core.__file__
assert 'setuptools._distutils.log' not in sys.modules


def do_override():
"""
Ensure that the local copy of distutils is preferred over stdlib.
See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401
for more motivation.
"""
if enabled():
warn_distutils_present()
ensure_local_distutils()


class _TrivialRe:
def __init__(self, *patterns):
self._patterns = patterns

def match(self, string):
return all(pat in string for pat in self._patterns)


class DistutilsMetaFinder:
def find_spec(self, fullname, path, target=None):
# optimization: only consider top level modules and those
# found in the CPython test suite.
if path is not None and not fullname.startswith('test.'):
return

method_name = 'spec_for_{fullname}'.format(**locals())
method = getattr(self, method_name, lambda: None)
return method()

def spec_for_distutils(self):
if self.is_cpython():
return

import importlib
import importlib.abc
import importlib.util

try:
mod = importlib.import_module('setuptools._distutils')
except Exception:
# There are a couple of cases where setuptools._distutils
# may not be present:
# - An older Setuptools without a local distutils is
# taking precedence. Ref #2957.
# - Path manipulation during sitecustomize removes
# setuptools from the path but only after the hook
# has been loaded. Ref #2980.
# In either case, fall back to stdlib behavior.
return

class DistutilsLoader(importlib.abc.Loader):
def create_module(self, spec):
mod.__name__ = 'distutils'
return mod

def exec_module(self, module):
pass

return importlib.util.spec_from_loader(
'distutils', DistutilsLoader(), origin=mod.__file__
)

@staticmethod
def is_cpython():
"""
Suppress supplying distutils for CPython (build and tests).
Ref #2965 and #3007.
"""
return os.path.isfile('pybuilddir.txt')

def spec_for_pip(self):
"""
Ensure stdlib distutils when running under pip.
See pypa/pip#8761 for rationale.
"""
if self.pip_imported_during_build():
return
clear_distutils()
self.spec_for_distutils = lambda: None

@classmethod
def pip_imported_during_build(cls):
"""
Detect if pip is being imported in a build script. Ref #2355.
"""
import traceback

return any(
cls.frame_file_is_setup(frame) for frame, line in traceback.walk_stack(None)
)

@staticmethod
def frame_file_is_setup(frame):
"""
Return True if the indicated frame suggests a setup.py file.
"""
# some frames may not have __file__ (#2940)
return frame.f_globals.get('__file__', '').endswith('setup.py')

def spec_for_sensitive_tests(self):
"""
Ensure stdlib distutils when running select tests under CPython.
python/cpython#91169
"""
clear_distutils()
self.spec_for_distutils = lambda: None

sensitive_tests = (
[
'test.test_distutils',
'test.test_peg_generator',
'test.test_importlib',
]
if sys.version_info < (3, 10)
else [
'test.test_distutils',
]
)


for name in DistutilsMetaFinder.sensitive_tests:
setattr(
DistutilsMetaFinder,
f'spec_for_{name}',
DistutilsMetaFinder.spec_for_sensitive_tests,
)


DISTUTILS_FINDER = DistutilsMetaFinder()


def add_shim():
DISTUTILS_FINDER in sys.meta_path or insert_shim()


class shim:
def __enter__(self):
insert_shim()

def __exit__(self, exc, value, tb):
remove_shim()


def insert_shim():
sys.meta_path.insert(0, DISTUTILS_FINDER)


def remove_shim():
try:
sys.meta_path.remove(DISTUTILS_FINDER)
except ValueError:
pass
1 change: 1 addition & 0 deletions venv/Lib/site-packages/_distutils_hack/override.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__import__('_distutils_hack').do_override()
1 change: 1 addition & 0 deletions venv/Lib/site-packages/distutils-precedence.pth
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'local') == 'local'; enabled and __import__('_distutils_hack').add_shim();
Loading