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 de l’ARS dans la table des prélèvements

Chargement des données ARS brutes et des stations ESO

La table des données brutes Nitrates de l’ARS est chargée :

nitrate_data_analyse_ars <- datalibaba::importer_data(
  table = "nitrate_data_analyse_ars",
  schema = "nitrates",
  db = "si_eau",
  user = "admin"
)

La table des stations ESO est chargée afin de remplacer ultérieurement le code SISE-EAUX par le code BSS pour les prélèvements ESO :

station_eso <- datalibaba::importer_data(
  table = "station_eso",
  schema = "stations",
  db = "si_eau",
  user = "admin"
)

Consolidation des données ARS

On ajoute les variables source et code_support :

# Ajouter les variables source et code_support
nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
  dplyr::mutate(
    source = "ARS",
    code_support = 3
  )

On remplace “h” par “:” dans la variable plv_heure :

# Remplacer "h" par ":" dans la colonne plv_heure
nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
  dplyr::mutate(plv_heure = stringr::str_replace_all(plv_heure, "h", ":"))

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

# Sélectionner les variables
nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
  dplyr::select(code_intervenant = geo_dept_ddass_gest_code,
                source,
                code_station = ins_code_national,
                date_prelevement = plv_date,
                heure_prelevement = plv_heure,
                code_support,
                nature_eau,
                id_usage = usage,
                id_prelevement_motif = plv_motif)

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

On met à jour le champs code_station avec le code BSS :

nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
  dplyr::left_join(station_eso, by = c("code_station" = "code_sise_eaux"), suffix = c("_ars", "_station_eso")) 

nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
  dplyr::mutate(code_station = ifelse(!is.na(code_station_station_eso), code_station_station_eso, code_station)) |>
  dplyr::select(-code_station_station_eso, -source_station_eso)

On ne conserve que les champs utiles à la table des prélèvements :

nitrate_data_analyse_ars <- nitrate_data_analyse_ars |>
  dplyr::select(code_intervenant,
                source = source_ars,
                code_station,
                date_prelevement,
                heure_prelevement,
                code_support,
                nature_eau,
                id_usage,
                id_prelevement_motif)

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_data_analyse_ars <- add_code_prelevement(
  nitrate_data_analyse_ars, version)

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

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

Insertion des données ARS du nouveau millésime 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_prelevement_ars_", version), 
                                  source_schema = "nitrates", 
                                  target_table = glue::glue("nitrate_prelevement_", version), 
                                  target_schema = "nitrates",
                                  role = "admin")