Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • dreal-pdl/csd/eau-milieux-aquatiques/data.nitrates
1 result
Show changes
Commits on Source (7)
Showing with 69 additions and 1029 deletions
......@@ -14,7 +14,7 @@ VignetteBuilder:
knitr
Remotes:
git::https://gitlab-forge.din.developpement-durable.gouv.fr/dreal-pdl/csd/datalibaba.git
Config/fusen/version: 0.7.0
Config/fusen/version: 0.7.1
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.2
version: "v0_20" # Version actuelle des lots de données
version: "v0_21" # Version actuelle des lots de données
last_year: 2023 # Dernier millésime à importer
# Chemin vers le lot de données ARS
filepath_data_ars: "T:\\datalab\\SRNP_DEMA_SI_EAU\\NITRATES\\DONNEES_CLIENT\\SOURCES\\ARS\\2024_06\\Nitrates 2023 pour DREAL EPNT4 2024-05-31.xlsx"
Version: 1.0
ProjectId: c4e52bd2-ca70-46a6-9ee2-8a95d0580352
RestoreWorkspace: No
SaveWorkspace: No
......
......@@ -228,3 +228,4 @@ flat_list_existing_tables.Rmd:
document: true
overwrite: ask
clean: ask
codecov: false
......@@ -148,6 +148,11 @@ nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
```
```{r change_type_resultat_analyse, eval=FALSE}
# Modifier le type de la variable resultat_analyse
nitrate_prelevement_analyse_ars$resultat_analyse <- as.numeric(nitrate_prelevement_analyse_ars$resultat_analyse)
```
# Données Hub'eau ESO
## Chargement des prélèvements Hub'eau ESO
......@@ -353,7 +358,8 @@ datalibaba::poster_data(data = nitrate_prelevement_analyse,
## Renommage de l'identifiant
```{r rename_id_row__, eval=FALSE}
collectr::rename_field(database = "si_eau",
collectr::rename_field(host = Sys.getenv("server"),
database = "si_eau",
schema = "nitrates",
table = glue::glue("nitrate_prelevement_analyse_", version),
old_field = "id_row__",
......@@ -378,27 +384,26 @@ table_comment <- glue::glue("COMMENT ON TABLE nitrates.nitrate_prelevement_analy
DBI::dbExecute(connexion, table_comment)
# Ajouter les commentaires sur chaque champ
comments_sql <- glue::glue(
"COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_prelevement_analyse IS 'Identifiant du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_intervenant IS 'Identifiant de l''intervenant';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.source IS 'Source de la donn\u00e9e';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_reseau IS 'Identifiant du r\u00e9seau';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_station IS 'Identifiant de la station';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_prelevement IS 'Date du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.heure_prelevement IS 'Heure du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_support IS 'Code du support de pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.nature_eau IS 'Nature de l''eau du pr\u00e9l\u00e8vement (ESO/ESU)';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_usage IS 'Code de l''usage du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_prelevement_motif IS 'Code du motif du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_parametre IS 'Identifiant du param\u00e8tre analys\u00e9';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_fraction_analysee IS 'Identifiant de la fraction analys\u00e9e';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_analyse IS 'Date de l''analyse';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.resultat_analyse IS 'R\u00e9sultat de l''analyse';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_remarque IS 'Code validant la donn\u00e9e';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_detection IS 'Limite de d\u00e9tection';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_quantification IS 'Limite de quantification';"
comments_sql <- c(
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_prelevement_analyse IS 'Identifiant du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_intervenant IS 'Identifiant de l''intervenant';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.source IS 'Source de la donnée';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_reseau IS 'Identifiant du réseau';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_station IS 'Identifiant de la station';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_prelevement IS 'Date du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.heure_prelevement IS 'Heure du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_support IS 'Code du support de prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.nature_eau IS 'Nature de l''eau du prélèvement (ESO/ESU)';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_usage IS 'Code de l''usage du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_prelevement_motif IS 'Code du motif du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_parametre IS 'Identifiant du paramètre analysé';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_fraction_analysee IS 'Identifiant de la fraction analysée';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_analyse IS 'Date de l''analyse';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.resultat_analyse IS 'Résultat de l''analyse';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_remarque IS 'Code validant la donnée';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_detection IS 'Limite de détection';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_quantification IS 'Limite de quantification';")
)
# Exécuter chaque commande SQL
for (sql in c(comments_sql)) {
......
---
title: "Insertion des pr\u00e9l\u00e8vements et analyses ARS"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(yaml)
library(datalibaba)
library(dplyr)
library(stringr)
library(glue)
library(DBI)
library(RPostgres)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
```{r config, eval=FALSE}
# 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 :
```{r load_nitrate_data_analyse_ars, eval=FALSE}
nitrate_data_analyse_ars <- datalibaba::importer_data(
table = "nitrate_data_analyse_ars",
schema = "nitrates",
db = "si_eau",
user = "admin"
)
```
La table des stations est chargée afin de remplacer ultérieurement le code SISE-EAUX par le code BSS pour les prélèvements ESO :
```{r load-nitrate_station_eso, eval=FALSE}
r_station_mesure_p_2024_r52 <- datalibaba::importer_data(
table = "r_station_mesure_p_2024_r52",
schema = "stations",
db = "si_eau",
user = "admin"
)
```
## Consolidation des données ARS
On ajoute les variables `source` et `code_support` :
```{r add_source_code_support, eval=FALSE}
# Ajouter les variables source et code_support
nitrate_prelevement_analyse_ars <- nitrate_data_analyse_ars |>
dplyr::mutate(
source = "ARS",
code_reseau = NA,
code_support = 3,
code_fraction_analysee = NA,
limite_detection = NA,
)
```
On remplace "h" par ":" dans la variable `plv_heure` :
```{r replace_in_plv_heure, eval=FALSE}
# Remplacer "h" par ":" dans la colonne plv_heure
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(plv_heure = stringr::str_replace_all(plv_heure, "h", ":"))
```
On supprime les enregistrements correspondants à des totaux :
```{r filter_param_nom_ars, eval=FALSE}
# Supprimer les lignes ne correspondant pas à une analyse
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::filter(!stringr::str_starts(param_nom, "Total"))
```
On remplace les chaînes de caractère par NA dans la variable `ana_param_alpha_resultat` :
```{r replace_strings_with_na, eval=FALSE}
# Remplacer chaînes de caractère dans la colonne ana_param_alpha_resultat
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(
ana_param_alpha_resultat = dplyr::case_when(
ana_param_alpha_resultat %in% c("TRACES", "PRESENCE", "SEUIL", "ILLISIBL", "N.M.", "O", "?", ",", " ") ~ NA_character_,
TRUE ~ ana_param_alpha_resultat
)
)
```
On remplace des valeurs dans ana_param_alpha_resultat et param_code:
```{r replace_dot_ana_param_alpha_resultat, eval=FALSE}
# Remplacer les valeurs dans les colonnes ana_param_alpha_resultat et param_code
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(
ana_param_alpha_resultat = stringr::str_replace(ana_param_alpha_resultat, "\\,", "."),
param_code = stringr::str_replace(param_code, "NO3", "1340")
)
```
On affecte le code_remarque et la valeur des variables resultat_analyse et limite_quantification :
```{r mutate_from_ana_param_alpha_resultat, eval=FALSE}
# Ajouter les colonnes code_remarque, resultat_analyse et limite_quantification
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(
# Ajout de la colonne code_remarque selon la condition spécifiée
code_remarque = dplyr::case_when(
stringr::str_starts(ana_param_alpha_resultat, "<") ~ 10,
TRUE ~ 1
),
# Renommage conditionnel des colonnes
resultat_analyse = dplyr::case_when(
stringr::str_starts(ana_param_alpha_resultat, "<") ~ as.character(ana_param_valeur_traduite),
TRUE ~ ana_param_alpha_resultat
),
limite_quantification = dplyr::case_when(
stringr::str_starts(ana_param_alpha_resultat, "<") ~ ana_param_alpha_resultat,
TRUE ~ NA_character_ # Utilisation de NA pour les valeurs non pertinentes
)
)
```
On supprime "<" dans la variable `limite_quantification` :
```{r replace_in_plv_heure, eval=FALSE}
# Remplacer "h" par ":" dans la colonne plv_heure
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(limite_quantification = stringr::str_replace_all(limite_quantification, "<", ""))
```
On sélectionne les champs utiles à la table des prélèvements et analyse :
```{r select_variables, eval=FALSE}
# Sélectionner les variables
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::select(code_intervenant = geo_dept_ddass_gest_code,
source,
code_reseau,
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,
date_analyse = anl_date_fin_analyse,
resultat_analyse,
code_parametre = param_code,
code_fraction_analysee,
code_remarque,
limite_detection,
limite_quantification)
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_insert_data_ars.Rmd", vignette_name = "Insertion des pr\u00e9l\u00e8vements et analyses ARS")
```
---
title: "Insertion des pr\u00e9l\u00e8vements et analyses Hubeau ESO"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(yaml)
library(datalibaba)
library(dplyr)
library(stringr)
library(glue)
library(DBI)
library(RPostgres)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
```{r config, eval=FALSE}
# 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 :
```{r load_nitrate_qualite_nappes_analyses, eval=FALSE}
# Charger la table `qualite_nappes_eau_souterraine.nitrate_qualite_nappes_analyses`
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 :
```{r select_code_producteur_hubeau_eso, eval=FALSE}
# Filtrer pour exclure les données ARS
nitrate_prelevement_analyse_hubeau_eso <- 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` :
```{r add_source_code_support_hubeau_eso, eval=FALSE}
# Ajouter les variables source, code_support et nature_eau
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::mutate(
source = "ADES",
heure_prelevement = NA,
code_support = 3,
nature_eau = "ESO",
id_usage = NA,
id_prelevement_motif = NA,
date_analyse = NA)
```
On remplace des valeurs dans limite_detection et limite_quantification :
```{r replace_dot_limite_detection, eval=FALSE}
# Remplacer les valeurs dans les colonnes limite_detection et limite_quantification
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::mutate(
resultat = stringr::str_replace(resultat, "\\,", "."),
limite_detection = stringr::str_replace(limite_detection, "\\,", "."),
limite_quantification = stringr::str_replace(limite_quantification, "\\,", ".")
)
```
On modifie le type des variables numériques et on les renomme :
```{r change-fieldtypes, eval=FALSE}
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::rename(code_intervenant = code_lieu_analyse,
code_reseau = codes_reseau,
code_station = bss_id,
date_prelevement = date_debut_prelevement
) |>
dplyr::mutate(code_support = as.integer(code_support),
resultat_analyse = as.numeric(resultat),
limite_detection = as.numeric(limite_detection),
limite_quantification = as.numeric(limite_quantification),
code_parametre = as.integer(code_param),
code_fraction_analysee = as.integer(code_fraction),
code_remarque = as.integer(code_remarque_analyse)
)
```
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 (à supprimer ?) :
```{r select_distinct_rows_hubeau_eso, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On sélectionne les champs utiles à la table des prélèvements et analyses :
```{r select_variables_hubeau_eso, eval=FALSE}
# Sélectionner les variables
nitrate_prelevement_analyse_hubeau_eso <-
nitrate_prelevement_analyse_hubeau_eso |>
dplyr::select(code_intervenant,
source,
code_reseau,
code_station,
date_prelevement,
heure_prelevement,
code_support,
nature_eau,
id_usage,
id_prelevement_motif,
date_analyse,
resultat_analyse,
code_parametre,
code_fraction_analysee,
code_remarque,
limite_detection,
limite_quantification)
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_insert_data_hubeau_eso.Rmd", vignette_name = "Insertion des pr\u00e9l\u00e8vements et analyses Hubeau ESO")
```
---
title: "Insertion des pr\u00e9l\u00e8vements et analyses Hubeau ESU"
output: html_document
editor_options:
chunk_output_type: console
---
```{r development, include=FALSE}
library(testthat)
library(yaml)
library(datalibaba)
library(dplyr)
library(stringr)
library(glue)
library(DBI)
library(RPostgres)
```
```{r development-load}
# Load already included functions if relevant
pkgload::load_all(export_all = FALSE)
```
```{r config, eval=FALSE}
# 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 ESU dans la table des prélèvements
## Chargement des prélèvements Hub'eau ESU
La table des données brutes Nitrates Hub'eau ESU est chargée :
```{r load-nitrate_qualite_rivieres_analyse_pc, eval=FALSE}
# Charger la table qualite_nappes_eau_souterraine.nitrate_qualite_rivieres_analyse_pc
nitrate_qualite_rivieres_prelevements <- datalibaba::importer_data(
table = "nitrate_qualite_rivieres_analyse_pc",
schema = "qualite_cours_d_eau",
db = "si_eau",
user = "admin"
)
```
On remplace des valeurs dans `limite_detection` et `limite_quantification` :
```{r replace-dot_limite_detection, eval=FALSE}
# Remplacer les valeurs dans les colonnes limite_detection et limite_quantification
nitrate_prelevement_analyse_hubeau_esu <- nitrate_qualite_rivieres_prelevements |>
dplyr::mutate(
resultat = stringr::str_replace(resultat, "\\,", "."),
limite_detection = stringr::str_replace(limite_detection, "\\,", "."),
limite_quantification = stringr::str_replace(limite_quantification, "\\,", ".")
)
```
On ajoute les variables `source` et `nature_eau` :
```{r add-source_code_support_hubeau_esu, eval=FALSE}
# Ajouter les variables source et nature_eau
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
dplyr::mutate(
source = "Na\u00efades",
heure_prelevement = NA,
code_support = 3,
nature_eau = "ESU",
id_usage = NA,
id_prelevement_motif = NA,
date_analyse = NA)
```
On modifie le type de la variable `code_support` de character en integer
(à supprimer ?) :
```{r change-type_code_support, eval=FALSE}
# Convertir la variable code_support de character en integer
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
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 (à supprimer ?) :
```{r select-distinct-rows_hubeau_esu, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On modifie le type des variables resultat_analyse et limite_quantification :
```{r change-fieldtypes, eval=FALSE}
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
dplyr::mutate(resultat_analyse = as.numeric(resultat),
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),
code_remarque = as.integer(code_remarque)
)
```
On sélectionne les champs utiles à la table des prélèvements et analyses :
```{r select_variables_hubeau_eso, eval=FALSE}
# Sélectionner les variables
nitrate_prelevement_analyse_hubeau_esu <-
nitrate_prelevement_analyse_hubeau_esu|>
dplyr::select(code_intervenant = code_laboratoire,
source,
code_reseau,
code_station,
date_prelevement,
heure_prelevement,
code_support,
nature_eau,
id_usage,
id_prelevement_motif,
date_analyse,
resultat_analyse,
code_parametre,
code_fraction_analysee,
code_remarque,
limite_detection,
limite_quantification)
```
```{r development-inflate, eval=FALSE}
# Run but keep eval=FALSE to avoid infinite loop
# Execute in the console directly
fusen::inflate(flat_file = "dev/flat_insert_data_hubeau_esu.Rmd", vignette_name = "Insertion des pr\u00e9l\u00e8vements et analyses Hubeau ESU")
```
......@@ -6,7 +6,8 @@ editor_options:
---
```{r development, include=FALSE}
library(testthat)
library(datalibaba)
library(dplyr)
```
```{r development-load}
......@@ -36,11 +37,11 @@ schemas_list <- data.frame(datalibaba::list_schemas(connexion))
# Renommer la variable unique en "nom_schema"
schemas_list <- schemas_list |>
rename(nom_schema = names(schemas_list)[1])
dplyr::rename(nom_schema = names(schemas_list)[1])
# Trier le dataframe par la variable nom_schema
schemas_list <- schemas_list |>
arrange(nom_schema)
dplyr::arrange(nom_schema)
```
## Liste des tables du schéma `nitrates`
......@@ -54,12 +55,11 @@ tables_list <- data.frame(datalibaba::list_tables(
# Renommer la variable unique en "nom_table"
tables_list <- tables_list |>
rename(nom_table = names(tables_list)[1])
dplyr::rename(nom_table = names(tables_list)[1])
# Trier le dataframe par la variable nom_table
tables_list <- tables_list |>
arrange(nom_table)
dplyr::arrange(nom_table)
```
```{r development-skeleton-dir, eval=FALSE}
......
---
title: "Insertion des prélèvements et analyses ARS"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Insertion des prélèvements et analyses ARS}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r}
library(data.nitrates)
```
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_data_ars.Rmd: do not edit by hand -->
```{r config}
#| eval: no
# 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 :
```{r load_nitrate_data_analyse_ars}
#| eval: no
nitrate_data_analyse_ars <- datalibaba::importer_data(
table = "nitrate_data_analyse_ars",
schema = "nitrates",
db = "si_eau",
user = "admin"
)
```
La table des stations est chargée afin de remplacer ultérieurement le code SISE-EAUX par le code BSS pour les prélèvements ESO :
```{r load-nitrate_station_eso}
#| eval: no
r_station_mesure_p_2024_r52 <- datalibaba::importer_data(
table = "r_station_mesure_p_2024_r52",
schema = "stations",
db = "si_eau",
user = "admin"
)
```
## Consolidation des données ARS
On ajoute les variables `source` et `code_support` :
```{r add_source_code_support}
#| eval: no
# Ajouter les variables source et code_support
nitrate_prelevement_analyse_ars <- nitrate_data_analyse_ars |>
dplyr::mutate(
source = "ARS",
code_reseau = NA,
code_support = 3,
code_fraction_analysee = NA,
limite_detection = NA,
)
```
On remplace "h" par ":" dans la variable `plv_heure` :
```{r replace_in_plv_heure}
#| eval: no
# Remplacer "h" par ":" dans la colonne plv_heure
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(plv_heure = stringr::str_replace_all(plv_heure, "h", ":"))
```
On supprime les enregistrements correspondants à des totaux :
```{r filter_param_nom_ars}
#| eval: no
# Supprimer les lignes ne correspondant pas à une analyse
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::filter(!stringr::str_starts(param_nom, "Total"))
```
On remplace les chaînes de caractère par NA dans la variable `ana_param_alpha_resultat` :
```{r replace_strings_with_na}
#| eval: no
# Remplacer chaînes de caractère dans la colonne ana_param_alpha_resultat
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(
ana_param_alpha_resultat = dplyr::case_when(
ana_param_alpha_resultat %in% c("TRACES", "PRESENCE", "SEUIL", "ILLISIBL", "N.M.", "O", "?", ",", " ") ~ NA_character_,
TRUE ~ ana_param_alpha_resultat
)
)
```
On remplace des valeurs dans ana_param_alpha_resultat et param_code:
```{r replace_dot_ana_param_alpha_resultat}
#| eval: no
# Remplacer les valeurs dans les colonnes ana_param_alpha_resultat et param_code
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(
ana_param_alpha_resultat = stringr::str_replace(ana_param_alpha_resultat, "\\,", "."),
param_code = stringr::str_replace(param_code, "NO3", "1340")
)
```
On affecte le code_remarque et la valeur des variables resultat_analyse et limite_quantification :
```{r mutate_from_ana_param_alpha_resultat}
#| eval: no
# Ajouter les colonnes code_remarque, resultat_analyse et limite_quantification
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(
# Ajout de la colonne code_remarque selon la condition spécifiée
code_remarque = dplyr::case_when(
stringr::str_starts(ana_param_alpha_resultat, "<") ~ 10,
TRUE ~ 1
),
# Renommage conditionnel des colonnes
resultat_analyse = dplyr::case_when(
stringr::str_starts(ana_param_alpha_resultat, "<") ~ as.character(ana_param_valeur_traduite),
TRUE ~ ana_param_alpha_resultat
),
limite_quantification = dplyr::case_when(
stringr::str_starts(ana_param_alpha_resultat, "<") ~ ana_param_alpha_resultat,
TRUE ~ NA_character_ # Utilisation de NA pour les valeurs non pertinentes
)
)
```
On supprime "<" dans la variable `limite_quantification` :
```{r replace_in_plv_heure-1}
#| eval: no
# Remplacer "h" par ":" dans la colonne plv_heure
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::mutate(limite_quantification = stringr::str_replace_all(limite_quantification, "<", ""))
```
On sélectionne les champs utiles à la table des prélèvements et analyse :
```{r select_variables}
#| eval: no
# Sélectionner les variables
nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
dplyr::select(code_intervenant = geo_dept_ddass_gest_code,
source,
code_reseau,
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,
date_analyse = anl_date_fin_analyse,
resultat_analyse,
code_parametre = param_code,
code_fraction_analysee,
code_remarque,
limite_detection,
limite_quantification)
```
---
title: "Insertion des prélèvements et analyses Hubeau ESO"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Insertion des prélèvements et analyses Hubeau ESO}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r}
library(data.nitrates)
```
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_data_hubeau_eso.Rmd: do not edit by hand -->
```{r config}
#| eval: no
# 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 :
```{r load_nitrate_qualite_nappes_analyses}
#| eval: no
# Charger la table `qualite_nappes_eau_souterraine.nitrate_qualite_nappes_analyses`
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 :
```{r select_code_producteur_hubeau_eso}
#| eval: no
# Filtrer pour exclure les données ARS
nitrate_prelevement_analyse_hubeau_eso <- 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` :
```{r add_source_code_support_hubeau_eso}
#| eval: no
# Ajouter les variables source, code_support et nature_eau
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::mutate(
source = "ADES",
heure_prelevement = NA,
code_support = 3,
nature_eau = "ESO",
id_usage = NA,
id_prelevement_motif = NA,
date_analyse = NA)
```
On remplace des valeurs dans limite_detection et limite_quantification :
```{r replace_dot_limite_detection}
#| eval: no
# Remplacer les valeurs dans les colonnes limite_detection et limite_quantification
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::mutate(
resultat = stringr::str_replace(resultat, "\\,", "."),
limite_detection = stringr::str_replace(limite_detection, "\\,", "."),
limite_quantification = stringr::str_replace(limite_quantification, "\\,", ".")
)
```
On modifie le type des variables numériques et on les renomme :
```{r change-fieldtypes}
#| eval: no
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::rename(code_intervenant = code_lieu_analyse,
code_reseau = codes_reseau,
code_station = bss_id,
date_prelevement = date_debut_prelevement
) |>
dplyr::mutate(code_support = as.integer(code_support),
resultat_analyse = as.numeric(resultat),
limite_detection = as.numeric(limite_detection),
limite_quantification = as.numeric(limite_quantification),
code_parametre = as.integer(code_param),
code_fraction_analysee = as.integer(code_fraction),
code_remarque = as.integer(code_remarque_analyse)
)
```
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 (à supprimer ?) :
```{r select_distinct_rows_hubeau_eso}
#| eval: no
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On sélectionne les champs utiles à la table des prélèvements et analyses :
```{r select_variables_hubeau_eso}
#| eval: no
# Sélectionner les variables
nitrate_prelevement_analyse_hubeau_eso <-
nitrate_prelevement_analyse_hubeau_eso |>
dplyr::select(code_intervenant,
source,
code_reseau,
code_station,
date_prelevement,
heure_prelevement,
code_support,
nature_eau,
id_usage,
id_prelevement_motif,
date_analyse,
resultat_analyse,
code_parametre,
code_fraction_analysee,
code_remarque,
limite_detection,
limite_quantification)
```
---
title: "Insertion des prélèvements et analyses Hubeau ESU"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Insertion des prélèvements et analyses Hubeau ESU}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r}
library(data.nitrates)
```
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_data_hubeau_esu.Rmd: do not edit by hand -->
```{r config}
#| eval: no
# 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 ESU dans la table des prélèvements
## Chargement des prélèvements Hub'eau ESU
La table des données brutes Nitrates Hub'eau ESU est chargée :
```{r load-nitrate_qualite_rivieres_analyse_pc}
#| eval: no
# Charger la table qualite_nappes_eau_souterraine.nitrate_qualite_rivieres_analyse_pc
nitrate_qualite_rivieres_prelevements <- datalibaba::importer_data(
table = "nitrate_qualite_rivieres_analyse_pc",
schema = "qualite_cours_d_eau",
db = "si_eau",
user = "admin"
)
```
On remplace des valeurs dans `limite_detection` et `limite_quantification` :
```{r replace-dot_limite_detection}
#| eval: no
# Remplacer les valeurs dans les colonnes limite_detection et limite_quantification
nitrate_prelevement_analyse_hubeau_esu <- nitrate_qualite_rivieres_prelevements |>
dplyr::mutate(
resultat = stringr::str_replace(resultat, "\\,", "."),
limite_detection = stringr::str_replace(limite_detection, "\\,", "."),
limite_quantification = stringr::str_replace(limite_quantification, "\\,", ".")
)
```
On ajoute les variables `source` et `nature_eau` :
```{r add-source_code_support_hubeau_esu}
#| eval: no
# Ajouter les variables source et nature_eau
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
dplyr::mutate(
source = "Na\u00efades",
heure_prelevement = NA,
code_support = 3,
nature_eau = "ESU",
id_usage = NA,
id_prelevement_motif = NA,
date_analyse = NA)
```
On modifie le type de la variable `code_support` de character en integer
(à supprimer ?) :
```{r change-type_code_support}
#| eval: no
# Convertir la variable code_support de character en integer
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
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 (à supprimer ?) :
```{r select-distinct-rows_hubeau_esu}
#| eval: no
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On modifie le type des variables resultat_analyse et limite_quantification :
```{r change-fieldtypes}
#| eval: no
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
dplyr::mutate(resultat_analyse = as.numeric(resultat),
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),
code_remarque = as.integer(code_remarque)
)
```
On sélectionne les champs utiles à la table des prélèvements et analyses :
```{r select_variables_hubeau_eso}
#| eval: no
# Sélectionner les variables
nitrate_prelevement_analyse_hubeau_esu <-
nitrate_prelevement_analyse_hubeau_esu|>
dplyr::select(code_intervenant = code_laboratoire,
source,
code_reseau,
code_station,
date_prelevement,
heure_prelevement,
code_support,
nature_eau,
id_usage,
id_prelevement_motif,
date_analyse,
resultat_analyse,
code_parametre,
code_fraction_analysee,
code_remarque,
limite_detection,
limite_quantification)
```
......@@ -180,6 +180,14 @@ nitrate_prelevement_analyse_ars <- nitrate_prelevement_analyse_ars |>
```
```{r change_type_resultat_analyse}
#| eval: no
# Modifier le type de la variable resultat_analyse
nitrate_prelevement_analyse_ars$resultat_analyse <- as.numeric(nitrate_prelevement_analyse_ars$resultat_analyse)
```
# Données Hub'eau ESO
## Chargement des prélèvements Hub'eau ESO
......@@ -424,7 +432,8 @@ datalibaba::poster_data(data = nitrate_prelevement_analyse,
```{r rename_id_row__}
#| eval: no
collectr::rename_field(database = "si_eau",
collectr::rename_field(host = Sys.getenv("server"),
database = "si_eau",
schema = "nitrates",
table = glue::glue("nitrate_prelevement_analyse_", version),
old_field = "id_row__",
......@@ -451,27 +460,26 @@ table_comment <- glue::glue("COMMENT ON TABLE nitrates.nitrate_prelevement_analy
DBI::dbExecute(connexion, table_comment)
# Ajouter les commentaires sur chaque champ
comments_sql <- glue::glue(
"COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_prelevement_analyse IS 'Identifiant du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_intervenant IS 'Identifiant de l''intervenant';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.source IS 'Source de la donn\u00e9e';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_reseau IS 'Identifiant du r\u00e9seau';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_station IS 'Identifiant de la station';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_prelevement IS 'Date du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.heure_prelevement IS 'Heure du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_support IS 'Code du support de pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.nature_eau IS 'Nature de l''eau du pr\u00e9l\u00e8vement (ESO/ESU)';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_usage IS 'Code de l''usage du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_prelevement_motif IS 'Code du motif du pr\u00e9l\u00e8vement';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_parametre IS 'Identifiant du param\u00e8tre analys\u00e9';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_fraction_analysee IS 'Identifiant de la fraction analys\u00e9e';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_analyse IS 'Date de l''analyse';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.resultat_analyse IS 'R\u00e9sultat de l''analyse';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_remarque IS 'Code validant la donn\u00e9e';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_detection IS 'Limite de d\u00e9tection';
COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_quantification IS 'Limite de quantification';"
comments_sql <- c(
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_prelevement_analyse IS 'Identifiant du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_intervenant IS 'Identifiant de l''intervenant';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.source IS 'Source de la donnée';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_reseau IS 'Identifiant du réseau';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_station IS 'Identifiant de la station';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_prelevement IS 'Date du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.heure_prelevement IS 'Heure du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_support IS 'Code du support de prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.nature_eau IS 'Nature de l''eau du prélèvement (ESO/ESU)';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_usage IS 'Code de l''usage du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_prelevement_motif IS 'Code du motif du prélèvement';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_parametre IS 'Identifiant du paramètre analysé';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_fraction_analysee IS 'Identifiant de la fraction analysée';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_analyse IS 'Date de l''analyse';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.resultat_analyse IS 'Résultat de l''analyse';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_remarque IS 'Code validant la donnée';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_detection IS 'Limite de détection';"),
glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_quantification IS 'Limite de quantification';")
)
# Exécuter chaque commande SQL
for (sql in c(comments_sql)) {
......
......@@ -48,11 +48,11 @@ schemas_list <- data.frame(datalibaba::list_schemas(connexion))
# Renommer la variable unique en "nom_schema"
schemas_list <- schemas_list |>
rename(nom_schema = names(schemas_list)[1])
dplyr::rename(nom_schema = names(schemas_list)[1])
# Trier le dataframe par la variable nom_schema
schemas_list <- schemas_list |>
arrange(nom_schema)
dplyr::arrange(nom_schema)
```
......@@ -68,12 +68,11 @@ tables_list <- data.frame(datalibaba::list_tables(
# Renommer la variable unique en "nom_table"
tables_list <- tables_list |>
rename(nom_table = names(tables_list)[1])
dplyr::rename(nom_table = names(tables_list)[1])
# Trier le dataframe par la variable nom_table
tables_list <- tables_list |>
arrange(nom_table)
dplyr::arrange(nom_table)
```
......