Insertion des analyses Hubeau ESO
insertion-des-analyses-hubeau-eso.Rmd
library(data.nitrates)
# Lire le fichier de configuration
config <- yaml::read_yaml("config.yml")
# Accéder à la valeur pour version
version <- config$version
Consolidation et insertion des analyses Hub’eau ESO dans la table des analyses
Chargement des analyses Hub’eau ESO
La table des données brutes Nitrates Hub’eau ESO est chargée :
# Charger la table qualite_nappes_eau_souterraine.nitrate_qualite_nappes_analyses
nitrate_qualite_nappes_analyses <- datalibaba::importer_data(
table = "nitrate_qualite_nappes_analyses",
schema = "qualite_nappes_eau_souterraine",
db = "si_eau",
user = "admin"
)
Filtre par code_producteur pour exclure les données ARS
On sélectionne les code_producteur correspondants aux enregistrements hors données ARS de la région :
Consolidation des données Hub’eau ESO
On remplace des valeurs dans limite_detection et limite_quantification :
# Remplacer les valeurs dans les colonnes limite_detection et limite_quantification
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::mutate(
resultat = stringr::str_replace(resultat, "\\,", "."),
limite_detection = stringr::str_replace(limite_detection, "\\,", "."),
limite_quantification = stringr::str_replace(limite_quantification, "\\,", ".")
)
On sélectionne les champs utiles à la table des analyses :
# Sélectionner les variables
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::select(code_station = bss_id,
code_intervenant = code_lieu_analyse,
date_prelevement = date_debut_prelevement,
date_analyse = date_debut_prelevement,
resultat_analyse = resultat,
code_parametre = code_param,
code_fraction_analysee = code_fraction,
code_remarque = code_remarque_analyse,
limite_detection,
limite_quantification)
On modifie le type des variables numériques :
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::mutate(resultat_analyse = as.numeric(resultat_analyse),
limite_detection = as.numeric(limite_detection),
limite_quantification = as.numeric(limite_quantification),
code_parametre = as.integer(code_parametre),
code_fraction_analysee = as.integer(code_fraction_analysee),
code_remarque = as.integer(code_remarque)
)
Jointure avec la table des prélèvements créée auparavant
La table des prélèvements est chargée :
# Charger la table nitrates.nitrate_prelevement_version
nitrate_prelevement <- datalibaba::importer_data(
table = glue::glue("nitrate_prelevement_", version),
schema = "nitrates",
db = "si_eau",
user = "admin"
)
On dédoublonne les lignes en utilisant les champs
code_station
et date_prelevement
afin de ne
conserver qu’un prélèvement par station et date donnée :
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
On joint le dataframe des prélèvements pour récupérer la variable code_prelevement :
# Joindre les dataframes nitrate_qualite_nappes_analyses et nitrate_prelevement
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::left_join(nitrate_prelevement |>
dplyr::select(code_station, date_prelevement, code_prelevement),
by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement"))
On dédoublonne les lignes en utilisant les champs
code_prelevement
, code_parametre
et
resultat_analyse
afin de ne conserver qu’une analyse :
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::distinct(code_prelevement, code_parametre, resultat_analyse, .keep_all = TRUE)
On ajoute un identifiant unique s’appuyant sur une séquence stockée en base :
# Utiliser la fonction add_code_analyse() avec la version souhaitée
nitrate_qualite_nappes_analyses <- add_code_analyse(
nitrate_qualite_nappes_analyses, version)
# Afficher le dataframe pour vérifier les modifications
print(nitrate_qualite_nappes_analyses)
Chargement en base
On corrige l’ordre des champs les champs utiles à la table des analyses :
# Sélectionner les variables dans l'ordre des champs de la table à alimenter
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::select(code_analyse,
code_intervenant,
code_prelevement,
code_parametre,
code_fraction_analysee,
date_analyse,
resultat_analyse,
code_remarque,
limite_detection,
limite_quantification)
On charge les données consolidées dans un table dédiée :
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_qualite_nappes_analyses,
table = glue::glue("nitrate_analyse_hubeau_eso_", version),
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_analyse",
user = "admin")
Insertion des données Hub’eau ESO en base dans la table globale
On insère enfin les enregistrements de cette table dans la table globale :
# Insérer les données de la table du dernier millésime vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
source_table = glue::glue("nitrate_analyse_hubeau_eso_", version),
source_schema = "nitrates",
target_table = glue::glue("nitrate_analyse_", version),
target_schema = "nitrates",
role = "admin")