Passer au contenu
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 données Hub’eau ESO dans la table des prélèvements

Chargement des prélèvements 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_rivieres_analyse_pc
nitrate_qualite_nappes_prelevements <- 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 :

# Filtrer pour exclure les données ARS
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
  dplyr::filter(!code_producteur %in% c('44','49','53','72','85'))

Consolidation des prélèvements Hub’eau ESO

On ajoute les variables source, code_support et nature_eau :

# Ajouter les variables source, code_support et nature_eau
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
  dplyr::mutate(
    source = "ADES",
    code_support = 3,
    nature_eau = "ESO")

On sélectionne les champs utiles à la table des prélèvements :

# Sélectionner les variables
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
  dplyr::select(source,
                code_reseau = codes_reseau,
                code_station = bss_id,
                date_prelevement = date_debut_prelevement,
                code_support,
                nature_eau)

On modifie le type de la variable code_support de character en integer :

# Convertir la variable code_support de character en integer
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
  dplyr::mutate(code_support = as.integer(code_support))

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_prelevements <- nitrate_qualite_nappes_prelevements |>
  dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)

On ajoute un identifiant unique s’appuyant sur une séquence stockée en base :

# Utiliser la fonction add_code_prelevement() avec la version souhaitée
nitrate_qualite_nappes_prelevements <- add_code_prelevement(
  nitrate_qualite_nappes_prelevements, version)

# Afficher le dataframe pour vérifier les modifications
print(nitrate_qualite_nappes_prelevements)

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_prelevements,
                        table = glue::glue("nitrate_prelevement_hubeau_eso_", version),
                        schema = "nitrates", 
                        db = "si_eau",
                        overwrite = TRUE,
                        pk = "code_prelevement",
                        user = "admin")

Insertion des prélèvements 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 prélèvements Hub'eau ESO vers la table complète
collectr::import_and_merge_tables(database = "si_eau",
                                  source_table = glue::glue("nitrate_prelevement_hubeau_eso_", version),
                                  source_schema = "nitrates", 
                                  target_table = glue::glue("nitrate_prelevement_", version),
                                  target_schema = "nitrates",
                                  role = "admin")