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
Showing
with 1008 additions and 1119 deletions
---
title: "Insertion des pr\u00e9l\u00e8vements 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"
)
```
## Consolidation des prélèvements Hub'eau ESU
On remplace "." par "," dans les variables `limite_detection` et `limite_quantification` :
```{r replace-in_limite_detection, eval=FALSE}
# Remplacer "." par "," dans les colonnes limite_detection et limite_quantification
nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |>
dplyr::mutate(
limite_detection = stringr::str_replace_all(limite_detection, ".", ","),
limite_quantification = stringr::str_replace_all(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_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |>
dplyr::mutate(
source = "Na\u00efades",
nature_eau = "ESU")
```
On sélectionne les champs utiles à la table des prélèvements :
```{r select-variables_hubeau_esu, eval=FALSE}
# Sélectionner les variables
nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |>
dplyr::select(source,
code_reseau,
code_station,
date_prelevement,
heure_prelevement,
code_support,
nature_eau,
commentaire = commentaires_analyse)
```
On modifie le type de la variable `code_support` de character en integer :
```{r change-type_code_support, eval=FALSE}
# Convertir la variable code_support de character en integer
nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_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 :
```{r select-distinct-rows_hubeau_esu, eval=FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_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 :
```{r add_code_prelevement_hubeau_esu, eval=FALSE}
# Utiliser la fonction add_code_prelevement() avec la version souhaitée
nitrate_qualite_rivieres_prelevements <- add_code_prelevement(
nitrate_qualite_rivieres_prelevements, version)
# Afficher le dataframe pour vérifier les modifications
print(nitrate_qualite_rivieres_prelevements)
```
On charge les données consolidées dans une table dédiée :
```{r insert-into_nitrate_prelevement_hubeau_esu, eval=FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_qualite_rivieres_prelevements,
table = glue::glue("nitrate_prelevement_hubeau_esu_", version),
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_prelevement",
user = "admin")
```
# Insertion des prélèvements Hub'eau ESU en base dans la table globale
On insère enfin les enregistrements de cette table dans la table globale :
```{r import_and_merge_tables_hubeau_esu, eval=FALSE}
# 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_hubeau_esu_", version),
source_schema = "nitrates",
target_table = glue::glue("nitrate_prelevement_", version),
target_schema = "nitrates",
role = "admin")
```
```{r development-skeleton-dir, eval=FALSE}
# Créer initialement l'arborescence et des fichiers du template
usethis::use_rmarkdown_template(
template_name = "Insertion des pr\u00e9l\u00e8vements Hubeau ESU",
template_dir = "insertion-des-prelevements-hubeau-esu",
template_description = "Insertion des pr\u00e9l\u00e8vements Hubeau ESU",
template_create_dir = TRUE
)
```
```{r development-skeleton-copy, eval=FALSE}
# Définir les chemins source et destination
source_file <- "dev/flat_insert_hubeau_esu_into_prelevement.Rmd"
destination_dir <- "inst/rmarkdown/templates/insertion-des-prelevements-hubeau-esu/skeleton"
destination_file <- file.path(destination_dir, "skeleton.Rmd")
# Copier et renommer le fichier
file.copy(from = source_file, to = destination_file, overwrite = TRUE)
message("File copied and renamed successfully.")
```
```{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_hubeau_esu_into_prelevement.Rmd", vignette_name = "Insertion des pr\u00e9l\u00e8vements Hubeau ESU")
```
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/add_code_analyse.R
\name{add_code_analyse}
\alias{add_code_analyse}
\title{Ajouter une variable code_analyse au dataframe}
\usage{
add_code_analyse(dataframe, version)
}
\arguments{
\item{dataframe}{Un dataframe contenant les données sur lesquelles ajouter
la variable \code{code_analyse}.}
\item{version}{Une chaîne de caractères représentant la version de la
séquence à utiliser.}
}
\value{
Un dataframe avec une nouvelle colonne \code{code_analyse} contenant
les valeurs de la séquence PostgreSQL.
}
\description{
Cette fonction ajoute une nouvelle variable \code{code_analyse}
au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est
construite en fonction du paramètre \code{version} fourni.
}
\examples{
# Crée un dataframe fictif avec les colonnes nécessaires pour l'exemple
dataframe <- data.frame(
id_prelevement = 1:5,
autre_colonne = sample(letters, 5)
)
# Définir une version pour l'exemple
version <- "v1"
# Utiliser la fonction add_code_analyse() avec la version souhaitée
dataframe <- add_code_analyse(
dataframe, version)
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/add_code_prelevement.R
\name{add_code_prelevement}
\alias{add_code_prelevement}
\title{Ajouter une variable code_prelevement au dataframe}
\usage{
add_code_prelevement(dataframe, version)
}
\arguments{
\item{dataframe}{Un dataframe contenant les données sur lesquelles ajouter
la variable \code{code_prelevement}.}
\item{version}{Une chaîne de caractères représentant la version de la
séquence à utiliser.}
}
\value{
Un dataframe avec une nouvelle colonne \code{code_prelevement} contenant
les valeurs de la séquence PostgreSQL.
}
\description{
Cette fonction ajoute une nouvelle variable \code{code_prelevement}
au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est
construite en fonction du paramètre \code{version} fourni.
}
\examples{
# Crée un dataframe fictif avec les colonnes nécessaires pour l'exemple
dataframe <- data.frame(
id_prelevement = 1:5,
autre_colonne = sample(letters, 5)
)
# Définir une version pour l'exemple
version <- "v1"
# Utiliser la fonction add_code_prelevement() avec la version souhaitée
dataframe <- add_code_prelevement(
dataframe, version)
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/add_code_prelevement_analyse.R
\name{add_code_prelevement_analyse}
\alias{add_code_prelevement_analyse}
\title{Ajouter une variable code_prelevement_analyse au dataframe}
\usage{
add_code_prelevement_analyse(dataframe, version)
}
\arguments{
\item{dataframe}{Un dataframe contenant les données sur lesquelles ajouter
la variable \code{code_prelevement_analyse}.}
\item{version}{Une chaîne de caractères représentant la version de la
séquence à utiliser.}
}
\value{
Un dataframe avec une nouvelle colonne \code{code_prelevement_analyse}
contenant les valeurs de la séquence PostgreSQL.
}
\description{
Cette fonction ajoute une nouvelle variable
\code{code_prelevement_analyse} au dataframe en utilisant une séquence
PostgreSQL dynamique. La séquence est construite en fonction du
paramètre \code{version} fourni.
}
\examples{
# Crée un dataframe fictif avec les colonnes nécessaires pour l'exemple
dataframe <- data.frame(
id_prelevement = 1:5,
autre_colonne = sample(letters, 5)
)
# Définir une version pour l'exemple
version <- "v1"
# Utiliser la fonction add_code_prelevement() avec la version souhaitée
dataframe <- add_code_prelevement_analyse(
dataframe, version)
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/create_nitrate_analyse_table.R
\name{create_nitrate_analyse_table}
\alias{create_nitrate_analyse_table}
\title{Créer une table d'analyses de nitrates}
\usage{
create_nitrate_analyse_table(version, last_year)
}
\arguments{
\item{version}{String. Version de la table (par exemple, 'v1').}
\item{last_year}{Integer. L'année la plus récente incluse dans les données de la table.}
}
\value{
String. Le script SQL utilisé pour créer la table.
}
\description{
Cette fonction crée une table dans une base de données PostgreSQL
pour stocker les informations relatives aux analyses de nitrates, incluant
les contraintes et les séquences nécessaires.
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/create_nitrate_prelevement_table.R
\name{create_nitrate_prelevement_table}
\alias{create_nitrate_prelevement_table}
\title{Créer une table de prélèvements de nitrates}
\usage{
create_nitrate_prelevement_table(version, last_year)
}
\arguments{
\item{version}{String. Version de la table (par exemple, 'v1').}
\item{last_year}{Integer. L'année la plus récente incluse dans les données de la table.}
}
\value{
String. Le script SQL utilisé pour créer la table.
}
\description{
Cette fonction crée une table dans une base de données PostgreSQL
pour stocker les informations relatives aux prélèvements de nitrates,
incluant les contraintes et les séquences nécessaires.
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/create_table_nitrate_prelevement_analyse.R
\name{create_table_nitrate_prelevement_analyse}
\alias{create_table_nitrate_prelevement_analyse}
\title{Créer une table de prélèvements et analyses de nitrates}
\usage{
create_table_nitrate_prelevement_analyse(version, last_year)
}
\arguments{
\item{version}{String. Version de la table (par exemple, 'v1').}
\item{last_year}{Integer. L'année la plus récente incluse dans les données de la table.}
}
\value{
String. Le script SQL utilisé pour créer la table.
}
\description{
Cette fonction crée une table dans une base de données PostgreSQL
pour stocker les informations relatives aux prélèvements et analyses de
nitrates, incluant les contraintes et les séquences nécessaires.
}
---
title: "creation-de-la-table-et-de-la-sequence"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{creation-de-la-table-et-de-la-sequence}
%\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_create_table_sequence.Rmd: do not edit by hand -->
```{r config}
#| eval: no
# Lire le fichier de configuration
config <- yaml::read_yaml("config.yml")
# Accéder aux valeurs pour version et last_year
version <- config$version
last_year <- config$last_year
```
# Présentation
Cette page contient les fonctions permettant :
- de créer en base la table `nitrates.nitrate_prelevement_analyse_version`,
- d'incrémenter la séquence correspondante au moment de l'import des données.
# Création de la table en base
## Création de la table des prélèvements et analyses et ajout des commentaires
Création de la table `nitrates.nitrate_prelevement_version` :
```{r create_create_table_nitrate_prelevement_analyse}
#| eval: no
# Création du script SQL avec la version choisie
sql <- create_table_nitrate_prelevement_analyse(version, last_year)
```
# Incrémentation de la séquence
## Incrémentation de la table des prélèvements et des analyses
La fonction est utilisée au moment d'importer les données des différentes
sources dans la table `nitrates.nitrate_prelevement_analyse_version` :
```{r example_add_code_prelevement_analyse}
#| eval: no
# Crée un dataframe fictif avec les colonnes nécessaires pour l'exemple
dataframe <- data.frame(
id_prelevement = 1:5,
autre_colonne = sample(letters, 5)
)
# Définir une version pour l'exemple
version <- "v1"
# Utiliser la fonction add_code_prelevement() avec la version souhaitée
dataframe <- add_code_prelevement_analyse(
dataframe, version)
```
---
title: "Création des tables et des séquences"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Création des tables et des séquences}
%\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_create_tables_sequences.Rmd: do not edit by hand -->
```{r config}
#| eval: no
# Lire le fichier de configuration
config <- yaml::read_yaml("config.yml")
# Accéder aux valeurs pour version et last_year
version <- config$version
last_year <- config$last_year
```
# Présentation
Cette page contient les fonctions permettant :
- de créer en base les tables `nitrates.nitrate_prelevement_version` et `nitrates.nitrate_analyse_version`,
- d'incrémenter les séquences correspondantes au moment de l'import des données.
# Création des tables en base
## Création de la table des prélèvements et ajout des commentaires
Création de la table `nitrates.nitrate_prelevement_version` :
```{r create_nitrate_prelevement_table_version}
#| eval: no
# Création du script SQL avec la version choisie
sql <- create_nitrate_prelevement_table(version, last_year)
```
## Création de la table des analyses et ajout des commentaires
Création de la table `nitrates.nitrate_analyse_version` :
```{r create_nitrate_analyse_table}
#| eval: no
# Création du script SQL avec la version choisie
sql <- create_nitrate_analyse_table(version, last_year)
```
# Incrémentation des séquences
## Incrémentation de la table des prélèvements
La fonction est utilisée au moment d'importer les données des différentes
sources dans la table `nitrates.nitrate_prelevement_version` :
```{r example_add_code_prelevement}
#| eval: no
# Crée un dataframe fictif avec les colonnes nécessaires pour l'exemple
dataframe <- data.frame(
id_prelevement = 1:5,
autre_colonne = sample(letters, 5)
)
# Définir une version pour l'exemple
version <- "v1"
# Utiliser la fonction add_code_prelevement() avec la version souhaitée
dataframe <- add_code_prelevement(
dataframe, version)
```
## Incrémentation de la table des analyses
La fonction est utilisée au moment d'importer les données des différentes
sources dans la table `nitrates.nitrate_analyse_version` :
On ajoute un identifiant unique s'appuyant sur une séquence stockée en base :
```{r example_add_code_analyse}
#| eval: no
# Crée un dataframe fictif avec les colonnes nécessaires pour l'exemple
dataframe <- data.frame(
id_prelevement = 1:5,
autre_colonne = sample(letters, 5)
)
# Définir une version pour l'exemple
version <- "v1"
# Utiliser la fonction add_code_analyse() avec la version souhaitée
dataframe <- add_code_analyse(
dataframe, version)
```
---
title: "Insertion des analyses Hubeau ESO"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{insertion-des-analyses-hubeau-eso}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r setup}
library(data.nitrates)
```
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_hubeau_eso_into_analyse.Rmd: do not edit by hand -->
```{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 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 :
```{r load-nitrate_qualite_nappes_analyses, eval = FALSE}
# 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 :
```{r select-code_producteur_hubeau_eso, eval = FALSE}
# Filtrer pour exclure les données ARS
nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |>
dplyr::filter(!code_producteur %in% c('44','49','53','72','85'))
```
## Consolidation des données Hub'eau ESO
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_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 :
```{r select-variables-hubeau_eso, eval = FALSE}
# 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 :
```{r change-fieldtypes, eval = FALSE}
# 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 :
```{r load-nitrate_prelevement, eval = FALSE}
# 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 :
```{r select-distinct-rows_hubeau_eso, eval = FALSE}
# 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 :
```{r join-prelevement_hubeau_eso, eval = FALSE}
# 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 :
```{r select-distinct-rows_hubeau_eso_2, eval = FALSE}
# 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 :
```{r add_code_analyse_hubeau_eso, eval = FALSE}
# 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 :
```{r select-variables-hubeau_eso_final, eval = FALSE}
# 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 :
```{r insert-into_nitrate_prelevement_v0_xx, eval = FALSE}
# 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 :
```{r import_and_merge_tables_hubeau_eso, eval = FALSE}
# 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")
```
---
title: "Insertion des analyses Hubeau ESU"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{insertion-des-analyses-hubeau-esu}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r setup}
library(data.nitrates)
```
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_hubeau_esu_into_analyse.Rmd: do not edit by hand -->
```{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 analyses Hub'eau ESU dans la table des analyses
## Chargement des analyses 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_cours_d_eau.nitrate_qualite_rivieres_analyse_pc
nitrate_qualite_rivieres_analyses <- datalibaba::importer_data(
table = "nitrate_qualite_rivieres_analyse_pc",
schema = "qualite_cours_d_eau",
db = "si_eau",
user = "admin"
)
```
## Consolidation des analyses Hub'eau ESU
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_qualite_rivieres_analyses <- nitrate_qualite_rivieres_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 :
```{r select-variables-hubeau_esu, eval = FALSE}
# Sélectionner les variables
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |>
dplyr::select(code_station,
code_intervenant = code_laboratoire,
date_prelevement,
date_analyse,
resultat_analyse = resultat,
code_parametre,
code_fraction_analysee = code_fraction,
code_remarque,
limite_detection,
limite_quantification)
```
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_qualite_rivieres_analyses <- nitrate_qualite_rivieres_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 :
```{r load-nitrate_prelevement, eval = FALSE}
# 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 :
```{r select-distinct-rows_hubeau_esu, eval = FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_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 :
```{r join-prelevement_hubeau_esu, eval = FALSE}
# Joindre les dataframes nitrate_qualite_rivieres_analyses et nitrate_prelevement
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_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 :
```{r select-distinct-rows_hubeau_esu_2, eval = FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_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 :
```{r add_code_analyse_hubeau_esu, eval = FALSE}
# Utiliser la fonction add_code_analyse() avec la version souhaitée
nitrate_qualite_rivieres_analyses <- add_code_analyse(
nitrate_qualite_rivieres_analyses, version)
# Afficher le dataframe pour vérifier les modifications
print(nitrate_qualite_rivieres_analyses)
```
# Chargement en base
On corrige l'ordre des champs les champs utiles à la table des analyses :
```{r select-variables-hubeau_esu_final, eval = FALSE}
# Sélectionner les variables dans l'ordre des champs de la table à alimenter
nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_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 une table dédiée :
```{r insert-into_nitrate_analyse_hubeau_esu_version, eval = FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_qualite_rivieres_analyses,
table = glue::glue("nitrate_analyse_hubeau_esu_", version),
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_analyse",
user = "admin")
```
# Insertion des analyses Hub'eau ESU en base dans la table globale
On insère enfin les enregistrements de cette table dans la table globale :
```{r import_and_merge_tables_hubeau_esu, eval = FALSE}
# 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_esu_", version),
source_schema = "nitrates",
target_table = glue::glue("nitrate_analyse_", version),
target_schema = "nitrates",
role = "admin")
```
---
title: "Insertion des prélèvements ARS"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{insertion-des-prelevements-ars}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r setup}
library(data.nitrates)
```
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_ars_into_prelevement.Rmd: do not edit by hand -->
```{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 ESO 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}
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` :
```{r add-source_code_support_ars, eval = FALSE}
# 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` :
```{r replace-in_plv_heure, eval = FALSE}
# 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 :
```{r select-variables-ars, eval = FALSE}
# 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 :
```{r select-distinct-rows-ars, eval = FALSE}
# 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 :
```{r update_code_bss, eval = FALSE}
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 :
```{r select-variables-ars_v2, eval = FALSE}
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 :
```{r add_code_prelevement_ars, eval = FALSE}
# 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 :
```{r insert-into_nitrate_prelevement_v0_16, eval = FALSE}
# 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 :
```{r import_and_merge_tables_ars, eval = FALSE}
# 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")
```
---
title: "Insertion des analyses ARS"
title: "Insertion des prélèvements et analyses ARS"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Insertion des analyses ARS}
%\VignetteIndexEntry{Insertion des prélèvements et analyses ARS}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
......@@ -18,7 +18,7 @@ knitr::opts_chunk$set(
library(data.nitrates)
```
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_ars_into_analyse.Rmd: do not edit by hand -->
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_data_ars.Rmd: do not edit by hand -->
......@@ -29,22 +29,20 @@ library(data.nitrates)
# Lire le fichier de configuration
config <- yaml::read_yaml("config.yml")
# Accéder aux valeurs pour version et last_year
# Accéder à la valeur pour version
version <- config$version
last_year <- config$last_year
```
# Consolidation et insertion des données de l'ARS dans la table des analyses
# Consolidation et insertion des données de l'ARS dans la table des prélèvements
## Chargement des données ARS brutes
## 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}
```{r load_nitrate_data_analyse_ars}
#| eval: no
# Charger la table nitrates.nitrate_data_analyse_ars
nitrate_data_analyse_ars <- datalibaba::importer_data(
table = "nitrate_data_analyse_ars",
schema = "nitrates",
......@@ -55,25 +53,65 @@ nitrate_data_analyse_ars <- datalibaba::importer_data(
```
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}
```{r filter_param_nom_ars}
#| eval: no
# Supprimer les lignes ne correspondant pas à une analyse
nitrate_analyse_ars <- nitrate_data_analyse_ars |>
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}
```{r replace_strings_with_na}
#| eval: no
# Remplacer chaînes de caractère dans la colonne ana_param_alpha_resultat
nitrate_analyse_ars <- nitrate_analyse_ars |>
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_,
......@@ -85,11 +123,11 @@ nitrate_analyse_ars <- nitrate_analyse_ars |>
On remplace des valeurs dans ana_param_alpha_resultat et param_code:
```{r replace-dot_ana_param_alpha_resultat}
```{r replace_dot_ana_param_alpha_resultat}
#| eval: no
# Remplacer les valeurs dans les colonnes ana_param_alpha_resultat et param_code
nitrate_analyse_ars <- nitrate_analyse_ars |>
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")
......@@ -99,11 +137,11 @@ nitrate_analyse_ars <- nitrate_analyse_ars |>
On affecte le code_remarque et la valeur des variables resultat_analyse et limite_quantification :
```{r mutate-from_ana_param_alpha_resultat}
```{r mutate_from_ana_param_alpha_resultat}
#| eval: no
# Ajouter les colonnes code_remarque, resultat_analyse et limite_quantification
nitrate_analyse_ars <- nitrate_analyse_ars |>
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(
......@@ -124,160 +162,41 @@ nitrate_analyse_ars <- nitrate_analyse_ars |>
```
On sélectionne les champs utiles à la table des analyses :
```{r select-variables-ars}
On supprime "<" dans la variable `limite_quantification` :
```{r replace_in_plv_heure-1}
#| eval: no
# Sélectionner les variables
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::select(code_station = ins_code_national,
code_intervenant = geo_dept_ddass_gest_code,
date_prelevement = plv_date,
nom_parametre = param_nom,
date_analyse = anl_date_fin_analyse,
resultat_analyse,
code_parametre = param_code,
code_remarque,
limite_quantification)
```
On supprime les caractères < et > dans les variables resultat_analyse et limite_quantification :
```{r replace-inferior_superior}
#| eval: no
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::mutate(resultat_analyse =
stringr::str_replace(resultat_analyse, ">", ""),
limite_quantification =
stringr::str_replace(limite_quantification, "<", ""))
# 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 modifie le type des variables resultat_analyse et limite_quantification :
```{r change-fieldtypes}
On sélectionne les champs utiles à la table des prélèvements et analyse :
```{r select_variables}
#| eval: no
# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::mutate(resultat_analyse = as.numeric(resultat_analyse),
limite_quantification = as.numeric(limite_quantification),
code_parametre = as.integer(code_parametre))
```
## Jointure avec la table des prélèvements créée auparavant
La table des prélèvements est chargée :
```{r load-nitrate_prelevement}
#| eval: no
# 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 :
```{r select-distinct-rows-ars}
#| eval: no
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_analyse_ars <- nitrate_analyse_ars |>
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 :
```{r join-prelvement_ars}
#| eval: no
# Joindre les dataframes nitrate_analyse_ars et nitrate_prelevement
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::left_join(nitrate_prelevement |>
dplyr::select(code_station, date_prelevement, code_prelevement),
by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement"))
```
On ajoute un identifiant unique s'appuyant sur une séquence stockée en base :
```{r add_code_analyse_ars}
#| eval: no
# Utiliser la fonction add_code_analyse_ars avec la version souhaitée
nitrate_analyse_ars <- add_code_analyse(
nitrate_analyse_ars, version)
# Afficher le dataframe pour vérifier les modifications
print(nitrate_analyse_ars)
```
## Préparation pour l'insertion en base
On corrige l'ordre des champs les champs utiles à la table des analyses :
```{r select-variables-ars-final}
#| eval: no
# Sélectionner les variables dans l'ordre des champs de la table à alimenter
nitrate_analyse_ars <- nitrate_analyse_ars |>
dplyr::select(code_analyse,
code_intervenant,
code_prelevement,
code_parametre,
code_station,
date_analyse,
# 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)
```
On charge les données consolidées dans un table dédiée :
```{r insert_into_nitrate_prelevement_version}
#| eval: no
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_analyse_ars,
table = glue::glue("nitrate_analyse_ars_", version),
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_analyse",
user = "admin")
```
## Insertion des analyses ARS en base dans la table globale
On insère enfin les enregistrements de cette table dans la table globale :
```{r import_and_merge_tables_ars}
#| eval: no
# 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_ars_", version),
source_schema = "nitrates",
target_table = glue::glue("nitrate_analyse_", version),
target_schema = "nitrates",
role = "admin")
```
---
title: "Insertion des prélèvements Hubeau ESO"
title: "Insertion des prélèvements et analyses Hubeau ESO"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{insertion-des-prelevements-hubeau-eso}
%\VignetteIndexEntry{Insertion des prélèvements et analyses Hubeau ESO}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
......@@ -14,13 +14,18 @@ knitr::opts_chunk$set(
)
```
```{r setup}
```{r}
library(data.nitrates)
```
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_hubeau_eso_into_prelevement.Rmd: do not edit by hand -->
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_data_hubeau_eso.Rmd: do not edit by hand -->
```{r config}
#| eval: no
```{r config, eval = FALSE}
# Lire le fichier de configuration
config <- yaml::read_yaml("config.yml")
......@@ -28,14 +33,16 @@ config <- yaml::read_yaml("config.yml")
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
```{r load-nitrate_qualite_nappes_analyses, eval = FALSE}
# Charger la table qualite_nappes_eau_souterraine.nitrate_qualite_rivieres_analyse_pc
# 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",
......@@ -44,98 +51,115 @@ nitrate_qualite_nappes_prelevements <- datalibaba::importer_data(
)
```
## 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
```{r select-code_producteur_hubeau_eso, eval = FALSE}
# Filtrer pour exclure les données ARS
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
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
```{r add-source_code_support_hubeau_eso, eval = FALSE}
# Ajouter les variables source, code_support et nature_eau
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::mutate(
source = "ADES",
heure_prelevement = NA,
code_support = 3,
nature_eau = "ESO")
nature_eau = "ESO",
id_usage = NA,
id_prelevement_motif = NA,
date_analyse = NA)
```
On sélectionne les champs utiles à la table des prélèvements :
```{r select-variables_hubeau_eso, eval = FALSE}
# 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 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 de la variable `code_support` de character en integer :
```{r change-type_code_support, eval = FALSE}
# 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 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 :
donnée (à supprimer ?) :
```{r select_distinct_rows_hubeau_eso}
#| eval: no
```{r select-distinct-rows_hubeau_eso, eval = FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |>
nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On ajoute un identifiant unique s'appuyant sur une séquence stockée en base :
```{r add_code_prelevement_hubeau_eso, eval = FALSE}
# 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 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)
On charge les données consolidées dans un table dédiée :
```{r insert-into_nitrate_prelevement_hubeau_eso, eval = FALSE}
# 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 :
```{r import_and_merge_tables_hubeau_eso, eval = FALSE}
# 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")
```
---
title: "Insertion des prélèvements Hubeau ESU"
title: "Insertion des prélèvements et analyses Hubeau ESU"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{insertion-des-prelevements-hubeau-esu}
%\VignetteIndexEntry{Insertion des prélèvements et analyses Hubeau ESU}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
......@@ -14,13 +14,18 @@ knitr::opts_chunk$set(
)
```
```{r setup}
```{r}
library(data.nitrates)
```
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_hubeau_esu_into_prelevement.Rmd: do not edit by hand -->
<!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_data_hubeau_esu.Rmd: do not edit by hand -->
```{r config}
#| eval: no
```{r config, eval = FALSE}
# Lire le fichier de configuration
config <- yaml::read_yaml("config.yml")
......@@ -28,13 +33,15 @@ config <- yaml::read_yaml("config.yml")
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
```{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",
......@@ -44,100 +51,106 @@ nitrate_qualite_rivieres_prelevements <- datalibaba::importer_data(
)
```
## Consolidation des prélèvements Hub'eau ESU
On remplace "." par "," dans les variables `limite_detection` et `limite_quantification` :
On remplace des valeurs dans `limite_detection` et `limite_quantification` :
```{r replace-dot_limite_detection}
#| eval: no
```{r replace-in_limite_detection, eval = FALSE}
# Remplacer "." par "," dans les colonnes limite_detection et limite_quantification
nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |>
# Remplacer les valeurs dans les colonnes limite_detection et limite_quantification
nitrate_prelevement_analyse_hubeau_esu <- nitrate_qualite_rivieres_prelevements |>
dplyr::mutate(
limite_detection = stringr::str_replace_all(limite_detection, ".", ","),
limite_quantification = stringr::str_replace_all(limite_quantification, ".", ",")
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
```{r add-source_code_support_hubeau_esu, eval = FALSE}
# Ajouter les variables source et nature_eau
nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |>
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
dplyr::mutate(
source = "Na\u00efades",
nature_eau = "ESU")
heure_prelevement = NA,
code_support = 3,
nature_eau = "ESU",
id_usage = NA,
id_prelevement_motif = NA,
date_analyse = NA)
```
On sélectionne les champs utiles à la table des prélèvements :
```{r select-variables_hubeau_esu, eval = FALSE}
# Sélectionner les variables
nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |>
dplyr::select(source,
code_reseau,
code_station,
date_prelevement,
heure_prelevement,
code_support,
nature_eau,
commentaire = commentaires_analyse)
```
On modifie le type de la variable `code_support` de character en integer :
On modifie le type de la variable `code_support` de character en integer
(à supprimer ?) :
```{r change-type_code_support}
#| eval: no
```{r change-type_code_support, eval = FALSE}
# Convertir la variable code_support de character en integer
nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |>
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 :
donnée (à supprimer ?) :
```{r select-distinct-rows_hubeau_esu}
#| eval: no
```{r select-distinct-rows_hubeau_esu, eval = FALSE}
# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |>
nitrate_prelevement_analyse_hubeau_esu <- nitrate_prelevement_analyse_hubeau_esu |>
dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
```
On ajoute un identifiant unique s'appuyant sur une séquence stockée en base :
```{r add_code_prelevement_hubeau_esu, eval = FALSE}
# Utiliser la fonction add_code_prelevement() avec la version souhaitée
nitrate_qualite_rivieres_prelevements <- add_code_prelevement(
nitrate_qualite_rivieres_prelevements, version)
On modifie le type des variables resultat_analyse et limite_quantification :
```{r change-fieldtypes}
#| eval: no
# Afficher le dataframe pour vérifier les modifications
print(nitrate_qualite_rivieres_prelevements)
# 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 charge les données consolidées dans une table dédiée :
```{r insert-into_nitrate_prelevement_hubeau_esu, eval = FALSE}
# Charger les données dans une nouvelle table en base
datalibaba::poster_data(data = nitrate_qualite_rivieres_prelevements,
table = glue::glue("nitrate_prelevement_hubeau_esu_", version),
schema = "nitrates",
db = "si_eau",
overwrite = TRUE,
pk = "code_prelevement",
user = "admin")
```
# Insertion des prélèvements Hub'eau ESU en base dans la table globale
On sélectionne les champs utiles à la table des prélèvements et analyses :
```{r select_variables_hubeau_eso}
#| eval: no
On insère enfin les enregistrements de cette table dans la table globale :
```{r import_and_merge_tables_hubeau_esu, eval = FALSE}
# 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_hubeau_esu_", version),
source_schema = "nitrates",
target_table = glue::glue("nitrate_prelevement_", version),
target_schema = "nitrates",
role = "admin")
# 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)
```
This diff is collapsed.