diff --git a/.Rbuildignore b/.Rbuildignore index 32136ab3663c18ed50b4b859883f2340d5d0bfa9..21ac6df078f8f567b9c9de3d1680c2960139eca8 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -6,3 +6,4 @@ ^\.Rproj\.user$ ^.gitlab-ci\.yml$ ^_pkgdown\.yml$ +^config\.yml$ diff --git a/DESCRIPTION b/DESCRIPTION index d077ee09df4952a3b8a1d1f3f57d80a792878a2f..0d877668a3bfecaeb0f401316d8c62f0612b97a9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -17,7 +17,7 @@ Suggests: rmarkdown VignetteBuilder: knitr -Config/fusen/version: 0.5.2 +Config/fusen/version: 0.6.0 Encoding: UTF-8 Roxygen: list(markdown = TRUE) RoxygenNote: 7.3.1 diff --git a/R/add_code_analyse.R b/R/add_code_analyse.R index e78de949e9778eb9a83430acec347d73fc04a21a..13edf2fa0fe666248212864d8f93acca62ff7260 100644 --- a/R/add_code_analyse.R +++ b/R/add_code_analyse.R @@ -1,4 +1,4 @@ -# WARNING - Generated by {fusen} from dev/flat_insert_ars_into_analyse.Rmd: do not edit by hand +# WARNING - Generated by {fusen} from dev/flat_create_tables_sequences.Rmd: do not edit by hand #' Ajouter une variable code_analyse au dataframe #' diff --git a/R/add_code_prelevement.R b/R/add_code_prelevement.R index b3b98ea269059c1d1cd88b54e02cdc376a2b21b9..2d75139dec9e677e1ffc6c0e68f1985a64952e86 100644 --- a/R/add_code_prelevement.R +++ b/R/add_code_prelevement.R @@ -1,4 +1,4 @@ -# WARNING - Generated by {fusen} from dev/flat_insert_ars_into_prelevement.Rmd: do not edit by hand +# WARNING - Generated by {fusen} from dev/flat_create_tables_sequences.Rmd: do not edit by hand #' Ajouter une variable code_prelevement au dataframe #' diff --git a/R/create_nitrate_analyse_table.R b/R/create_nitrate_analyse_table.R new file mode 100644 index 0000000000000000000000000000000000000000..8fe0038177c208f26654f69c3c69ac1ad16eee7c --- /dev/null +++ b/R/create_nitrate_analyse_table.R @@ -0,0 +1,93 @@ +# WARNING - Generated by {fusen} from dev/flat_create_tables_sequences.Rmd: do not edit by hand + +#' Créer une table d'analyses de nitrates +#' +#' @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. +#' +#' @param version String. Version de la table (par exemple, 'v1'). +#' @param last_year Integer. L'année la plus récente incluse dans les données de la table. +#' +#' @return String. Le script SQL utilisé pour créer la table. +#' @export +#' @importFrom datalibaba connect_to_db +create_nitrate_analyse_table <- function(version, last_year) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") + + # Génération de la date du jour + date_now <- format(Sys.Date(), "%d/%m/%Y") + + # Création du script avec l'ajout des paramètres + sql_script <- glue::glue(" + CREATE TABLE IF NOT EXISTS nitrates.nitrate_analyse_{version} + ( + code_analyse serial NOT NULL, + code_intervenant character varying(20), + code_prelevement integer, + code_parametre bigint, + code_fraction_analysee integer, + date_analyse date, + resultat_analyse double precision, + code_remarque integer, + limite_detection double precision, + limite_quantification double precision, + CONSTRAINT pk_nitrate_analyse_{version} PRIMARY KEY (code_analyse), + CONSTRAINT fk_n_fraction_analysee FOREIGN KEY (code_fraction_analysee) + REFERENCES sandre.n_fraction_analysee (code_fraction_analysee) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE SET DEFAULT, + -- CONSTRAINT fk_n_intervenant FOREIGN KEY (code_intervenant) + -- REFERENCES qualite_cours_d_eau.n_intervenant (code_intervenant) MATCH SIMPLE + -- ON UPDATE CASCADE ON DELETE SET DEFAULT, + CONSTRAINT fk_n_remarque FOREIGN KEY (code_remarque) + REFERENCES sandre.n_remarque (code_remarque) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT fk_parametre FOREIGN KEY (code_parametre) + REFERENCES qualite_cours_d_eau.parametre (code_parametre) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE SET DEFAULT + ) + WITH ( + OIDS=FALSE + ); + + ALTER TABLE nitrates.nitrate_analyse_{version} + OWNER TO adminpsql; + + GRANT ALL ON TABLE nitrates.nitrate_analyse_{version} TO adminpsql; + GRANT ALL ON TABLE nitrates.nitrate_analyse_{version} TO writer_production; + GRANT SELECT ON TABLE nitrates.nitrate_analyse_{version} TO reader_production; + + COMMENT ON TABLE nitrates.nitrate_analyse_{version} + IS 'Table des analyses 2007-{last_year} (version {version} du {date_now})'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_analyse IS 'Identifiant de l''analyse'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_intervenant IS 'Identifiant du laboratoire ayant effectu\u00e9 l''analyse'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_prelevement IS 'Identifiant du pr\u00e9l\u00e8vement'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_parametre IS 'Identifiant du param\u00e8tre analys\u00e9'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_fraction_analysee IS 'Identifiant de la fraction analys\u00e9e'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.date_analyse IS 'Date de l''analyse'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.resultat_analyse IS 'R\u00e9sultat de l''analyse'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_remarque IS 'Code validant la donn\u00e9e'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.limite_detection IS 'Limite de d\u00e9tection'; + COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.limite_quantification IS 'Limite de quantification'; + + CREATE SEQUENCE IF NOT EXISTS nitrates.nitrate_analyse_{version}_code_analyse_seq + INCREMENT 1 + START 1 + MINVALUE 1 + MAXVALUE 2147483647 + CACHE 1; + + ALTER SEQUENCE nitrates.nitrate_analyse_{version}_code_analyse_seq + OWNER TO adminpsql; + ") + + # Exécution du script dans la base de données + DBI::dbExecute(connexion, sql_script) + + # Fermeture de la connexion à la base de données + DBI::dbDisconnect(connexion) + + return(sql_script) +} + diff --git a/R/create_nitrate_prelevement_table.R b/R/create_nitrate_prelevement_table.R index 38e479fdb53811043f1adb4997e0e9239ba0aafc..6076073d757d8d3ab7b44cc4c1faf25d5099f7c5 100644 --- a/R/create_nitrate_prelevement_table.R +++ b/R/create_nitrate_prelevement_table.R @@ -1,103 +1,4 @@ -# WARNING - Generated by {fusen} from dev/flat_create_tables.Rmd: do not edit by hand - -#' Créer une table d'analyses de nitrates -#' -#' @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. -#' -#' @param version String. Version de la table (par exemple, 'v1'). -#' @param last_year Integer. L'année la plus récente incluse dans les données de la table. -#' @param connexion DBIConnection. Connexion active à la base de données PostgreSQL. -#' -#' @return String. Le script SQL utilisé pour créer la table. -#' @export -#' @importFrom datalibaba connect_to_db -#' @examples -#' # Connexion à la base de données -#' connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") -#' -#' # Création du script SQL avec la version choisie -#' version <- "v0_16" -#' last_year <- "2023" -#' sql <- create_nitrate_analyse_table(version, last_year, connexion) -create_nitrate_analyse_table <- function(version, last_year, connexion) { - - # Génération de la date du jour - date_now <- format(Sys.Date(), "%d/%m/%Y") - - # Création du script avec l'ajout des paramètres - sql_script <- glue::glue(" - CREATE TABLE IF NOT EXISTS nitrates.nitrate_analyse_{version} - ( - code_analyse serial NOT NULL, - code_intervenant character varying(20), - code_prelevement integer, - code_parametre bigint, - code_fraction_analysee integer, - date_analyse date, - resultat_analyse double precision, - code_remarque integer, - limite_detection double precision, - limite_quantification double precision, - CONSTRAINT pk_nitrate_analyse_{version} PRIMARY KEY (code_analyse), - CONSTRAINT fk_n_fraction_analysee FOREIGN KEY (code_fraction_analysee) - REFERENCES sandre.n_fraction_analysee (code_fraction_analysee) MATCH SIMPLE - ON UPDATE CASCADE ON DELETE SET DEFAULT, - -- CONSTRAINT fk_n_intervenant FOREIGN KEY (code_intervenant) - -- REFERENCES qualite_cours_d_eau.n_intervenant (code_intervenant) MATCH SIMPLE - -- ON UPDATE CASCADE ON DELETE SET DEFAULT, - CONSTRAINT fk_n_remarque FOREIGN KEY (code_remarque) - REFERENCES sandre.n_remarque (code_remarque) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION, - CONSTRAINT fk_parametre FOREIGN KEY (code_parametre) - REFERENCES qualite_cours_d_eau.parametre (code_parametre) MATCH SIMPLE - ON UPDATE CASCADE ON DELETE SET DEFAULT - ) - WITH ( - OIDS=FALSE - ); - - ALTER TABLE nitrates.nitrate_analyse_{version} - OWNER TO adminpsql; - - GRANT ALL ON TABLE nitrates.nitrate_analyse_{version} TO adminpsql; - GRANT ALL ON TABLE nitrates.nitrate_analyse_{version} TO writer_production; - GRANT SELECT ON TABLE nitrates.nitrate_analyse_{version} TO reader_production; - - COMMENT ON TABLE nitrates.nitrate_analyse_{version} - IS 'Table des analyses 2007-{last_year} (version {version} du {date_now})'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_analyse IS 'Identifiant de l''analyse'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_intervenant IS 'Identifiant du laboratoire ayant effectu\u00e9 l''analyse'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_prelevement IS 'Identifiant du pr\u00e9l\u00e8vement'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_parametre IS 'Identifiant du param\u00e8tre analys\u00e9'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_fraction_analysee IS 'Identifiant de la fraction analys\u00e9e'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.date_analyse IS 'Date de l''analyse'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.resultat_analyse IS 'R\u00e9sultat de l''analyse'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.code_remarque IS 'Code validant la donn\u00e9e'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.limite_detection IS 'Limite de d\u00e9tection'; - COMMENT ON COLUMN nitrates.nitrate_analyse_{version}.limite_quantification IS 'Limite de quantification'; - - CREATE SEQUENCE IF NOT EXISTS nitrates.nitrate_analyse_{version}_code_analyse_seq - INCREMENT 1 - START 1 - MINVALUE 1 - MAXVALUE 2147483647 - CACHE 1; - - ALTER SEQUENCE nitrates.nitrate_analyse_{version}_code_analyse_seq - OWNER TO adminpsql; - ") - - # Exécution du script dans la base de données - DBI::dbExecute(connexion, sql_script) - - # Fermeture de la connexion à la base de données - DBI::dbDisconnect(connexion) - - return(sql_script) -} - +# WARNING - Generated by {fusen} from dev/flat_create_tables_sequences.Rmd: do not edit by hand #' Créer une table de prélèvements de nitrates #' @@ -107,20 +8,13 @@ create_nitrate_analyse_table <- function(version, last_year, connexion) { #' #' @param version String. Version de la table (par exemple, 'v1'). #' @param last_year Integer. L'année la plus récente incluse dans les données de la table. -#' @param connexion DBIConnection. Connexion active à la base de données PostgreSQL. #' #' @return String. Le script SQL utilisé pour créer la table. #' @export #' @importFrom datalibaba connect_to_db -#' @examples -#' # Connexion à la base de données -#' connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") -#' -#' # Création du script SQL avec la version choisie -#' version <- "v0_16" -#' last_year <- "2023" -#' sql <- create_nitrate_prelevement_table(version, last_year, connexion) -create_nitrate_prelevement_table <- function(version, last_year, connexion) { +create_nitrate_prelevement_table <- function(version, last_year) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") # Génération de la date du jour date_now <- format(Sys.Date(), "%d/%m/%Y") diff --git a/config.yml b/config.yml new file mode 100644 index 0000000000000000000000000000000000000000..cc076641c42e1f314b955a4425c9d36009b25b07 --- /dev/null +++ b/config.yml @@ -0,0 +1,4 @@ +version: "v0_19" # 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" diff --git a/dev/config_fusen.yaml b/dev/config_fusen.yaml index 1dcfade9294c1a98756ec9aaf25953b8e22b95cc..22be351e2cb2d0ceb71fe7c1b613292b90cb011c 100644 --- a/dev/config_fusen.yaml +++ b/dev/config_fusen.yaml @@ -1,16 +1,21 @@ -flat_create_tables.Rmd: - path: dev/flat_create_tables.Rmd +flat_create_tables_sequences.Rmd: + path: dev/flat_create_tables_sequences.Rmd state: active - R: R/create_nitrate_prelevement_table.R + R: + - R/create_nitrate_prelevement_table.R + - R/create_nitrate_analyse_table.R + - R/add_code_prelevement.R + - R/add_code_analyse.R tests: [] - vignettes: vignettes/creation-des-tables-finales.Rmd + vignettes: vignettes/creation-des-tables-et-des-sequences.Rmd inflate: - flat_file: dev/flat_create_tables.Rmd - vignette_name: Création des tables finales + flat_file: dev/flat_create_tables_sequences.Rmd + vignette_name: Création des tables et des séquences open_vignette: true check: true document: true overwrite: ask + clean: ask flat_import_ars_data.Rmd: path: dev/flat_import_ars_data.Rmd state: active @@ -24,6 +29,7 @@ flat_import_ars_data.Rmd: check: true document: true overwrite: ask + clean: ask flat_import_hubeau_eso_data.Rmd: path: dev/flat_import_hubeau_eso_data.Rmd state: active @@ -37,6 +43,7 @@ flat_import_hubeau_eso_data.Rmd: check: true document: true overwrite: ask + clean: ask flat_import_hubeau_esu_data.Rmd: path: dev/flat_import_hubeau_esu_data.Rmd state: active @@ -53,7 +60,7 @@ flat_import_hubeau_esu_data.Rmd: flat_insert_ars_into_analyse.Rmd: path: dev/flat_insert_ars_into_analyse.Rmd state: active - R: R/add_code_analyse.R + R: [] tests: [] vignettes: vignettes/insertion-des-analyses-ars.Rmd inflate: @@ -63,10 +70,11 @@ flat_insert_ars_into_analyse.Rmd: check: true document: true overwrite: ask + clean: ask flat_insert_ars_into_prelevement.Rmd: path: dev/flat_insert_ars_into_prelevement.Rmd state: active - R: R/add_code_prelevement.R + R: [] tests: [] vignettes: vignettes/insertion-des-prelevements-ars.Rmd inflate: @@ -76,6 +84,7 @@ flat_insert_ars_into_prelevement.Rmd: check: true document: true overwrite: ask + clean: ask flat_insert_hubeau_eso_into_analyse.Rmd: path: dev/flat_insert_hubeau_eso_into_analyse.Rmd state: active @@ -89,6 +98,7 @@ flat_insert_hubeau_eso_into_analyse.Rmd: check: true document: true overwrite: ask + clean: ask flat_insert_hubeau_eso_into_prelevement.Rmd: path: dev/flat_insert_hubeau_eso_into_prelevement.Rmd state: active @@ -102,6 +112,7 @@ flat_insert_hubeau_eso_into_prelevement.Rmd: check: true document: true overwrite: ask + clean: ask flat_insert_hubeau_esu_into_analyse.Rmd: path: dev/flat_insert_hubeau_esu_into_analyse.Rmd state: active @@ -115,6 +126,7 @@ flat_insert_hubeau_esu_into_analyse.Rmd: check: true document: true overwrite: ask + clean: ask flat_insert_hubeau_esu_into_prelevement.Rmd: path: dev/flat_insert_hubeau_esu_into_prelevement.Rmd state: active @@ -128,3 +140,18 @@ flat_insert_hubeau_esu_into_prelevement.Rmd: check: true document: true overwrite: ask + clean: ask +flat_list_existing_tables.Rmd: + path: dev/flat_list_existing_tables.Rmd + state: active + R: [] + tests: [] + vignettes: vignettes/liste-des-tables-existantes.Rmd + inflate: + flat_file: dev/flat_list_existing_tables.Rmd + vignette_name: Liste des tables existantes + open_vignette: true + check: true + document: true + overwrite: ask + clean: ask diff --git a/inst/rmarkdown/templates/creation-des-tables-finales/skeleton/skeleton.Rmd b/dev/flat_create_tables_sequences.Rmd similarity index 58% rename from inst/rmarkdown/templates/creation-des-tables-finales/skeleton/skeleton.Rmd rename to dev/flat_create_tables_sequences.Rmd index 059dd427c3c457484378c65c1e5b7a82c572769f..fbfa5891178f41f3f67e02925dfe778d5fd3787d 100644 --- a/inst/rmarkdown/templates/creation-des-tables-finales/skeleton/skeleton.Rmd +++ b/dev/flat_create_tables_sequences.Rmd @@ -1,5 +1,5 @@ --- -title: "Cr\u00e9ation des tables finales" +title: "Cr\u00e9ation des tables et des s\u00e9quences" output: html_document editor_options: chunk_output_type: console @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(glue) library(DBI) library(datalibaba) @@ -17,13 +18,20 @@ library(datalibaba) pkgload::load_all(export_all = FALSE) ``` -# Présentation +```{r config, eval=FALSE} +# Lire le fichier de configuration +config <- yaml::read_yaml("config.yml") -> Cette page contient la logique métier concernant la création des tables de prélèvements et d'analyses concernant les nitrates. +# Accéder aux valeurs pour version et last_year +version <- config$version +last_year <- config$last_year +``` + +# Création des tables en base -# Table des prélèvements +## Création de la table des prélèvements et ajout des commentaires -```{r function-create_nitrate_prelevement_table} +```{r function-create_nitrate_prelevement_table, eval=FALSE} #' Créer une table de prélèvements de nitrates #' #' @description Cette fonction crée une table dans une base de données PostgreSQL @@ -32,12 +40,13 @@ pkgload::load_all(export_all = FALSE) #' #' @param version String. Version de la table (par exemple, 'v1'). #' @param last_year Integer. L'année la plus récente incluse dans les données de la table. -#' @param connexion DBIConnection. Connexion active à la base de données PostgreSQL. #' #' @return String. Le script SQL utilisé pour créer la table. #' @export #' @importFrom datalibaba connect_to_db -create_nitrate_prelevement_table <- function(version, last_year, connexion) { +create_nitrate_prelevement_table <- function(version, last_year) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") # Génération de la date du jour date_now <- format(Sys.Date(), "%d/%m/%Y") @@ -54,6 +63,7 @@ create_nitrate_prelevement_table <- function(version, last_year, connexion) { date_prelevement date, heure_prelevement character varying(8), code_support int, + nature_eau character varying(3), id_usage character varying(3), id_prelevement_motif character varying(2), commentaire character varying(254), @@ -83,6 +93,7 @@ create_nitrate_prelevement_table <- function(version, last_year, connexion) { COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.date_prelevement IS 'Date du pr\u00e9l\u00e8vement'; COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.heure_prelevement IS 'Heure du pr\u00e9l\u00e8vement'; COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.code_support IS 'Code du support de pr\u00e9l\u00e8vement'; + COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.nature_eau IS 'Nature de l''eau du pr\u00e9l\u00e8vement (ESO/ESU)'; COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.id_usage IS 'Code de l''usage du pr\u00e9l\u00e8vement'; COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.id_prelevement_motif IS 'Code du motif du pr\u00e9l\u00e8vement'; COMMENT ON COLUMN nitrates.nitrate_prelevement_{version}.commentaire IS 'Commentaire'; @@ -108,17 +119,15 @@ create_nitrate_prelevement_table <- function(version, last_year, connexion) { } ``` -```{r examples-create_nitrate_prelevement_table, eval=FALSE} -# Connexion à la base de données -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - +Création de la table `nitrates.nitrate_prelevement_version` : +```{r create_nitrate_prelevement_table_version, eval=FALSE} # Création du script SQL avec la version choisie -version <- "v0_15" -last_year <- "2023" -sql <- create_nitrate_prelevement_table(version, last_year, connexion) +sql <- create_nitrate_prelevement_table(version, last_year) ``` -```{r function-create_nitrate_analyse_table} +## Création de la table des analyses et ajout des commentaires + +```{r function-create_nitrate_analyse_table, eval=FALSE} #' Créer une table d'analyses de nitrates #' #' @description Cette fonction crée une table dans une base de données PostgreSQL @@ -127,12 +136,13 @@ sql <- create_nitrate_prelevement_table(version, last_year, connexion) #' #' @param version String. Version de la table (par exemple, 'v1'). #' @param last_year Integer. L'année la plus récente incluse dans les données de la table. -#' @param connexion DBIConnection. Connexion active à la base de données PostgreSQL. #' #' @return String. Le script SQL utilisé pour créer la table. #' @export #' @importFrom datalibaba connect_to_db -create_nitrate_analyse_table <- function(version, last_year, connexion) { +create_nitrate_analyse_table <- function(version, last_year) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") # Génération de la date du jour date_now <- format(Sys.Date(), "%d/%m/%Y") @@ -211,19 +221,140 @@ create_nitrate_analyse_table <- function(version, last_year, connexion) { ``` -```{r examples-create_nitrate_analyse_table, eval=FALSE} -# Connexion à la base de données -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - +Création de la table `nitrates.nitrate_analyse_version` : +```{r create_nitrate_analyse_table, eval=FALSE} # Création du script SQL avec la version choisie -version <- "v0_15" -last_year <- "2023" -sql <- create_nitrate_analyse_table(version, last_year, connexion) +sql <- create_nitrate_analyse_table(version, last_year) +``` + +# Incrémentation des séquences + +## Incrémentation de la table des prélèvements + +```{r function-add_code_prelevement, eval=FALSE} +#' Ajouter une variable code_prelevement au dataframe +#' +#' @description Cette fonction ajoute une nouvelle variable `code_prelevement` +#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est +#' construite en fonction du paramètre `version` fourni. +#' +#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter +#' la variable `code_prelevement`. +#' @param version Une chaîne de caractères représentant la version de la +#' séquence à utiliser. +#' +#' @return Un dataframe avec une nouvelle colonne `code_prelevement` contenant +#' les valeurs de la séquence PostgreSQL. +#' +#' @importFrom DBI dbGetQuery dbDisconnect +#' @importFrom dplyr mutate +#' @importFrom glue glue +#' @importFrom datalibaba connect_to_db +#' @export +add_code_prelevement <- function(dataframe, version) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") + + # Construire le nom de la séquence + sequence_name <- glue::glue("nitrates.nitrate_prelevement_{version}_code_prelevement_seq") + + # Initialiser une liste pour stocker les valeurs de la séquence + code_prelevements <- c() + + # Pour chaque ligne du dataframe, obtenir une valeur de la séquence + for (i in 1:nrow(dataframe)) { + query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_prelevement") + result <- DBI::dbGetQuery(connexion, query) + code_prelevements <- c(code_prelevements, result$code_prelevement) + } + + # Ajouter la nouvelle variable au dataframe + dataframe <- dataframe |> + dplyr::mutate(code_prelevement = code_prelevements) + + # Fermer la connexion à la base de données + DBI::dbDisconnect(connexion) + + return(dataframe) +} + +``` + +## Incrémentation de la table des analyses + +```{r function-add_code_analyse, eval=FALSE} +#' Ajouter une variable code_analyse au dataframe +#' +#' @description Cette fonction ajoute une nouvelle variable `code_analyse` +#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est +#' construite en fonction du paramètre `version` fourni. +#' +#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter +#' la variable `code_analyse`. +#' @param version Une chaîne de caractères représentant la version de la +#' séquence à utiliser. +#' +#' @return Un dataframe avec une nouvelle colonne `code_analyse` contenant +#' les valeurs de la séquence PostgreSQL. +#' +#' @importFrom DBI dbGetQuery dbDisconnect +#' @importFrom dplyr mutate +#' @importFrom glue glue +#' @importFrom datalibaba connect_to_db +#' @export +add_code_analyse <- function(dataframe, version) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") + + # Construire le nom de la séquence + sequence_name <- glue::glue("nitrates.nitrate_analyse_{version}_code_analyse_seq") + + # Initialiser une liste pour stocker les valeurs de la séquence + code_analyses <- c() + + # Pour chaque ligne du dataframe, obtenir une valeur de la séquence + for (i in 1:nrow(dataframe)) { + query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_analyse") + result <- DBI::dbGetQuery(connexion, query) + code_analyses <- c(code_analyses, result$code_analyse) + } + + # Ajouter la nouvelle variable au dataframe + dataframe <- dataframe |> + dplyr::mutate(code_analyse = code_analyses) + + # Fermer la connexion à la base de données + DBI::dbDisconnect(connexion) + + return(dataframe) +} + +``` + +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Cr\u00e9ation des tables et des s\u00e9quences", + template_dir = "creation-des-tables-et-des-sequences", + template_description = "Cr\u00e9ation des tables et des s\u00e9quences", + template_create_dir = TRUE +) +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_create_tables_sequences.Rmd" +destination_dir <- "inst/rmarkdown/templates/creation-des-tables-et-des-sequences/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_create_tables.Rmd", vignette_name = "Cr\u00e9ation des tables finales") +fusen::inflate(flat_file = "dev/flat_create_tables_sequences.Rmd", vignette_name = "Cr\u00e9ation des tables et des s\u00e9quences") ``` - diff --git a/dev/flat_import_ars_data.Rmd b/dev/flat_import_ars_data.Rmd index dfbd8ecec41bc739878891d78fb0dddcec6795d3..3c94878b5dfa91f8a5e767426385668c9b652698 100644 --- a/dev/flat_import_ars_data.Rmd +++ b/dev/flat_import_ars_data.Rmd @@ -1,5 +1,5 @@ --- -title: "Import des données ARS" +title: "Import des donn\u00e9es ARS" output: html_document editor_options: chunk_output_type: console @@ -7,6 +7,8 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) +library(glue) library(xlsx) library(datalibaba) library(RPostgreSQL) @@ -20,56 +22,28 @@ library(dplyr) pkgload::load_all(export_all = FALSE) ``` -# Présentation - -Cette page contient la logique métier concernant l'import des données brutes -fournies par l'ARS dans une base de données POstgreSQL dans le cadre du projet -Nitrates - -# Connexion à la base de données PostgreSQL +```{r config, eval=FALSE} +# Lire le fichier de configuration +config <- yaml::read_yaml("config.yml") -```{r connect_to_db, eval=FALSE} -# Se connecter à la base de données PostgreSQL si_eau -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") +# Accéder aux valeurs pour last_year et filepath_data_ars +last_year <- config$last_year +filepath_data_ars <- config$filepath_data_ars ``` -```{r list_schemas, eval=FALSE} -# Lister les schémas présents dans la base -schemas_list <- data.frame(datalibaba::list_schemas(connexion)) - -# Renommer la variable unique en "nom_schema" -schemas_list <- schemas_list |> - rename(nom_schema = unique(names(.))) - -# Trier le dataframe par la variable nom_schema -schemas_list <- schemas_list |> - arrange(nom_schema) -``` - -```{r list_tables, eval=FALSE} -# Lister les tables présentes dans le schéma spécifié -tables_list <- data.frame(datalibaba::list_tables( - con = connexion, - db = "si_eau", - schema = "nitrates")) - -# Renommer la variable unique en "nom_table" -tables_list <- tables_list |> - rename(nom_table = names(tables_list)[1]) - -# Trier le dataframe par la variable nom_table -tables_list <- tables_list |> - arrange(nom_table) +# Présentation -``` +Cette page contient la logique métier concernant l'import des données brutes +fournies par l'ARS dans une base de données POstgreSQL dans le cadre du projet +Nitrates. # Import des données de l'ARS dans un dataframe par millésime Les données sont transmies au format XLSX. -```{r import_data_ars_2023, eval=FALSE} -data_ars_2023 <- collectr::import_xlsx( - filepath = "T:\\datalab\\SRNP_DEMA_SI_EAU\\NITRATES\\DONNEES_CLIENT\\SOURCES\\ARS\\2024_06\\Nitrates 2023 pour DREAL EPNT4 2024-05-31.xlsx", +```{r import_data_ars_last_year, eval=FALSE} +data_ars_last_year <- collectr::import_xlsx( + filepath = filepath_data_ars, sheet = 1, row = 2) @@ -79,16 +53,16 @@ data_ars_2023 <- collectr::import_xlsx( ```{r create-nitrate_data_ars, eval=FALSE} # Charger les données dans une nouvelle table en base -datalibaba::poster_data(data = data_ars_2023, - table = "nitrate_data_analyse_ars_2023", +datalibaba::poster_data(data = data_ars_last_year, + table = glue::glue("nitrate_data_analyse_ars_", last_year), schema = "nitrates", db = "si_eau", overwrite = TRUE, user = "admin") # Ajouter un commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2023)", - table = "nitrate_data_analyse_ars_2023", +datalibaba::commenter_table(comment = glue::glue("Analyses Nitrates ARS (", last_year, ")"), + table = glue::glue("nitrate_data_analyse_ars_", last_year), schema = "nitrates", db = "si_eau", user = "admin") @@ -101,7 +75,7 @@ datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2023)", # Modifier le type de colonne pour les champs de date collectr::modify_column_type(database = "si_eau", schema = "nitrates", - table = "nitrate_data_analyse_ars_2023", + table = glue::glue("nitrate_data_analyse_ars_", last_year), column_name = "plv_date", column_type = "date", role = "admin") @@ -125,23 +99,46 @@ collectr::archive_table(database = "si_eau", ```{r import_and_merge_tables, 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 = "nitrate_data_analyse_ars_2023", + source_table = glue::glue("nitrate_data_analyse_ars_", last_year), source_schema = "nitrates", target_table = "nitrate_data_analyse_ars", target_schema = "nitrates", role = "admin") # Actualiser le commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2007-2023)", +datalibaba::commenter_table(comment = glue::glue("Analyses Nitrates ARS (2007-", last_year, ")", table = "nitrate_data_analyse_ars", schema = "nitrates", db = "si_eau", user = "admin") ``` +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Import des donn\u00e9es ARS", + template_dir = "import-des-donnees-ars", + template_description = "Import des donn\u00e9es ARS", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_import_ars_data.Rmd" +destination_dir <- "inst/rmarkdown/templates/import-des-donnees-ars/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_import_ars_data.Rmd", vignette_name = "Import des données ARS") +fusen::inflate(flat_file = "dev/flat_import_ars_data.Rmd", vignette_name = "Import des donn\u00e9es ARS") ``` diff --git a/dev/flat_import_hubeau_eso_data.Rmd b/dev/flat_import_hubeau_eso_data.Rmd index b9a4d3116b2a95ddf090229f57572d55034e282b..73b25305daa36f6eb160731cc975d843a2cfbb48 100644 --- a/dev/flat_import_hubeau_eso_data.Rmd +++ b/dev/flat_import_hubeau_eso_data.Rmd @@ -1,5 +1,5 @@ --- -title: "Import des données Hub'eau ESO" +title: "Import des donn\u00e9es Hubeau ESO" output: html_document editor_options: chunk_output_type: console @@ -7,6 +7,8 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) +library(glue) library(hubeau) library(datalibaba) library(RPostgreSQL) @@ -20,102 +22,55 @@ library(dplyr) pkgload::load_all(export_all = FALSE) ``` -# Présentation - -> Cette page contient la logique métier concernant l'import des données de -l'[API Hub'eau "Qualité des nappes d'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) dans le cadre du projet Nitrates - -# Connexion à la base de données PostgreSQL - -```{r connect_to_db, eval=FALSE} -# Se connecter à la base de données PostgreSQL si_eau -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") -``` - -```{r list_schemas, eval=FALSE} -# Lister les schémas présents dans la base -schemas_list <- data.frame(datalibaba::list_schemas(connexion)) - -# Renommer la variable unique en "nom_schema" -schemas_list <- schemas_list |> - rename(nom_schema = unique(names(.))) +```{r config, eval=FALSE} +# Lire le fichier de configuration +config <- yaml::read_yaml("config.yml") -# Trier le dataframe par la variable nom_schema -schemas_list <- schemas_list |> - arrange(nom_schema) +# Accéder à la valeur pour last_year +last_year <- config$last_year ``` -```{r list_tables, eval=FALSE} -# Lister les tables présentes dans le schéma spécifié -tables_list <- data.frame(datalibaba::list_tables( - con = connexion, - db = "si_eau", - schema = "qualite_cours_d_eau")) - -# Renommer la variable unique en "nom_table" -tables_list <- tables_list |> - rename(nom_table = names(tables_list)[1]) - -# Trier le dataframe par la variable nom_table -tables_list <- tables_list |> - arrange(nom_table) +# Présentation -``` +Cette page contient la logique métier concernant l'import des données de +l'[API Hub'eau "Qualit\u00e9 des nappes d\'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) +dans le cadre du projet Nitrates. # Import des données Hub'eau ESU dans un dataframe par millésime On utilise la fonction `get_qualite_nappes_analyses()` du package [{hubeau}](https://github.com/inrae/hubeau) -```{r create-nitrate_analyse_esu_2020, eval=FALSE} -nitrate_analyse_eso_2020 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2020-01-01", - date_fin_prelevement = "2020-12-31", - size = "5000") -``` +```{r create-nitrate_analyse_esu_last_year, eval=FALSE} +nitrate_analyse_eso_last_year <- hubeau::get_qualite_nappes_analyses( + code_param = "1340", + code_region = "52", + date_debut_prelevement = glue::glue(last_year, "-01-01"), + date_fin_prelevement = glue::glue(last_year, "-12-31"), + size = "5000" + ) -```{r create-nitrate_analyse_esu_2021, eval=FALSE} -nitrate_analyse_eso_2021 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2021-01-01", - date_fin_prelevement = "2021-12-31", - size = "5000") -``` - -```{r create-nitrate_analyse_esu_2022, eval=FALSE} -nitrate_analyse_eso_2022 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2022-01-01", - date_fin_prelevement = "2022-12-31", - size = "5000") - -``` - -```{r create-nitrate_analyse_esu_2023, eval=FALSE} -nitrate_analyse_eso_2023 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2023-01-01", - date_fin_prelevement = "2023-12-31", - size = "5000") ``` # Création d'une table pour le nouveau millésime ```{r create-nitrate_data_ars, eval=FALSE} # Charger les données dans une nouvelle table en base -datalibaba::poster_data(data = nitrate_analyse_eso_2023, - table = "nitrate_qualite_nappes_analyses_2023", +datalibaba::poster_data(data = nitrate_analyse_eso_last_year, + table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), schema = "qualite_nappes_eau_souterraine", db = "si_eau", overwrite = TRUE, user = "admin") # Ajouter un commentaire sur la table -datalibaba::commenter_table(comment = "Analyses \"Nitrates\" ESO issues de l''API Hub''eau qualite_nappes : données brutes", - table = "nitrate_qualite_nappes_analyses_2023", - schema = "qualite_nappes_eau_souterraine", - db = "si_eau", - user = "admin") +datalibaba::commenter_table( + comment = glue::glue( + "Analyses \"Nitrates\" ESO issues de l\'\'API Hubeau qualite_nappes : donn\u00e9es brutes ", + last_year), + table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), + schema = "qualite_nappes_eau_souterraine", + db = "si_eau", + user = "admin") ``` @@ -125,7 +80,7 @@ datalibaba::commenter_table(comment = "Analyses \"Nitrates\" ESO issues de l''AP # Modifier le type de colonne pour les champs de date collectr::modify_column_type(database = "si_eau", schema = "qualite_nappes_eau_souterraine", - table = "nitrate_qualite_nappes_analyses_2023", + table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), column_name = "date_debut_prelevement", column_type = "date", role = "admin") @@ -149,22 +104,51 @@ collectr::archive_table(database = "si_eau", ```{r import_and_merge_tables, 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 = "nitrate_qualite_nappes_analyses_2023", + source_table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), source_schema = "qualite_nappes_eau_souterraine", target_table = "nitrate_qualite_nappes_analyses", target_schema = "qualite_nappes_eau_souterraine", role = "admin") # Actualiser le commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ESO API Hub'eau Qualité des nappes d'eau souterraine (2007-2023)", - table = "nitrate_qualite_nappes_analyses", - schema = "qualite_nappes_eau_souterraine", - db = "si_eau", - user = "admin") +datalibaba::commenter_table( + comment = glue::glue( + "Analyses Nitrates ESO API Hubeau Qualit\u00e9 des nappes d\'eau souterraine (2007-", + last_year, + ")"), + table = "nitrate_qualite_nappes_analyses", + schema = "qualite_nappes_eau_souterraine", + db = "si_eau", + user = "admin" + ) + +``` + +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Import des donn\u00e9es Hubeau ESO", + template_dir = "import-des-donnees-hubeau-eso", + template_description = "Import des donn\u00e9es Hubeau ESO", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_import_hubeau_eso_data.Rmd" +destination_dir <- "inst/rmarkdown/templates/import-des-donnees-hubeau-eso/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} # Keep eval=FALSE to avoid infinite loop in case you hit the knit button # Execute in the console directly -fusen::inflate(flat_file = "dev/flat_import_hubeau_eso_data.Rmd", vignette_name = "Import des données Hub'eau ESO") +fusen::inflate(flat_file = "dev/flat_import_hubeau_eso_data.Rmd", vignette_name = "Import des donn\u00e9es Hubeau ESO") ``` diff --git a/dev/flat_import_hubeau_esu_data.Rmd b/dev/flat_import_hubeau_esu_data.Rmd index df26f047b69a81404c2f3c78d244cc51c567fc8a..c023b7b3cbfc79a1895cd98870342e0db5c5d80d 100644 --- a/dev/flat_import_hubeau_esu_data.Rmd +++ b/dev/flat_import_hubeau_esu_data.Rmd @@ -1,5 +1,5 @@ --- -title: "Import des données Hub'eau ESU" +title: "Import des donn\u00e9es Hubeau ESU" output: html_document editor_options: chunk_output_type: console @@ -7,6 +7,8 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) +library(glue) library(hubeau) library(datalibaba) library(RPostgreSQL) @@ -20,89 +22,39 @@ library(dplyr) pkgload::load_all(export_all = FALSE) ``` -# Présentation - -> Cette page contient la logique métier concernant l'import des données de -l'[API Hub'eau "Qualité des cours d'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) dans le cadre du projet Nitrates - -# Connexion à la base de données PostgreSQL - -```{r connect_to_db, eval=FALSE} -# Se connecter à la base de données PostgreSQL si_eau -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") -``` - -```{r list_schemas, eval=FALSE} -# Lister les schémas présents dans la base -schemas_list <- data.frame(datalibaba::list_schemas(connexion)) - -# Renommer la variable unique en "nom_schema" -schemas_list <- schemas_list |> - rename(nom_schema = unique(names(.))) +```{r config, eval=FALSE} +# Lire le fichier de configuration +config <- yaml::read_yaml("config.yml") -# Trier le dataframe par la variable nom_schema -schemas_list <- schemas_list |> - arrange(nom_schema) +# Accéder à la valeur pour last_year +last_year <- config$last_year ``` -```{r list_tables, eval=FALSE} -# Lister les tables présentes dans le schéma spécifié -tables_list <- data.frame(datalibaba::list_tables( - con = connexion, - db = "si_eau", - schema = "qualite_cours_d_eau")) - -# Renommer la variable unique en "nom_table" -tables_list <- tables_list |> - rename(nom_table = names(tables_list)[1]) - -# Trier le dataframe par la variable nom_table -tables_list <- tables_list |> - arrange(nom_table) +# Présentation -``` +Cette page contient la logique métier concernant l'import des données de +l'[API Hub'eau "Qualit\u00e9 des cours d\'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) +dans le cadre du projet Nitrates. # Import des données Hub'eau ESU dans un dataframe par millésime On utilise la fonction `get_qualite_rivieres_analyse()` du package [{hubeau}](https://github.com/inrae/hubeau) -```{r create-nitrate_analyse_esu_2020, eval=FALSE} -nitrate_analyse_esu_2020 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340", - code_region = "52", - date_debut_prelevement = "2020-01-01", - date_fin_prelevement = "2020-12-31", - size = "5000") -``` +```{r create-nitrate_analyse_esu_last_year, eval=FALSE} +nitrate_analyse_esu_last_year <- hubeau::get_qualite_rivieres_analyse( + code_parametre = "1340", + code_region = "52", + date_debut_prelevement = glue::glue(last_year, "-01-01"), + date_fin_prelevement = glue::glue(last_year, "-12-31"), + size = "5000" +) -```{r create-nitrate_analyse_esu_2021, eval=FALSE} -nitrate_analyse_esu_2021 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340", - code_region = "52", - date_debut_prelevement = "2021-01-01", - date_fin_prelevement = "2021-12-31", - size = "5000") -``` - -```{r create-nitrate_analyse_esu_2022, eval=FALSE} -nitrate_analyse_esu_2022 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340", - code_region = "52", - date_debut_prelevement = "2022-01-01", - date_fin_prelevement = "2022-12-31", - size = "5000") - -``` - -```{r create-nitrate_analyse_esu_2023, eval=FALSE} -nitrate_analyse_esu_2023 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340", - code_region = "52", - date_debut_prelevement = "2023-01-01", - date_fin_prelevement = "2023-12-31", - size = "5000") ``` # Correction de l'encodage si nécessaire pour certaines variables ```{r change-encoding, eval=FALSE} -nitrate_analyse_esu_2023 <- nitrate_analyse_esu_2023 |> +nitrate_analyse_esu_last_year <- nitrate_analyse_esu_last_year |> dplyr::mutate(libelle_station = iconv(libelle_station, from = "ISO-8859-1", to = "UTF-8")) ``` @@ -110,19 +62,23 @@ nitrate_analyse_esu_2023 <- nitrate_analyse_esu_2023 |> ```{r create-nitrate_data_ars, eval=FALSE} # Charger les données dans une nouvelle table en base -datalibaba::poster_data(data = nitrate_analyse_esu_2023, - table = "nitrate_qualite_rivieres_analyse_pc_2023", +datalibaba::poster_data(data = nitrate_analyse_esu_last_year, + table = glue::glue("nitrate_qualite_rivieres_analyse_pc_", last_year), schema = "qualite_cours_d_eau", db = "si_eau", overwrite = TRUE, user = "admin") # Ajouter un commentaire sur la table -datalibaba::commenter_table(comment = "Analyses \"Nitrates\" ESU issues de l''API Hub''eau qualite_rivieres : données brutes", - table = "nitrate_qualite_rivieres_analyse_pc_2023", - schema = "qualite_cours_d_eau", - db = "si_eau", - user = "admin") +datalibaba::commenter_table( + comment = glue::glue( + "Analyses \"Nitrates\" ESU issues de l\'\'API Hubeau qualite_rivieres : donn\u00e9es brutes ", + last_year + ), + table = glue::glue("nitrate_qualite_rivieres_analyse_pc_", last_year), + schema = "qualite_cours_d_eau", + db = "si_eau", + user = "admin") ``` @@ -132,14 +88,14 @@ datalibaba::commenter_table(comment = "Analyses \"Nitrates\" ESU issues de l''AP # Modifier le type de colonne pour les champs de date collectr::modify_column_type(database = "si_eau", schema = "qualite_cours_d_eau", - table = "nitrate_qualite_rivieres_analyse_pc_2023", + table = glue::glue("nitrate_qualite_rivieres_analyse_pc_", last_year), column_name = "date_prelevement", column_type = "date", role = "admin") collectr::modify_column_type(database = "si_eau", schema = "qualite_cours_d_eau", - table = "nitrate_qualite_rivieres_analyse_pc_2023", + table = glue::glue("nitrate_qualite_rivieres_analyse_pc_", last_year), column_name = "date_analyse", column_type = "date", role = "admin") @@ -163,22 +119,51 @@ collectr::archive_table(database = "si_eau", ```{r import_and_merge_tables, 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 = "nitrate_qualite_rivieres_analyse_pc_2023", + source_table = glue::glue("nitrate_qualite_rivieres_analyse_pc_", last_year), source_schema = "qualite_cours_d_eau", target_table = "nitrate_qualite_rivieres_analyse_pc", target_schema = "qualite_cours_d_eau", role = "admin") # Actualiser le commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ESU API Hub'eau Qualité des cours d'eau (2007-2023)", - table = "nitrate_qualite_rivieres_analyse_pc", - schema = "qualite_cours_d_eau", - db = "si_eau", - user = "admin") +datalibaba::commenter_table( + comment = glue::glue( + "Analyses Nitrates ESU API Hubeau Qualit\u00e9 des nappes d\'eau souterraine (2007-", + last_year, + ")"), + table = "nitrate_qualite_rivieres_analyse_pc", + schema = "qualite_cours_d_eau", + db = "si_eau", + user = "admin" + ) + +``` + +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Import des donn\u00e9es Hubeau ESU", + template_dir = "import-des-donnees-hubeau-esu", + template_description = "Import des donn\u00e9es Hubeau ESU", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_import_hubeau_esu_data.Rmd" +destination_dir <- "inst/rmarkdown/templates/import-des-donnees-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} # Keep eval=FALSE to avoid infinite loop in case you hit the knit button # Execute in the console directly -fusen::inflate(flat_file = "dev/flat_import_hubeau_esu_data.Rmd", vignette_name = "Import des données Hub'eau ESU") +fusen::inflate(flat_file = "dev/flat_import_hubeau_esu_data.Rmd", vignette_name = "Import des donn\u00e9es Hubeau ESU") ``` diff --git a/dev/flat_insert_ars_into_analyse.Rmd b/dev/flat_insert_ars_into_analyse.Rmd index 418785fa572f01e03ee940fb552e567bac39a34c..82f341425596057a3665d0c58b20c0d87f867f28 100644 --- a/dev/flat_insert_ars_into_analyse.Rmd +++ b/dev/flat_insert_ars_into_analyse.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,14 @@ library(RPostgres) 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 analyses ## Chargement des données ARS brutes @@ -33,6 +42,7 @@ nitrate_data_analyse_ars <- datalibaba::importer_data( db = "si_eau", user = "admin" ) + ``` ## Consolidation des données ARS @@ -73,7 +83,7 @@ On affecte le code_remarque et la valeur des variables resultat_analyse et limi ```{r mutate-from_ana_param_alpha_resultat, eval=FALSE} # Ajouter les colonnes code_remarque, resultat_analyse et limite_quantification nitrate_analyse_ars <- nitrate_analyse_ars |> - mutate( + 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, @@ -89,6 +99,7 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> TRUE ~ NA_character_ # Utilisation de NA pour les valeurs non pertinentes ) ) + ``` On sélectionne les champs utiles à la table des analyses : @@ -132,9 +143,9 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> La table des prélèvements est chargée : ```{r load-nitrate_prelevement, eval=FALSE} -# Charger la table nitrates.nitrate_prelevement_v0_15 +# Charger la table nitrates.nitrate_prelevement_version nitrate_prelevement <- datalibaba::importer_data( - table = "nitrate_prelevement_v0_15", + table = glue::glue("nitrate_prelevement_", version), schema = "nitrates", db = "si_eau", user = "admin" @@ -155,57 +166,9 @@ On joint le dataframe des prélèvements pour récupérer la variable code_prele ```{r join-prelvement_ars, eval=FALSE} # Joindre les dataframes nitrate_analyse_ars et nitrate_prelevement nitrate_analyse_ars <- nitrate_analyse_ars |> - left_join(nitrate_prelevement |> - select(code_station, date_prelevement, code_prelevement), - by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) -``` - -```{r function-add_code_analyse, eval=FALSE} -#' Ajouter une variable code_analyse au dataframe -#' -#' @description Cette fonction ajoute une nouvelle variable `code_analyse` -#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est -#' construite en fonction du paramètre `version` fourni. -#' -#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter -#' la variable `code_analyse`. -#' @param version Une chaîne de caractères représentant la version de la -#' séquence à utiliser. -#' -#' @return Un dataframe avec une nouvelle colonne `code_analyse` contenant -#' les valeurs de la séquence PostgreSQL. -#' -#' @importFrom DBI dbGetQuery dbDisconnect -#' @importFrom dplyr mutate -#' @importFrom glue glue -#' @importFrom datalibaba connect_to_db -#' @export -add_code_analyse <- function(dataframe, version) { - # Établir une connexion à la base de données PostgreSQL - connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - - # Construire le nom de la séquence - sequence_name <- glue::glue("nitrates.nitrate_analyse_{version}_code_analyse_seq") - - # Initialiser une liste pour stocker les valeurs de la séquence - code_analyses <- c() - - # Pour chaque ligne du dataframe, obtenir une valeur de la séquence - for (i in 1:nrow(dataframe)) { - query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_analyse") - result <- DBI::dbGetQuery(connexion, query) - code_analyses <- c(code_analyses, result$code_analyse) - } - - # Ajouter la nouvelle variable au dataframe - dataframe <- dataframe |> - dplyr::mutate(code_analyse = code_analyses) - - # Fermer la connexion à la base de données - DBI::dbDisconnect(connexion) - - return(dataframe) -} + dplyr::left_join(nitrate_prelevement |> + dplyr::select(code_station, date_prelevement, code_prelevement), + by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) ``` @@ -213,7 +176,7 @@ On ajoute un identifiant unique s'appuyant sur une séquence stockée en base : ```{r add_code_analyse_ars, eval=FALSE} # Utiliser la fonction add_code_analyse_ars avec la version souhaitée nitrate_analyse_ars <- add_code_analyse( - nitrate_analyse_ars, "v0_15") + nitrate_analyse_ars, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_analyse_ars) @@ -239,10 +202,10 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> ``` On charge les données consolidées dans un table dédiée : -```{r insert-into_nitrate_prelevement_v0_15, eval=FALSE} +```{r insert_into_nitrate_prelevement_version, eval=FALSE} # Charger les données dans une nouvelle table en base datalibaba::poster_data(data = nitrate_analyse_ars, - table = "nitrate_analyse_ars_v0_15", + table = glue::glue("nitrate_analyse_ars_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -256,14 +219,36 @@ 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 = "nitrate_analyse_ars_v0_15", + source_table = glue::glue("nitrate_analyse_ars_", version), source_schema = "nitrates", - target_table = "nitrate_analyse_v0_15", + target_table = glue::glue("nitrate_analyse_", 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 analyses ARS", + template_dir = "insertion-des-analyses-ars", + template_description = "Insertion des analyses ARS", + template_create_dir = TRUE +) +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_insert_ars_into_analyse.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-analyses-ars/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 diff --git a/dev/flat_insert_ars_into_prelevement.Rmd b/dev/flat_insert_ars_into_prelevement.Rmd index 4330e91d714547a3ec72b911abca2f491921dc4a..ad96c14ab0db60b674a0a3c15f88a52f87250d4d 100644 --- a/dev/flat_insert_ars_into_prelevement.Rmd +++ b/dev/flat_insert_ars_into_prelevement.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,14 @@ library(RPostgres) 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 @@ -34,7 +43,7 @@ nitrate_data_analyse_ars <- datalibaba::importer_data( ) ``` -La table des stations ESO est chargée : +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", @@ -111,61 +120,11 @@ nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> id_prelevement_motif) ``` - -```{r function-add_code_prelevement, eval=FALSE} -#' Ajouter une variable code_prelevement au dataframe -#' -#' @description Cette fonction ajoute une nouvelle variable `code_prelevement` -#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est -#' construite en fonction du paramètre `version` fourni. -#' -#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter -#' la variable `code_prelevement`. -#' @param version Une chaîne de caractères représentant la version de la -#' séquence à utiliser. -#' -#' @return Un dataframe avec une nouvelle colonne `code_prelevement` contenant -#' les valeurs de la séquence PostgreSQL. -#' -#' @importFrom DBI dbGetQuery dbDisconnect -#' @importFrom dplyr mutate -#' @importFrom glue glue -#' @importFrom datalibaba connect_to_db -#' @export -add_code_prelevement <- function(dataframe, version) { - # Établir une connexion à la base de données PostgreSQL - connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - - # Construire le nom de la séquence - sequence_name <- glue::glue("nitrates.nitrate_prelevement_{version}_code_prelevement_seq") - - # Initialiser une liste pour stocker les valeurs de la séquence - code_prelevements <- c() - - # Pour chaque ligne du dataframe, obtenir une valeur de la séquence - for (i in 1:nrow(dataframe)) { - query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_prelevement") - result <- DBI::dbGetQuery(connexion, query) - code_prelevements <- c(code_prelevements, result$code_prelevement) - } - - # Ajouter la nouvelle variable au dataframe - dataframe <- dataframe |> - dplyr::mutate(code_prelevement = code_prelevements) - - # Fermer la connexion à la base de données - DBI::dbDisconnect(connexion) - - return(dataframe) -} - -``` - 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_ars avec la version souhaitée nitrate_data_analyse_ars <- add_code_prelevement( - nitrate_data_analyse_ars, "v0_16") + nitrate_data_analyse_ars, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_data_analyse_ars) @@ -176,7 +135,7 @@ 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 = "nitrate_prelevement_ars_v0_16", + table = glue::glue("nitrate_prelevement_ars_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -190,14 +149,37 @@ 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 = "nitrate_prelevement_ars_v0_16", + source_table = glue::glue("nitrate_prelevement_ars_", version), source_schema = "nitrates", - target_table = "nitrate_prelevement_v0_16", + 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 ARS", + template_dir = "insertion-des-prelevements-ars", + template_description = "Insertion des pr\u00e9l\u00e8vements ARS", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_insert_ars_into_prelevement.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-prelevements-ars/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 diff --git a/dev/flat_insert_hubeau_eso_into_analyse.Rmd b/dev/flat_insert_hubeau_eso_into_analyse.Rmd index d48a9624bce734b03188bdbeff15314e1eb6b9a4..6655e54a96b6a97af9eaa5853783789516f335c8 100644 --- a/dev/flat_insert_hubeau_eso_into_analyse.Rmd +++ b/dev/flat_insert_hubeau_eso_into_analyse.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,14 @@ library(RPostgres) 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 analyses Hub'eau ESO dans la table des analyses ## Chargement des analyses Hub'eau ESO @@ -94,9 +103,9 @@ nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |> La table des prélèvements est chargée : ```{r load-nitrate_prelevement, eval=FALSE} -# Charger la table nitrates.nitrate_prelevement_v0_15 +# Charger la table nitrates.nitrate_prelevement_version nitrate_prelevement <- datalibaba::importer_data( - table = "nitrate_prelevement_v0_15", + table = glue::glue("nitrate_prelevement_", version), schema = "nitrates", db = "si_eau", user = "admin" @@ -117,9 +126,9 @@ On joint le dataframe des prélèvements pour récupérer la variable code_prele ```{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 |> - left_join(nitrate_prelevement |> - select(code_station, date_prelevement, code_prelevement), - by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) + 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`, @@ -135,7 +144,7 @@ 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_ars avec la version souhaitée nitrate_qualite_nappes_analyses <- add_code_analyse( - nitrate_qualite_nappes_analyses, "v0_15") + nitrate_qualite_nappes_analyses, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_qualite_nappes_analyses) @@ -162,10 +171,10 @@ nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |> ``` On charge les données consolidées dans un table dédiée : -```{r insert-into_nitrate_prelevement_v0_15, eval=FALSE} +```{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 = "nitrate_analyse_hubeau_eso_v0_15", + table = glue::glue("nitrate_analyse_hubeau_eso_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -179,14 +188,37 @@ 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 = "nitrate_analyse_hubeau_eso_v0_15", + source_table = glue::glue("nitrate_analyse_hubeau_eso_", version), source_schema = "nitrates", - target_table = "nitrate_analyse_v0_15", + target_table = glue::glue("nitrate_analyse_", 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 analyses Hubeau ESO", + template_dir = "insertion-des-analyses-hubeau-eso", + template_description = "Insertion des analyses Hubeau ESO", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_insert_hubeau_eso_into_analyse.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-analyses-hubeau-eso/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 diff --git a/dev/flat_insert_hubeau_eso_into_prelevement.Rmd b/dev/flat_insert_hubeau_eso_into_prelevement.Rmd index 9ef92fb731ac4c4a3e08bf95be9769f14693c72d..839cb2d8fbc021c547e26a7b18279433d808aa96 100644 --- a/dev/flat_insert_hubeau_eso_into_prelevement.Rmd +++ b/dev/flat_insert_hubeau_eso_into_prelevement.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,14 @@ library(RPostgres) 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 @@ -89,7 +98,7 @@ 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, "v0_16") + nitrate_qualite_nappes_prelevements, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_qualite_nappes_prelevements) @@ -99,8 +108,8 @@ print(nitrate_qualite_nappes_prelevements) 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 = "nitrate_prelevement_hubeau_eso_v0_16", +datalibaba::poster_data(data = nitrate_qualite_nappes_prelevements, + table = glue::glue("nitrate_prelevement_hubeau_eso_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -114,14 +123,37 @@ 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 = "nitrate_prelevement_hubeau_eso_v0_16", + source_table = glue::glue("nitrate_prelevement_hubeau_eso_", version), source_schema = "nitrates", - target_table = "nitrate_prelevement_v0_16", + 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 ESO", + template_dir = "insertion-des-prelevements-hubeau-eso", + template_description = "Insertion des pr\u00e9l\u00e8vements Hubeau ESO", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_insert_hubeau_eso_into_prelevement.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/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 diff --git a/dev/flat_insert_hubeau_esu_into_analyse.Rmd b/dev/flat_insert_hubeau_esu_into_analyse.Rmd index 69fb3db52e0e967e12ef7405178d5a8b31b69bfc..5c8863a17311cb0e39f59a1f58c45e2bb7683d87 100644 --- a/dev/flat_insert_hubeau_esu_into_analyse.Rmd +++ b/dev/flat_insert_hubeau_esu_into_analyse.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,14 @@ library(RPostgres) 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 analyses Hub'eau ESU dans la table des analyses ## Chargement des analyses Hub'eau ESU @@ -84,9 +93,9 @@ nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |> La table des prélèvements est chargée : ```{r load-nitrate_prelevement, eval=FALSE} -# Charger la table nitrates.nitrate_prelevement_v0_15 +# Charger la table nitrates.nitrate_prelevement_version nitrate_prelevement <- datalibaba::importer_data( - table = "nitrate_prelevement_v0_15", + table = glue::glue("nitrate_prelevement_", version), schema = "nitrates", db = "si_eau", user = "admin" @@ -107,9 +116,9 @@ On joint le dataframe des prélèvements pour récupérer la variable code_prele ```{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 |> - left_join(nitrate_prelevement |> - select(code_station, date_prelevement, code_prelevement), - by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) + 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`, @@ -125,7 +134,7 @@ 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_ars avec la version souhaitée nitrate_qualite_rivieres_analyses <- add_code_analyse( - nitrate_qualite_rivieres_analyses, "v0_15") + nitrate_qualite_rivieres_analyses, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_qualite_rivieres_analyses) @@ -152,10 +161,10 @@ nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |> ``` On charge les données consolidées dans une table dédiée : -```{r insert-into_nitrate_analyse_hubeau_esu_v0_15, eval=FALSE} +```{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 = "nitrate_analyse_hubeau_esu_v0_15", + table = glue::glue("nitrate_analyse_hubeau_esu_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -169,14 +178,37 @@ 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 = "nitrate_analyse_hubeau_esu_v0_15", + source_table = glue::glue("nitrate_analyse_hubeau_esu_", version), source_schema = "nitrates", - target_table = "nitrate_analyse_v0_15", + target_table = glue::glue("nitrate_analyse_", version), target_schema = "nitrates", role = "admin") ``` +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Insertion des analyses Hubeau ESU", + template_dir = "insertion-des-analyses-hubeau-esu", + template_description = "Insertion des analyses 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_analyse.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-analyses-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 diff --git a/dev/flat_insert_hubeau_esu_into_prelevement.Rmd b/dev/flat_insert_hubeau_esu_into_prelevement.Rmd index 40e8a150462c73344a8fb66b17737a5cfda91430..23432b596ffb0413781a3616255565e91f76f73f 100644 --- a/dev/flat_insert_hubeau_esu_into_prelevement.Rmd +++ b/dev/flat_insert_hubeau_esu_into_prelevement.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,14 @@ library(RPostgres) 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 @@ -53,7 +62,7 @@ On ajoute les variables `source` et `nature_eau` : nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |> dplyr::mutate( source = "Na\u00efades", - nature_eau = "ESO") + nature_eau = "ESU") ``` @@ -91,7 +100,7 @@ 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, "v0_16") + nitrate_qualite_rivieres_prelevements, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_qualite_rivieres_prelevements) @@ -102,7 +111,7 @@ 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 = "nitrate_prelevement_hubeau_esu_v0_16", + table = glue::glue("nitrate_prelevement_hubeau_esu_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -116,14 +125,37 @@ 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 = "nitrate_prelevement_hubeau_esu_v0_16", + source_table = glue::glue("nitrate_prelevement_hubeau_esu_", version), source_schema = "nitrates", - target_table = "nitrate_prelevement_v0_16", + 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 diff --git a/dev/flat_list_existing_tables.Rmd b/dev/flat_list_existing_tables.Rmd new file mode 100644 index 0000000000000000000000000000000000000000..0ede240e4ed4ed16d01db8ecc11676b0eaeb0356 --- /dev/null +++ b/dev/flat_list_existing_tables.Rmd @@ -0,0 +1,93 @@ +--- +title: "Liste des tables existantes" +output: html_document +editor_options: + chunk_output_type: console +--- + +```{r development, include=FALSE} +library(testthat) +``` + +```{r development-load} +# Load already included functions if relevant +pkgload::load_all(export_all = FALSE) +``` + +# Présentation + +Cette page contient la logique métier permettant de consulter les lots de données +existants pour le projet Nitrates. + +# Exploration des données existantes + +## Connexion à la base de données PostgreSQL + +```{r connect_to_db, eval=FALSE} +# Se connecter à la base de données PostgreSQL si_eau +connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") +``` + +## Liste des schémas de la base de données `si_eau` + +```{r list_schemas, eval=FALSE} +# Lister les schémas présents dans la base +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]) + +# Trier le dataframe par la variable nom_schema +schemas_list <- schemas_list |> + arrange(nom_schema) +``` + +## Liste des tables du schéma `nitrates` + +```{r list_tables, eval=FALSE} +# Lister les tables présentes dans le schéma spécifié +tables_list <- data.frame(datalibaba::list_tables( + con = connexion, + db = "si_eau", + schema = "nitrates")) + +# Renommer la variable unique en "nom_table" +tables_list <- tables_list |> + rename(nom_table = names(tables_list)[1]) + +# Trier le dataframe par la variable nom_table +tables_list <- tables_list |> + arrange(nom_table) + +``` + +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Liste des tables existantes", + template_dir = "liste-des-tables-existantes", + template_description = "Liste des tables existantes", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_list_existing_tables.Rmd" +destination_dir <- "inst/rmarkdown/templates/liste-des-tables-existantes/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_list_existing_tables.Rmd", vignette_name = "Liste des tables existantes") +``` + diff --git a/dev/flat_create_tables.Rmd b/inst/rmarkdown/templates/creation-des-tables-et-des-sequences/skeleton/skeleton.Rmd similarity index 60% rename from dev/flat_create_tables.Rmd rename to inst/rmarkdown/templates/creation-des-tables-et-des-sequences/skeleton/skeleton.Rmd index 564b9336e203b3060fd4e17631a4f966a89f3fac..28c7dbf2bf50d08f79f928895a97c5978694751c 100644 --- a/dev/flat_create_tables.Rmd +++ b/inst/rmarkdown/templates/creation-des-tables-et-des-sequences/skeleton/skeleton.Rmd @@ -1,5 +1,5 @@ --- -title: "Cr\u00e9ation des tables finales" +title: "Cr\u00e9ation des tables et des s\u00e9quences" output: html_document editor_options: chunk_output_type: console @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(glue) library(DBI) library(datalibaba) @@ -17,11 +18,18 @@ library(datalibaba) pkgload::load_all(export_all = FALSE) ``` -# Présentation +```{r config, eval=FALSE} +# Lire le fichier de configuration +config <- yaml::read_yaml("config.yml") -> Cette page contient la logique métier concernant la création des tables de prélèvements et d'analyses concernant les nitrates. +# Accéder aux valeurs pour version et last_year +version <- config$version +last_year <- config$last_year +``` + +# Création des tables en base -# Table des prélèvements +## Création de la table des prélèvements et ajout des commentaires ```{r function-create_nitrate_prelevement_table, eval=FALSE} #' Créer une table de prélèvements de nitrates @@ -32,12 +40,13 @@ pkgload::load_all(export_all = FALSE) #' #' @param version String. Version de la table (par exemple, 'v1'). #' @param last_year Integer. L'année la plus récente incluse dans les données de la table. -#' @param connexion DBIConnection. Connexion active à la base de données PostgreSQL. #' #' @return String. Le script SQL utilisé pour créer la table. #' @export #' @importFrom datalibaba connect_to_db -create_nitrate_prelevement_table <- function(version, last_year, connexion) { +create_nitrate_prelevement_table <- function(version, last_year) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") # Génération de la date du jour date_now <- format(Sys.Date(), "%d/%m/%Y") @@ -110,16 +119,14 @@ create_nitrate_prelevement_table <- function(version, last_year, connexion) { } ``` -```{r examples-create_nitrate_prelevement_table, eval=FALSE} -# Connexion à la base de données -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - +Création de la table `nitrates.nitrate_prelevement_version` : +```{r create_nitrate_prelevement_table_version, eval=FALSE} # Création du script SQL avec la version choisie -version <- "v0_16" -last_year <- "2023" -sql <- create_nitrate_prelevement_table(version, last_year, connexion) +sql <- create_nitrate_prelevement_table(version, last_year) ``` +## Création de la table des analyses et ajout des commentaires + ```{r function-create_nitrate_analyse_table, eval=FALSE} #' Créer une table d'analyses de nitrates #' @@ -129,12 +136,13 @@ sql <- create_nitrate_prelevement_table(version, last_year, connexion) #' #' @param version String. Version de la table (par exemple, 'v1'). #' @param last_year Integer. L'année la plus récente incluse dans les données de la table. -#' @param connexion DBIConnection. Connexion active à la base de données PostgreSQL. #' #' @return String. Le script SQL utilisé pour créer la table. #' @export #' @importFrom datalibaba connect_to_db -create_nitrate_analyse_table <- function(version, last_year, connexion) { +create_nitrate_analyse_table <- function(version, last_year) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") # Génération de la date du jour date_now <- format(Sys.Date(), "%d/%m/%Y") @@ -213,19 +221,140 @@ create_nitrate_analyse_table <- function(version, last_year, connexion) { ``` -```{r examples-create_nitrate_analyse_table, eval=FALSE} -# Connexion à la base de données -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - +Création de la table `nitrates.nitrate_analyse_version` : +```{r create_nitrate_analyse_table, eval=FALSE} # Création du script SQL avec la version choisie -version <- "v0_16" -last_year <- "2023" -sql <- create_nitrate_analyse_table(version, last_year, connexion) +sql <- create_nitrate_analyse_table(version, last_year) +``` + +# Incrémentation des séquences + +## Incrémentation de la table des prélèvements + +```{r function-add_code_prelevement, eval=FALSE} +#' Ajouter une variable code_prelevement au dataframe +#' +#' @description Cette fonction ajoute une nouvelle variable `code_prelevement` +#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est +#' construite en fonction du paramètre `version` fourni. +#' +#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter +#' la variable `code_prelevement`. +#' @param version Une chaîne de caractères représentant la version de la +#' séquence à utiliser. +#' +#' @return Un dataframe avec une nouvelle colonne `code_prelevement` contenant +#' les valeurs de la séquence PostgreSQL. +#' +#' @importFrom DBI dbGetQuery dbDisconnect +#' @importFrom dplyr mutate +#' @importFrom glue glue +#' @importFrom datalibaba connect_to_db +#' @export +add_code_prelevement <- function(dataframe, version) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") + + # Construire le nom de la séquence + sequence_name <- glue::glue("nitrates.nitrate_prelevement_{version}_code_prelevement_seq") + + # Initialiser une liste pour stocker les valeurs de la séquence + code_prelevements <- c() + + # Pour chaque ligne du dataframe, obtenir une valeur de la séquence + for (i in 1:nrow(dataframe)) { + query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_prelevement") + result <- DBI::dbGetQuery(connexion, query) + code_prelevements <- c(code_prelevements, result$code_prelevement) + } + + # Ajouter la nouvelle variable au dataframe + dataframe <- dataframe |> + dplyr::mutate(code_prelevement = code_prelevements) + + # Fermer la connexion à la base de données + DBI::dbDisconnect(connexion) + + return(dataframe) +} + ``` +## Incrémentation de la table des analyses + +```{r function-add_code_analyse, eval=FALSE} +#' Ajouter une variable code_analyse au dataframe +#' +#' @description Cette fonction ajoute une nouvelle variable `code_analyse` +#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est +#' construite en fonction du paramètre `version` fourni. +#' +#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter +#' la variable `code_analyse`. +#' @param version Une chaîne de caractères représentant la version de la +#' séquence à utiliser. +#' +#' @return Un dataframe avec une nouvelle colonne `code_analyse` contenant +#' les valeurs de la séquence PostgreSQL. +#' +#' @importFrom DBI dbGetQuery dbDisconnect +#' @importFrom dplyr mutate +#' @importFrom glue glue +#' @importFrom datalibaba connect_to_db +#' @export +add_code_analyse <- function(dataframe, version) { + # Établir une connexion à la base de données PostgreSQL + connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") + + # Construire le nom de la séquence + sequence_name <- glue::glue("nitrates.nitrate_analyse_{version}_code_analyse_seq") + + # Initialiser une liste pour stocker les valeurs de la séquence + code_analyses <- c() + + # Pour chaque ligne du dataframe, obtenir une valeur de la séquence + for (i in 1:nrow(dataframe)) { + query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_analyse") + result <- DBI::dbGetQuery(connexion, query) + code_analyses <- c(code_analyses, result$code_analyse) + } + + # Ajouter la nouvelle variable au dataframe + dataframe <- dataframe |> + dplyr::mutate(code_analyse = code_analyses) + + # Fermer la connexion à la base de données + DBI::dbDisconnect(connexion) + + return(dataframe) +} + +``` + +```{r development-skeleton, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Cr\u00e9ation des tables et des s\u00e9quences", + template_dir = "creation-des-tables-et-des-sequences", + template_description = "Cr\u00e9ation des tables et des s\u00e9quences", + template_create_dir = TRUE +) + +# Définir les chemins source et destination +source_file <- "dev/flat_create_tables_sequences.Rmd" +destination_dir <- "inst/rmarkdown/templates/creation-des-tables-et-des-sequences/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_create_tables.Rmd", vignette_name = "Cr\u00e9ation des tables finales") +fusen::inflate(flat_file = "dev/flat_create_tables_sequences.Rmd", vignette_name = "Cr\u00e9ation des tables et des s\u00e9quences") ``` diff --git a/inst/rmarkdown/templates/creation-des-tables-et-des-sequences/template.yaml b/inst/rmarkdown/templates/creation-des-tables-et-des-sequences/template.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2f079626722b53512c80bc039c1a4ba7eda4e390 --- /dev/null +++ b/inst/rmarkdown/templates/creation-des-tables-et-des-sequences/template.yaml @@ -0,0 +1,4 @@ +name: Création des tables et des séquences +description: > + Création des tables et des séquences +create_dir: TRUE diff --git a/inst/rmarkdown/templates/creation-des-tables-finales/template.yaml b/inst/rmarkdown/templates/creation-des-tables-finales/template.yaml deleted file mode 100644 index d8b53064db6c365bd1dcf69074f12d12e338ed6f..0000000000000000000000000000000000000000 --- a/inst/rmarkdown/templates/creation-des-tables-finales/template.yaml +++ /dev/null @@ -1,4 +0,0 @@ -name: Création des tables finales -description: > - Création des tables finales -create_dir: FALSE diff --git a/inst/rmarkdown/templates/import-des-donnees-ars/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/import-des-donnees-ars/skeleton/skeleton.Rmd index dfbd8ecec41bc739878891d78fb0dddcec6795d3..bd334bcef70eeaddbd448b03afcd4c42fd2c4175 100644 --- a/inst/rmarkdown/templates/import-des-donnees-ars/skeleton/skeleton.Rmd +++ b/inst/rmarkdown/templates/import-des-donnees-ars/skeleton/skeleton.Rmd @@ -1,5 +1,5 @@ --- -title: "Import des données ARS" +title: "Import des donn\u00e9es ARS" output: html_document editor_options: chunk_output_type: console @@ -7,6 +7,8 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) +library(glue) library(xlsx) library(datalibaba) library(RPostgreSQL) @@ -20,56 +22,29 @@ library(dplyr) pkgload::load_all(export_all = FALSE) ``` -# Présentation - -Cette page contient la logique métier concernant l'import des données brutes -fournies par l'ARS dans une base de données POstgreSQL dans le cadre du projet -Nitrates - -# Connexion à la base de données PostgreSQL +```{r config, eval=FALSE} +# Lire le fichier de configuration +config <- yaml::read_yaml("config.yml") -```{r connect_to_db, eval=FALSE} -# Se connecter à la base de données PostgreSQL si_eau -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") +# Accéder aux valeurs pour version et last_year +version <- config$version +last_year <- config$last_year +filepath_data_ars <- config$filepath_data_ars ``` -```{r list_schemas, eval=FALSE} -# Lister les schémas présents dans la base -schemas_list <- data.frame(datalibaba::list_schemas(connexion)) - -# Renommer la variable unique en "nom_schema" -schemas_list <- schemas_list |> - rename(nom_schema = unique(names(.))) - -# Trier le dataframe par la variable nom_schema -schemas_list <- schemas_list |> - arrange(nom_schema) -``` - -```{r list_tables, eval=FALSE} -# Lister les tables présentes dans le schéma spécifié -tables_list <- data.frame(datalibaba::list_tables( - con = connexion, - db = "si_eau", - schema = "nitrates")) - -# Renommer la variable unique en "nom_table" -tables_list <- tables_list |> - rename(nom_table = names(tables_list)[1]) - -# Trier le dataframe par la variable nom_table -tables_list <- tables_list |> - arrange(nom_table) +# Présentation -``` +Cette page contient la logique métier concernant l'import des données brutes +fournies par l'ARS dans une base de données POstgreSQL dans le cadre du projet +Nitrates. # Import des données de l'ARS dans un dataframe par millésime Les données sont transmies au format XLSX. -```{r import_data_ars_2023, eval=FALSE} -data_ars_2023 <- collectr::import_xlsx( - filepath = "T:\\datalab\\SRNP_DEMA_SI_EAU\\NITRATES\\DONNEES_CLIENT\\SOURCES\\ARS\\2024_06\\Nitrates 2023 pour DREAL EPNT4 2024-05-31.xlsx", +```{r import_data_ars_last_year, eval=FALSE} +data_ars_last_year <- collectr::import_xlsx( + filepath = filepath_data_ars, sheet = 1, row = 2) @@ -79,16 +54,16 @@ data_ars_2023 <- collectr::import_xlsx( ```{r create-nitrate_data_ars, eval=FALSE} # Charger les données dans une nouvelle table en base -datalibaba::poster_data(data = data_ars_2023, - table = "nitrate_data_analyse_ars_2023", +datalibaba::poster_data(data = data_ars_last_year, + table = glue::glue("nitrate_data_analyse_ars_", last_year), schema = "nitrates", db = "si_eau", overwrite = TRUE, user = "admin") # Ajouter un commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2023)", - table = "nitrate_data_analyse_ars_2023", +datalibaba::commenter_table(comment = glue::glue("Analyses Nitrates ARS (", last_year, ")"), + table = glue::glue("nitrate_data_analyse_ars_", last_year), schema = "nitrates", db = "si_eau", user = "admin") @@ -101,7 +76,7 @@ datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2023)", # Modifier le type de colonne pour les champs de date collectr::modify_column_type(database = "si_eau", schema = "nitrates", - table = "nitrate_data_analyse_ars_2023", + table = glue::glue("nitrate_data_analyse_ars_", last_year), column_name = "plv_date", column_type = "date", role = "admin") @@ -125,23 +100,46 @@ collectr::archive_table(database = "si_eau", ```{r import_and_merge_tables, 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 = "nitrate_data_analyse_ars_2023", + source_table = glue::glue("nitrate_data_analyse_ars_", last_year), source_schema = "nitrates", target_table = "nitrate_data_analyse_ars", target_schema = "nitrates", role = "admin") # Actualiser le commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2007-2023)", +datalibaba::commenter_table(comment = glue::glue("Analyses Nitrates ARS (2007-", last_year, ")", table = "nitrate_data_analyse_ars", schema = "nitrates", db = "si_eau", user = "admin") ``` +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Import des donn\u00e9es ARS", + template_dir = "import-des-donnees-ars", + template_description = "Import des donn\u00e9es ARS", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_import_ars_data.Rmd" +destination_dir <- "inst/rmarkdown/templates/import-des-donnees-ars/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_import_ars_data.Rmd", vignette_name = "Import des données ARS") +fusen::inflate(flat_file = "dev/flat_import_ars_data.Rmd", vignette_name = "Import des donn\u00e9es ARS") ``` diff --git a/inst/rmarkdown/templates/import-des-donnees-hub-eau-eso/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/import-des-donnees-hub-eau-eso/skeleton/skeleton.Rmd deleted file mode 100644 index b9a4d3116b2a95ddf090229f57572d55034e282b..0000000000000000000000000000000000000000 --- a/inst/rmarkdown/templates/import-des-donnees-hub-eau-eso/skeleton/skeleton.Rmd +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: "Import des données Hub'eau ESO" -output: html_document -editor_options: - chunk_output_type: console ---- - -```{r development, include=FALSE} -library(testthat) -library(hubeau) -library(datalibaba) -library(RPostgreSQL) -library(sf) -library(collectr) -library(dplyr) -``` - -```{r development-1} -# Load already included functions -pkgload::load_all(export_all = FALSE) -``` - -# Présentation - -> Cette page contient la logique métier concernant l'import des données de -l'[API Hub'eau "Qualité des nappes d'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) dans le cadre du projet Nitrates - -# Connexion à la base de données PostgreSQL - -```{r connect_to_db, eval=FALSE} -# Se connecter à la base de données PostgreSQL si_eau -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") -``` - -```{r list_schemas, eval=FALSE} -# Lister les schémas présents dans la base -schemas_list <- data.frame(datalibaba::list_schemas(connexion)) - -# Renommer la variable unique en "nom_schema" -schemas_list <- schemas_list |> - rename(nom_schema = unique(names(.))) - -# Trier le dataframe par la variable nom_schema -schemas_list <- schemas_list |> - arrange(nom_schema) -``` - -```{r list_tables, eval=FALSE} -# Lister les tables présentes dans le schéma spécifié -tables_list <- data.frame(datalibaba::list_tables( - con = connexion, - db = "si_eau", - schema = "qualite_cours_d_eau")) - -# Renommer la variable unique en "nom_table" -tables_list <- tables_list |> - rename(nom_table = names(tables_list)[1]) - -# Trier le dataframe par la variable nom_table -tables_list <- tables_list |> - arrange(nom_table) - -``` - -# Import des données Hub'eau ESU dans un dataframe par millésime - -On utilise la fonction `get_qualite_nappes_analyses()` du package [{hubeau}](https://github.com/inrae/hubeau) - -```{r create-nitrate_analyse_esu_2020, eval=FALSE} -nitrate_analyse_eso_2020 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2020-01-01", - date_fin_prelevement = "2020-12-31", - size = "5000") -``` - -```{r create-nitrate_analyse_esu_2021, eval=FALSE} -nitrate_analyse_eso_2021 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2021-01-01", - date_fin_prelevement = "2021-12-31", - size = "5000") -``` - -```{r create-nitrate_analyse_esu_2022, eval=FALSE} -nitrate_analyse_eso_2022 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2022-01-01", - date_fin_prelevement = "2022-12-31", - size = "5000") - -``` - -```{r create-nitrate_analyse_esu_2023, eval=FALSE} -nitrate_analyse_eso_2023 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2023-01-01", - date_fin_prelevement = "2023-12-31", - size = "5000") -``` - -# Création d'une table pour le nouveau millésime - -```{r create-nitrate_data_ars, eval=FALSE} -# Charger les données dans une nouvelle table en base -datalibaba::poster_data(data = nitrate_analyse_eso_2023, - table = "nitrate_qualite_nappes_analyses_2023", - schema = "qualite_nappes_eau_souterraine", - db = "si_eau", - overwrite = TRUE, - user = "admin") - -# Ajouter un commentaire sur la table -datalibaba::commenter_table(comment = "Analyses \"Nitrates\" ESO issues de l''API Hub''eau qualite_nappes : données brutes", - table = "nitrate_qualite_nappes_analyses_2023", - schema = "qualite_nappes_eau_souterraine", - db = "si_eau", - user = "admin") - -``` - -# Modification du type des champs si besoin - -```{r modify_column_type, eval=FALSE} -# Modifier le type de colonne pour les champs de date -collectr::modify_column_type(database = "si_eau", - schema = "qualite_nappes_eau_souterraine", - table = "nitrate_qualite_nappes_analyses_2023", - column_name = "date_debut_prelevement", - column_type = "date", - role = "admin") - -``` - -# Archivage de la version précédente de la table - -```{r archive_table, eval=FALSE} -# Archiver la version actuelle de la table avec tous les millésimes -collectr::archive_table(database = "si_eau", - schema = "qualite_nappes_eau_souterraine", - new_schema = "zz_archives", - table = "nitrate_qualite_nappes_analyses", - role = "admin") - -``` - -# Insertion des données du nouveau millésime en base dans la table globale - -```{r import_and_merge_tables, 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 = "nitrate_qualite_nappes_analyses_2023", - source_schema = "qualite_nappes_eau_souterraine", - target_table = "nitrate_qualite_nappes_analyses", - target_schema = "qualite_nappes_eau_souterraine", - role = "admin") - -# Actualiser le commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ESO API Hub'eau Qualité des nappes d'eau souterraine (2007-2023)", - table = "nitrate_qualite_nappes_analyses", - schema = "qualite_nappes_eau_souterraine", - db = "si_eau", - user = "admin") -``` - -```{r development-inflate, eval=FALSE} -# Keep eval=FALSE to avoid infinite loop in case you hit the knit button -# Execute in the console directly -fusen::inflate(flat_file = "dev/flat_import_hubeau_eso_data.Rmd", vignette_name = "Import des données Hub'eau ESO") -``` diff --git a/inst/rmarkdown/templates/import-des-donnees-hub-eau-esu/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/import-des-donnees-hub-eau-esu/skeleton/skeleton.Rmd deleted file mode 100644 index df26f047b69a81404c2f3c78d244cc51c567fc8a..0000000000000000000000000000000000000000 --- a/inst/rmarkdown/templates/import-des-donnees-hub-eau-esu/skeleton/skeleton.Rmd +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: "Import des données Hub'eau ESU" -output: html_document -editor_options: - chunk_output_type: console ---- - -```{r development, include=FALSE} -library(testthat) -library(hubeau) -library(datalibaba) -library(RPostgreSQL) -library(sf) -library(collectr) -library(dplyr) -``` - -```{r development-1} -# Load already included functions -pkgload::load_all(export_all = FALSE) -``` - -# Présentation - -> Cette page contient la logique métier concernant l'import des données de -l'[API Hub'eau "Qualité des cours d'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) dans le cadre du projet Nitrates - -# Connexion à la base de données PostgreSQL - -```{r connect_to_db, eval=FALSE} -# Se connecter à la base de données PostgreSQL si_eau -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") -``` - -```{r list_schemas, eval=FALSE} -# Lister les schémas présents dans la base -schemas_list <- data.frame(datalibaba::list_schemas(connexion)) - -# Renommer la variable unique en "nom_schema" -schemas_list <- schemas_list |> - rename(nom_schema = unique(names(.))) - -# Trier le dataframe par la variable nom_schema -schemas_list <- schemas_list |> - arrange(nom_schema) -``` - -```{r list_tables, eval=FALSE} -# Lister les tables présentes dans le schéma spécifié -tables_list <- data.frame(datalibaba::list_tables( - con = connexion, - db = "si_eau", - schema = "qualite_cours_d_eau")) - -# Renommer la variable unique en "nom_table" -tables_list <- tables_list |> - rename(nom_table = names(tables_list)[1]) - -# Trier le dataframe par la variable nom_table -tables_list <- tables_list |> - arrange(nom_table) - -``` - -# Import des données Hub'eau ESU dans un dataframe par millésime - -On utilise la fonction `get_qualite_rivieres_analyse()` du package [{hubeau}](https://github.com/inrae/hubeau) - -```{r create-nitrate_analyse_esu_2020, eval=FALSE} -nitrate_analyse_esu_2020 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340", - code_region = "52", - date_debut_prelevement = "2020-01-01", - date_fin_prelevement = "2020-12-31", - size = "5000") -``` - -```{r create-nitrate_analyse_esu_2021, eval=FALSE} -nitrate_analyse_esu_2021 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340", - code_region = "52", - date_debut_prelevement = "2021-01-01", - date_fin_prelevement = "2021-12-31", - size = "5000") -``` - -```{r create-nitrate_analyse_esu_2022, eval=FALSE} -nitrate_analyse_esu_2022 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340", - code_region = "52", - date_debut_prelevement = "2022-01-01", - date_fin_prelevement = "2022-12-31", - size = "5000") - -``` - -```{r create-nitrate_analyse_esu_2023, eval=FALSE} -nitrate_analyse_esu_2023 <- hubeau::get_qualite_rivieres_analyse(code_parametre = "1340", - code_region = "52", - date_debut_prelevement = "2023-01-01", - date_fin_prelevement = "2023-12-31", - size = "5000") -``` - -# Correction de l'encodage si nécessaire pour certaines variables - -```{r change-encoding, eval=FALSE} -nitrate_analyse_esu_2023 <- nitrate_analyse_esu_2023 |> - dplyr::mutate(libelle_station = iconv(libelle_station, from = "ISO-8859-1", to = "UTF-8")) -``` - -# Création d'une table pour le nouveau millésime - -```{r create-nitrate_data_ars, eval=FALSE} -# Charger les données dans une nouvelle table en base -datalibaba::poster_data(data = nitrate_analyse_esu_2023, - table = "nitrate_qualite_rivieres_analyse_pc_2023", - schema = "qualite_cours_d_eau", - db = "si_eau", - overwrite = TRUE, - user = "admin") - -# Ajouter un commentaire sur la table -datalibaba::commenter_table(comment = "Analyses \"Nitrates\" ESU issues de l''API Hub''eau qualite_rivieres : données brutes", - table = "nitrate_qualite_rivieres_analyse_pc_2023", - schema = "qualite_cours_d_eau", - db = "si_eau", - user = "admin") - -``` - -# Modification du type des champs si besoin - -```{r modify_column_type, eval=FALSE} -# Modifier le type de colonne pour les champs de date -collectr::modify_column_type(database = "si_eau", - schema = "qualite_cours_d_eau", - table = "nitrate_qualite_rivieres_analyse_pc_2023", - column_name = "date_prelevement", - column_type = "date", - role = "admin") - -collectr::modify_column_type(database = "si_eau", - schema = "qualite_cours_d_eau", - table = "nitrate_qualite_rivieres_analyse_pc_2023", - column_name = "date_analyse", - column_type = "date", - role = "admin") - -``` - -# Archivage de la version précédente de la table - -```{r archive_table, eval=FALSE} -# Archiver la version actuelle de la table avec tous les millésimes -collectr::archive_table(database = "si_eau", - schema = "qualite_cours_d_eau", - new_schema = "zz_archives", - table = "nitrate_qualite_rivieres_analyse_pc", - role = "admin") - -``` - -# Insertion des données du nouveau millésime en base dans la table globale - -```{r import_and_merge_tables, 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 = "nitrate_qualite_rivieres_analyse_pc_2023", - source_schema = "qualite_cours_d_eau", - target_table = "nitrate_qualite_rivieres_analyse_pc", - target_schema = "qualite_cours_d_eau", - role = "admin") - -# Actualiser le commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ESU API Hub'eau Qualité des cours d'eau (2007-2023)", - table = "nitrate_qualite_rivieres_analyse_pc", - schema = "qualite_cours_d_eau", - db = "si_eau", - user = "admin") -``` - -```{r development-inflate, eval=FALSE} -# Keep eval=FALSE to avoid infinite loop in case you hit the knit button -# Execute in the console directly -fusen::inflate(flat_file = "dev/flat_import_hubeau_esu_data.Rmd", vignette_name = "Import des données Hub'eau ESU") -``` diff --git a/inst/rmarkdown/templates/import-des-donnees-hubeau-eso/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/import-des-donnees-hubeau-eso/skeleton/skeleton.Rmd new file mode 100644 index 0000000000000000000000000000000000000000..73b25305daa36f6eb160731cc975d843a2cfbb48 --- /dev/null +++ b/inst/rmarkdown/templates/import-des-donnees-hubeau-eso/skeleton/skeleton.Rmd @@ -0,0 +1,154 @@ +--- +title: "Import des donn\u00e9es Hubeau ESO" +output: html_document +editor_options: + chunk_output_type: console +--- + +```{r development, include=FALSE} +library(testthat) +library(yaml) +library(glue) +library(hubeau) +library(datalibaba) +library(RPostgreSQL) +library(sf) +library(collectr) +library(dplyr) +``` + +```{r development-1} +# Load already included functions +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 last_year +last_year <- config$last_year +``` + +# Présentation + +Cette page contient la logique métier concernant l'import des données de +l'[API Hub'eau "Qualit\u00e9 des nappes d\'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) +dans le cadre du projet Nitrates. + +# Import des données Hub'eau ESU dans un dataframe par millésime + +On utilise la fonction `get_qualite_nappes_analyses()` du package [{hubeau}](https://github.com/inrae/hubeau) + +```{r create-nitrate_analyse_esu_last_year, eval=FALSE} +nitrate_analyse_eso_last_year <- hubeau::get_qualite_nappes_analyses( + code_param = "1340", + code_region = "52", + date_debut_prelevement = glue::glue(last_year, "-01-01"), + date_fin_prelevement = glue::glue(last_year, "-12-31"), + size = "5000" + ) + +``` + +# Création d'une table pour le nouveau millésime + +```{r create-nitrate_data_ars, eval=FALSE} +# Charger les données dans une nouvelle table en base +datalibaba::poster_data(data = nitrate_analyse_eso_last_year, + table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), + schema = "qualite_nappes_eau_souterraine", + db = "si_eau", + overwrite = TRUE, + user = "admin") + +# Ajouter un commentaire sur la table +datalibaba::commenter_table( + comment = glue::glue( + "Analyses \"Nitrates\" ESO issues de l\'\'API Hubeau qualite_nappes : donn\u00e9es brutes ", + last_year), + table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), + schema = "qualite_nappes_eau_souterraine", + db = "si_eau", + user = "admin") + +``` + +# Modification du type des champs si besoin + +```{r modify_column_type, eval=FALSE} +# Modifier le type de colonne pour les champs de date +collectr::modify_column_type(database = "si_eau", + schema = "qualite_nappes_eau_souterraine", + table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), + column_name = "date_debut_prelevement", + column_type = "date", + role = "admin") + +``` + +# Archivage de la version précédente de la table + +```{r archive_table, eval=FALSE} +# Archiver la version actuelle de la table avec tous les millésimes +collectr::archive_table(database = "si_eau", + schema = "qualite_nappes_eau_souterraine", + new_schema = "zz_archives", + table = "nitrate_qualite_nappes_analyses", + role = "admin") + +``` + +# Insertion des données du nouveau millésime en base dans la table globale + +```{r import_and_merge_tables, 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_qualite_nappes_analyses_", last_year), + source_schema = "qualite_nappes_eau_souterraine", + target_table = "nitrate_qualite_nappes_analyses", + target_schema = "qualite_nappes_eau_souterraine", + role = "admin") + +# Actualiser le commentaire sur la table +datalibaba::commenter_table( + comment = glue::glue( + "Analyses Nitrates ESO API Hubeau Qualit\u00e9 des nappes d\'eau souterraine (2007-", + last_year, + ")"), + table = "nitrate_qualite_nappes_analyses", + schema = "qualite_nappes_eau_souterraine", + db = "si_eau", + user = "admin" + ) + +``` + +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Import des donn\u00e9es Hubeau ESO", + template_dir = "import-des-donnees-hubeau-eso", + template_description = "Import des donn\u00e9es Hubeau ESO", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_import_hubeau_eso_data.Rmd" +destination_dir <- "inst/rmarkdown/templates/import-des-donnees-hubeau-eso/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} +# Keep eval=FALSE to avoid infinite loop in case you hit the knit button +# Execute in the console directly +fusen::inflate(flat_file = "dev/flat_import_hubeau_eso_data.Rmd", vignette_name = "Import des donn\u00e9es Hubeau ESO") +``` diff --git a/inst/rmarkdown/templates/import-des-donnees-hub-eau-eso/template.yaml b/inst/rmarkdown/templates/import-des-donnees-hubeau-eso/template.yaml similarity index 100% rename from inst/rmarkdown/templates/import-des-donnees-hub-eau-eso/template.yaml rename to inst/rmarkdown/templates/import-des-donnees-hubeau-eso/template.yaml diff --git a/inst/rmarkdown/templates/import-des-donnees-hubeau-esu/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/import-des-donnees-hubeau-esu/skeleton/skeleton.Rmd new file mode 100644 index 0000000000000000000000000000000000000000..c023b7b3cbfc79a1895cd98870342e0db5c5d80d --- /dev/null +++ b/inst/rmarkdown/templates/import-des-donnees-hubeau-esu/skeleton/skeleton.Rmd @@ -0,0 +1,169 @@ +--- +title: "Import des donn\u00e9es Hubeau ESU" +output: html_document +editor_options: + chunk_output_type: console +--- + +```{r development, include=FALSE} +library(testthat) +library(yaml) +library(glue) +library(hubeau) +library(datalibaba) +library(RPostgreSQL) +library(sf) +library(collectr) +library(dplyr) +``` + +```{r development-1} +# Load already included functions +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 last_year +last_year <- config$last_year +``` + +# Présentation + +Cette page contient la logique métier concernant l'import des données de +l'[API Hub'eau "Qualit\u00e9 des cours d\'eau"](https://hubeau.eaufrance.fr/page/api-qualite-cours-deau) +dans le cadre du projet Nitrates. + +# Import des données Hub'eau ESU dans un dataframe par millésime + +On utilise la fonction `get_qualite_rivieres_analyse()` du package [{hubeau}](https://github.com/inrae/hubeau) + +```{r create-nitrate_analyse_esu_last_year, eval=FALSE} +nitrate_analyse_esu_last_year <- hubeau::get_qualite_rivieres_analyse( + code_parametre = "1340", + code_region = "52", + date_debut_prelevement = glue::glue(last_year, "-01-01"), + date_fin_prelevement = glue::glue(last_year, "-12-31"), + size = "5000" +) + +``` + +# Correction de l'encodage si nécessaire pour certaines variables + +```{r change-encoding, eval=FALSE} +nitrate_analyse_esu_last_year <- nitrate_analyse_esu_last_year |> + dplyr::mutate(libelle_station = iconv(libelle_station, from = "ISO-8859-1", to = "UTF-8")) +``` + +# Création d'une table pour le nouveau millésime + +```{r create-nitrate_data_ars, eval=FALSE} +# Charger les données dans une nouvelle table en base +datalibaba::poster_data(data = nitrate_analyse_esu_last_year, + table = glue::glue("nitrate_qualite_rivieres_analyse_pc_", last_year), + schema = "qualite_cours_d_eau", + db = "si_eau", + overwrite = TRUE, + user = "admin") + +# Ajouter un commentaire sur la table +datalibaba::commenter_table( + comment = glue::glue( + "Analyses \"Nitrates\" ESU issues de l\'\'API Hubeau qualite_rivieres : donn\u00e9es brutes ", + last_year + ), + table = glue::glue("nitrate_qualite_rivieres_analyse_pc_", last_year), + schema = "qualite_cours_d_eau", + db = "si_eau", + user = "admin") + +``` + +# Modification du type des champs si besoin + +```{r modify_column_type, eval=FALSE} +# Modifier le type de colonne pour les champs de date +collectr::modify_column_type(database = "si_eau", + schema = "qualite_cours_d_eau", + table = glue::glue("nitrate_qualite_rivieres_analyse_pc_", last_year), + column_name = "date_prelevement", + column_type = "date", + role = "admin") + +collectr::modify_column_type(database = "si_eau", + schema = "qualite_cours_d_eau", + table = glue::glue("nitrate_qualite_rivieres_analyse_pc_", last_year), + column_name = "date_analyse", + column_type = "date", + role = "admin") + +``` + +# Archivage de la version précédente de la table + +```{r archive_table, eval=FALSE} +# Archiver la version actuelle de la table avec tous les millésimes +collectr::archive_table(database = "si_eau", + schema = "qualite_cours_d_eau", + new_schema = "zz_archives", + table = "nitrate_qualite_rivieres_analyse_pc", + role = "admin") + +``` + +# Insertion des données du nouveau millésime en base dans la table globale + +```{r import_and_merge_tables, 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_qualite_rivieres_analyse_pc_", last_year), + source_schema = "qualite_cours_d_eau", + target_table = "nitrate_qualite_rivieres_analyse_pc", + target_schema = "qualite_cours_d_eau", + role = "admin") + +# Actualiser le commentaire sur la table +datalibaba::commenter_table( + comment = glue::glue( + "Analyses Nitrates ESU API Hubeau Qualit\u00e9 des nappes d\'eau souterraine (2007-", + last_year, + ")"), + table = "nitrate_qualite_rivieres_analyse_pc", + schema = "qualite_cours_d_eau", + db = "si_eau", + user = "admin" + ) + +``` + +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Import des donn\u00e9es Hubeau ESU", + template_dir = "import-des-donnees-hubeau-esu", + template_description = "Import des donn\u00e9es Hubeau ESU", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_import_hubeau_esu_data.Rmd" +destination_dir <- "inst/rmarkdown/templates/import-des-donnees-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} +# Keep eval=FALSE to avoid infinite loop in case you hit the knit button +# Execute in the console directly +fusen::inflate(flat_file = "dev/flat_import_hubeau_esu_data.Rmd", vignette_name = "Import des donn\u00e9es Hubeau ESU") +``` diff --git a/inst/rmarkdown/templates/import-des-donnees-hub-eau-esu/template.yaml b/inst/rmarkdown/templates/import-des-donnees-hubeau-esu/template.yaml similarity index 100% rename from inst/rmarkdown/templates/import-des-donnees-hub-eau-esu/template.yaml rename to inst/rmarkdown/templates/import-des-donnees-hubeau-esu/template.yaml diff --git a/inst/rmarkdown/templates/insertion-des-analyses-ars/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/insertion-des-analyses-ars/skeleton/skeleton.Rmd index 418785fa572f01e03ee940fb552e567bac39a34c..039d2bf4b9a1dea266005d5d6f4f61f1a26cd818 100644 --- a/inst/rmarkdown/templates/insertion-des-analyses-ars/skeleton/skeleton.Rmd +++ b/inst/rmarkdown/templates/insertion-des-analyses-ars/skeleton/skeleton.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,16 @@ library(RPostgres) pkgload::load_all(export_all = FALSE) ``` +```{r config, eval=FALSE} +# 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 + +``` + # Consolidation et insertion des données de l'ARS dans la table des analyses ## Chargement des données ARS brutes @@ -33,6 +44,7 @@ nitrate_data_analyse_ars <- datalibaba::importer_data( db = "si_eau", user = "admin" ) + ``` ## Consolidation des données ARS @@ -73,7 +85,7 @@ On affecte le code_remarque et la valeur des variables resultat_analyse et limi ```{r mutate-from_ana_param_alpha_resultat, eval=FALSE} # Ajouter les colonnes code_remarque, resultat_analyse et limite_quantification nitrate_analyse_ars <- nitrate_analyse_ars |> - mutate( + 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, @@ -89,6 +101,7 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> TRUE ~ NA_character_ # Utilisation de NA pour les valeurs non pertinentes ) ) + ``` On sélectionne les champs utiles à la table des analyses : @@ -132,9 +145,9 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> La table des prélèvements est chargée : ```{r load-nitrate_prelevement, eval=FALSE} -# Charger la table nitrates.nitrate_prelevement_v0_15 +# Charger la table nitrates.nitrate_prelevement_version nitrate_prelevement <- datalibaba::importer_data( - table = "nitrate_prelevement_v0_15", + table = glue::glue("nitrate_prelevement_", version), schema = "nitrates", db = "si_eau", user = "admin" @@ -155,57 +168,9 @@ On joint le dataframe des prélèvements pour récupérer la variable code_prele ```{r join-prelvement_ars, eval=FALSE} # Joindre les dataframes nitrate_analyse_ars et nitrate_prelevement nitrate_analyse_ars <- nitrate_analyse_ars |> - left_join(nitrate_prelevement |> - select(code_station, date_prelevement, code_prelevement), - by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) -``` - -```{r function-add_code_analyse, eval=FALSE} -#' Ajouter une variable code_analyse au dataframe -#' -#' @description Cette fonction ajoute une nouvelle variable `code_analyse` -#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est -#' construite en fonction du paramètre `version` fourni. -#' -#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter -#' la variable `code_analyse`. -#' @param version Une chaîne de caractères représentant la version de la -#' séquence à utiliser. -#' -#' @return Un dataframe avec une nouvelle colonne `code_analyse` contenant -#' les valeurs de la séquence PostgreSQL. -#' -#' @importFrom DBI dbGetQuery dbDisconnect -#' @importFrom dplyr mutate -#' @importFrom glue glue -#' @importFrom datalibaba connect_to_db -#' @export -add_code_analyse <- function(dataframe, version) { - # Établir une connexion à la base de données PostgreSQL - connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - - # Construire le nom de la séquence - sequence_name <- glue::glue("nitrates.nitrate_analyse_{version}_code_analyse_seq") - - # Initialiser une liste pour stocker les valeurs de la séquence - code_analyses <- c() - - # Pour chaque ligne du dataframe, obtenir une valeur de la séquence - for (i in 1:nrow(dataframe)) { - query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_analyse") - result <- DBI::dbGetQuery(connexion, query) - code_analyses <- c(code_analyses, result$code_analyse) - } - - # Ajouter la nouvelle variable au dataframe - dataframe <- dataframe |> - dplyr::mutate(code_analyse = code_analyses) - - # Fermer la connexion à la base de données - DBI::dbDisconnect(connexion) - - return(dataframe) -} + dplyr::left_join(nitrate_prelevement |> + dplyr::select(code_station, date_prelevement, code_prelevement), + by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) ``` @@ -213,7 +178,7 @@ On ajoute un identifiant unique s'appuyant sur une séquence stockée en base : ```{r add_code_analyse_ars, eval=FALSE} # Utiliser la fonction add_code_analyse_ars avec la version souhaitée nitrate_analyse_ars <- add_code_analyse( - nitrate_analyse_ars, "v0_15") + nitrate_analyse_ars, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_analyse_ars) @@ -239,10 +204,10 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> ``` On charge les données consolidées dans un table dédiée : -```{r insert-into_nitrate_prelevement_v0_15, eval=FALSE} +```{r insert_into_nitrate_prelevement_version, eval=FALSE} # Charger les données dans une nouvelle table en base datalibaba::poster_data(data = nitrate_analyse_ars, - table = "nitrate_analyse_ars_v0_15", + table = glue::glue("nitrate_analyse_ars_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -256,14 +221,36 @@ 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 = "nitrate_analyse_ars_v0_15", + source_table = glue::glue("nitrate_analyse_ars_", version), source_schema = "nitrates", - target_table = "nitrate_analyse_v0_15", + target_table = glue::glue("nitrate_analyse_", 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 analyses ARS", + template_dir = "insertion-des-analyses-ars", + template_description = "Insertion des analyses ARS", + template_create_dir = TRUE +) +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_insert_ars_into_analyse.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-analyses-ars/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 diff --git a/inst/rmarkdown/templates/insertion-des-analyses-hubeau-eso/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/insertion-des-analyses-hubeau-eso/skeleton/skeleton.Rmd index d48a9624bce734b03188bdbeff15314e1eb6b9a4..5b93e1b7a3b31485b3fe49cbc3234d67a4ae4eaa 100644 --- a/inst/rmarkdown/templates/insertion-des-analyses-hubeau-eso/skeleton/skeleton.Rmd +++ b/inst/rmarkdown/templates/insertion-des-analyses-hubeau-eso/skeleton/skeleton.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,15 @@ library(RPostgres) pkgload::load_all(export_all = FALSE) ``` +```{r config, eval=FALSE} +# 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 +``` + # Consolidation et insertion des analyses Hub'eau ESO dans la table des analyses ## Chargement des analyses Hub'eau ESO @@ -94,9 +104,9 @@ nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |> La table des prélèvements est chargée : ```{r load-nitrate_prelevement, eval=FALSE} -# Charger la table nitrates.nitrate_prelevement_v0_15 +# Charger la table nitrates.nitrate_prelevement_version nitrate_prelevement <- datalibaba::importer_data( - table = "nitrate_prelevement_v0_15", + table = glue::glue("nitrate_prelevement_", version), schema = "nitrates", db = "si_eau", user = "admin" @@ -117,9 +127,9 @@ On joint le dataframe des prélèvements pour récupérer la variable code_prele ```{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 |> - left_join(nitrate_prelevement |> - select(code_station, date_prelevement, code_prelevement), - by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) + 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`, @@ -135,7 +145,7 @@ 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_ars avec la version souhaitée nitrate_qualite_nappes_analyses <- add_code_analyse( - nitrate_qualite_nappes_analyses, "v0_15") + nitrate_qualite_nappes_analyses, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_qualite_nappes_analyses) @@ -162,10 +172,10 @@ nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |> ``` On charge les données consolidées dans un table dédiée : -```{r insert-into_nitrate_prelevement_v0_15, eval=FALSE} +```{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 = "nitrate_analyse_hubeau_eso_v0_15", + table = glue::glue("nitrate_analyse_hubeau_eso_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -179,14 +189,37 @@ 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 = "nitrate_analyse_hubeau_eso_v0_15", + source_table = glue::glue("nitrate_analyse_hubeau_eso_", version), source_schema = "nitrates", - target_table = "nitrate_analyse_v0_15", + target_table = glue::glue("nitrate_analyse_", 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 analyses Hubeau ESO", + template_dir = "insertion-des-analyses-hubeau-eso", + template_description = "Insertion des analyses Hubeau ESO", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_insert_hubeau_eso_into_analyse.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-analyses-hubeau-eso/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 diff --git a/inst/rmarkdown/templates/insertion-des-analyses-hubeau-esu/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/insertion-des-analyses-hubeau-esu/skeleton/skeleton.Rmd index 69fb3db52e0e967e12ef7405178d5a8b31b69bfc..a56efcdfab55f3d796491f60e1c7186872b233a5 100644 --- a/inst/rmarkdown/templates/insertion-des-analyses-hubeau-esu/skeleton/skeleton.Rmd +++ b/inst/rmarkdown/templates/insertion-des-analyses-hubeau-esu/skeleton/skeleton.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,15 @@ library(RPostgres) pkgload::load_all(export_all = FALSE) ``` +```{r config, eval=FALSE} +# 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 +``` + # Consolidation et insertion des analyses Hub'eau ESU dans la table des analyses ## Chargement des analyses Hub'eau ESU @@ -84,9 +94,9 @@ nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |> La table des prélèvements est chargée : ```{r load-nitrate_prelevement, eval=FALSE} -# Charger la table nitrates.nitrate_prelevement_v0_15 +# Charger la table nitrates.nitrate_prelevement_version nitrate_prelevement <- datalibaba::importer_data( - table = "nitrate_prelevement_v0_15", + table = glue::glue("nitrate_prelevement_", version), schema = "nitrates", db = "si_eau", user = "admin" @@ -107,9 +117,9 @@ On joint le dataframe des prélèvements pour récupérer la variable code_prele ```{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 |> - left_join(nitrate_prelevement |> - select(code_station, date_prelevement, code_prelevement), - by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) + 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`, @@ -125,7 +135,7 @@ 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_ars avec la version souhaitée nitrate_qualite_rivieres_analyses <- add_code_analyse( - nitrate_qualite_rivieres_analyses, "v0_15") + nitrate_qualite_rivieres_analyses, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_qualite_rivieres_analyses) @@ -152,10 +162,10 @@ nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |> ``` On charge les données consolidées dans une table dédiée : -```{r insert-into_nitrate_analyse_hubeau_esu_v0_15, eval=FALSE} +```{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 = "nitrate_analyse_hubeau_esu_v0_15", + table = glue::glue("nitrate_analyse_hubeau_esu_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -169,14 +179,37 @@ 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 = "nitrate_analyse_hubeau_esu_v0_15", + source_table = glue::glue("nitrate_analyse_hubeau_esu_", version), source_schema = "nitrates", - target_table = "nitrate_analyse_v0_15", + target_table = glue::glue("nitrate_analyse_", version), target_schema = "nitrates", role = "admin") ``` +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Insertion des analyses Hubeau ESU", + template_dir = "insertion-des-analyses-hubeau-esu", + template_description = "Insertion des analyses 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_analyse.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-analyses-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 diff --git a/inst/rmarkdown/templates/insertion-des-prelevements-ars/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/insertion-des-prelevements-ars/skeleton/skeleton.Rmd index 2507cc574230d42bc5c14a05aad6a9cef405ed5c..2931a8d2f8536bd4fc187df47db211f3be9a5c4a 100644 --- a/inst/rmarkdown/templates/insertion-des-prelevements-ars/skeleton/skeleton.Rmd +++ b/inst/rmarkdown/templates/insertion-des-prelevements-ars/skeleton/skeleton.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,9 +21,18 @@ library(RPostgres) pkgload::load_all(export_all = FALSE) ``` +```{r config, eval=FALSE} +# 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 +``` + # 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, eval=FALSE} @@ -34,6 +44,16 @@ nitrate_data_analyse_ars <- datalibaba::importer_data( ) ``` +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` : @@ -63,6 +83,7 @@ nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> date_prelevement = plv_date, heure_prelevement = plv_heure, code_support, + nature_eau, id_usage = usage, id_prelevement_motif = plv_motif) @@ -76,60 +97,35 @@ nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE) ``` -```{r function-add_code_prelevement, eval=FALSE} -#' Ajouter une variable code_prelevement au dataframe -#' -#' @description Cette fonction ajoute une nouvelle variable `code_prelevement` -#' au dataframe en utilisant une séquence PostgreSQL dynamique. La séquence est -#' construite en fonction du paramètre `version` fourni. -#' -#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter -#' la variable `code_prelevement`. -#' @param version Une chaîne de caractères représentant la version de la -#' séquence à utiliser. -#' -#' @return Un dataframe avec une nouvelle colonne `code_prelevement` contenant -#' les valeurs de la séquence PostgreSQL. -#' -#' @importFrom DBI dbGetQuery dbDisconnect -#' @importFrom dplyr mutate -#' @importFrom glue glue -#' @importFrom datalibaba connect_to_db -#' @export -add_code_prelevement <- function(dataframe, version) { - # Établir une connexion à la base de données PostgreSQL - connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - - # Construire le nom de la séquence - sequence_name <- glue::glue("nitrates.nitrate_prelevement_{version}_code_prelevement_seq") - - # Initialiser une liste pour stocker les valeurs de la séquence - code_prelevements <- c() - - # Pour chaque ligne du dataframe, obtenir une valeur de la séquence - for (i in 1:nrow(dataframe)) { - query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_prelevement") - result <- DBI::dbGetQuery(connexion, query) - code_prelevements <- c(code_prelevements, result$code_prelevement) - } - - # Ajouter la nouvelle variable au dataframe - dataframe <- dataframe |> - dplyr::mutate(code_prelevement = code_prelevements) - - # Fermer la connexion à la base de données - DBI::dbDisconnect(connexion) - - return(dataframe) -} +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_ars avec la version souhaitée nitrate_data_analyse_ars <- add_code_prelevement( - nitrate_data_analyse_ars, "v0_15") + nitrate_data_analyse_ars, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_data_analyse_ars) @@ -137,10 +133,10 @@ print(nitrate_data_analyse_ars) ``` On charge les données consolidées dans un table dédiée : -```{r insert-into_nitrate_prelevement_v0_15, eval=FALSE} +```{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 = "nitrate_prelevement_ars_v0_15", + table = glue::glue("nitrate_prelevement_ars_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -154,14 +150,34 @@ 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 = "nitrate_prelevement_ars_v0_15", + source_table = glue::glue("nitrate_prelevement_ars_", version), source_schema = "nitrates", - target_table = "nitrate_prelevement_v0_15", + target_table = glue::glue("nitrate_prelevement_", version), target_schema = "nitrates", role = "admin") ``` +```{r development-skeleton, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Insertion des pr\u00e9l\u00e8vements ARS", + template_dir = "insertion-des-prelevements-ars", + template_description = "Insertion des pr\u00e9l\u00e8vements ARS", + template_create_dir = TRUE +) + +# Définir les chemins source et destination +source_file <- "dev/flat_insert_ars_into_prelevement.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-prelevements-ars/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 diff --git a/inst/rmarkdown/templates/insertion-des-prelevements-ars/template.yaml b/inst/rmarkdown/templates/insertion-des-prelevements-ars/template.yaml index 79ed12ffe7f3219b815b0a56d7e7ea0abff86b01..82c2d2944a0da87c524a233e5f4fdb1f39f732b0 100644 --- a/inst/rmarkdown/templates/insertion-des-prelevements-ars/template.yaml +++ b/inst/rmarkdown/templates/insertion-des-prelevements-ars/template.yaml @@ -1,4 +1,4 @@ name: Insertion des prélèvements ARS description: > Insertion des prélèvements ARS -create_dir: FALSE +create_dir: TRUE diff --git a/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/skeleton/skeleton.Rmd index b87e02a5463d04ad7339633af1a6e845eb28f823..94a8a53d035afe7bce054b834f633f1b014263c1 100644 --- a/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/skeleton/skeleton.Rmd +++ b/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/skeleton/skeleton.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,15 @@ library(RPostgres) pkgload::load_all(export_all = FALSE) ``` +```{r config, eval=FALSE} +# 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 +``` + # Consolidation et insertion des données Hub'eau ESO dans la table des prélèvements ## Chargement des prélèvements Hub'eau ESO @@ -47,13 +57,14 @@ nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |> ## Consolidation des prélèvements Hub'eau ESO -On ajoute les variables `source` et `code_support` : +On ajoute les variables `source`, `code_support` et `nature_eau` : ```{r add-source_code_support_hubeau_eso, eval=FALSE} -# Ajouter les variables source et code_support +# Ajouter les variables source, code_support et nature_eau nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |> dplyr::mutate( source = "ADES", - code_support = 3) + code_support = 3, + nature_eau = "ESO") ``` On sélectionne les champs utiles à la table des prélèvements : @@ -64,7 +75,8 @@ nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |> code_reseau = codes_reseau, code_station = bss_id, date_prelevement = date_debut_prelevement, - code_support) + code_support, + nature_eau) ``` On modifie le type de la variable `code_support` de character en integer : @@ -87,7 +99,7 @@ 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, "v0_15") + nitrate_qualite_nappes_prelevements, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_qualite_nappes_prelevements) @@ -97,8 +109,8 @@ print(nitrate_qualite_nappes_prelevements) 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 = "nitrate_prelevement_hubeau_eso_v0_15", +datalibaba::poster_data(data = nitrate_qualite_nappes_prelevements, + table = glue::glue("nitrate_prelevement_hubeau_eso_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -112,14 +124,34 @@ 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 = "nitrate_prelevement_hubeau_eso_v0_15", + source_table = glue::glue("nitrate_prelevement_hubeau_eso_", version), source_schema = "nitrates", - target_table = "nitrate_prelevement_v0_15", + target_table = glue::glue("nitrate_prelevement_", version), target_schema = "nitrates", role = "admin") ``` +```{r development-skeleton, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Insertion des pr\u00e9l\u00e8vements Hubeau ESO", + template_dir = "insertion-des-prelevements-hubeau-eso", + template_description = "Insertion des pr\u00e9l\u00e8vements Hubeau ESO", + template_create_dir = TRUE +) + +# Définir les chemins source et destination +source_file <- "dev/flat_insert_hubeau_eso_into_prelevement.Rmd" +destination_dir <- "inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/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 diff --git a/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/template.yaml b/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/template.yaml index 6cc2eeb42f8f937d68e7ca83e6eb827c6f0adea7..6ebe66a2e8b91bb28f80ff36b220ff84ca5ecb13 100644 --- a/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/template.yaml +++ b/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-eso/template.yaml @@ -1,4 +1,4 @@ name: Insertion des prélèvements Hubeau ESO description: > Insertion des prélèvements Hubeau ESO -create_dir: FALSE +create_dir: TRUE diff --git a/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-esu/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-esu/skeleton/skeleton.Rmd index 856ef327732c96f5f1427b0026779c5400449404..70e2525d1c26b31b4f29896f99fb37ca98b3e27d 100644 --- a/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-esu/skeleton/skeleton.Rmd +++ b/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-esu/skeleton/skeleton.Rmd @@ -7,6 +7,7 @@ editor_options: ```{r development, include=FALSE} library(testthat) +library(yaml) library(datalibaba) library(dplyr) library(stringr) @@ -20,6 +21,15 @@ library(RPostgres) pkgload::load_all(export_all = FALSE) ``` +```{r config, eval=FALSE} +# 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 +``` + # Consolidation et insertion des données Hub'eau ESU dans la table des prélèvements ## Chargement des prélèvements Hub'eau ESU @@ -47,11 +57,14 @@ nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements | ) ``` -On ajoute la variable `source` : +On ajoute les variables `source` et `nature_eau` : ```{r add-source_code_support_hubeau_esu, eval=FALSE} -# Ajouter les variables source et code_support +# Ajouter les variables source et nature_eau nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |> - dplyr::mutate(source = "Na\u00efades") + dplyr::mutate( + source = "Na\u00efades", + nature_eau = "ESU") + ``` On sélectionne les champs utiles à la table des prélèvements : @@ -64,6 +77,7 @@ nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements | date_prelevement, heure_prelevement, code_support, + nature_eau, commentaire = commentaires_analyse) ``` @@ -87,7 +101,7 @@ 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, "v0_15") + nitrate_qualite_rivieres_prelevements, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_qualite_rivieres_prelevements) @@ -98,7 +112,7 @@ 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 = "nitrate_prelevement_hubeau_esu_v0_15", + table = glue::glue("nitrate_prelevement_hubeau_esu_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -112,14 +126,34 @@ 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 = "nitrate_prelevement_hubeau_esu_v0_15", + source_table = glue::glue("nitrate_prelevement_hubeau_esu_", version), source_schema = "nitrates", - target_table = "nitrate_prelevement_v0_15", + target_table = glue::glue("nitrate_prelevement_", version), target_schema = "nitrates", role = "admin") ``` +```{r development-skeleton, eval=FALSE} +# Créer de 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 +) + +# 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 diff --git a/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-esu/template.yaml b/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-esu/template.yaml index df273c69358c6dadab13214137479613412d7d39..a6b66b1d43cee3b14c4f7338bccf46a50e5a4d1e 100644 --- a/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-esu/template.yaml +++ b/inst/rmarkdown/templates/insertion-des-prelevements-hubeau-esu/template.yaml @@ -1,4 +1,4 @@ name: Insertion des prélèvements Hubeau ESU description: > Insertion des prélèvements Hubeau ESU -create_dir: FALSE +create_dir: TRUE diff --git a/inst/rmarkdown/templates/liste-des-tables-existantes/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/liste-des-tables-existantes/skeleton/skeleton.Rmd new file mode 100644 index 0000000000000000000000000000000000000000..0ede240e4ed4ed16d01db8ecc11676b0eaeb0356 --- /dev/null +++ b/inst/rmarkdown/templates/liste-des-tables-existantes/skeleton/skeleton.Rmd @@ -0,0 +1,93 @@ +--- +title: "Liste des tables existantes" +output: html_document +editor_options: + chunk_output_type: console +--- + +```{r development, include=FALSE} +library(testthat) +``` + +```{r development-load} +# Load already included functions if relevant +pkgload::load_all(export_all = FALSE) +``` + +# Présentation + +Cette page contient la logique métier permettant de consulter les lots de données +existants pour le projet Nitrates. + +# Exploration des données existantes + +## Connexion à la base de données PostgreSQL + +```{r connect_to_db, eval=FALSE} +# Se connecter à la base de données PostgreSQL si_eau +connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") +``` + +## Liste des schémas de la base de données `si_eau` + +```{r list_schemas, eval=FALSE} +# Lister les schémas présents dans la base +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]) + +# Trier le dataframe par la variable nom_schema +schemas_list <- schemas_list |> + arrange(nom_schema) +``` + +## Liste des tables du schéma `nitrates` + +```{r list_tables, eval=FALSE} +# Lister les tables présentes dans le schéma spécifié +tables_list <- data.frame(datalibaba::list_tables( + con = connexion, + db = "si_eau", + schema = "nitrates")) + +# Renommer la variable unique en "nom_table" +tables_list <- tables_list |> + rename(nom_table = names(tables_list)[1]) + +# Trier le dataframe par la variable nom_table +tables_list <- tables_list |> + arrange(nom_table) + +``` + +```{r development-skeleton-dir, eval=FALSE} +# Créer de l'arborescence et des fichiers du template +usethis::use_rmarkdown_template( + template_name = "Liste des tables existantes", + template_dir = "liste-des-tables-existantes", + template_description = "Liste des tables existantes", + template_create_dir = TRUE +) + +``` + +```{r development-skeleton-copy, eval=FALSE} +# Définir les chemins source et destination +source_file <- "dev/flat_list_existing_tables.Rmd" +destination_dir <- "inst/rmarkdown/templates/liste-des-tables-existantes/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_list_existing_tables.Rmd", vignette_name = "Liste des tables existantes") +``` + diff --git a/inst/rmarkdown/templates/liste-des-tables-existantes/template.yaml b/inst/rmarkdown/templates/liste-des-tables-existantes/template.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bed89bc20703ddb534ec1f009d1c9e1f20bc6651 --- /dev/null +++ b/inst/rmarkdown/templates/liste-des-tables-existantes/template.yaml @@ -0,0 +1,4 @@ +name: Liste des tables existantes +description: > + Liste des tables existantes +create_dir: TRUE diff --git a/man/create_nitrate_analyse_table.Rd b/man/create_nitrate_analyse_table.Rd index a3b57535a3cef4a504277ddd38a5e874b7045348..e1ce932054aaeaae1a4ee1e3e5ebe37128f6959c 100644 --- a/man/create_nitrate_analyse_table.Rd +++ b/man/create_nitrate_analyse_table.Rd @@ -1,17 +1,15 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/create_nitrate_prelevement_table.R +% 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, connexion) +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.} - -\item{connexion}{DBIConnection. Connexion active à la base de données PostgreSQL.} } \value{ String. Le script SQL utilisé pour créer la table. @@ -21,12 +19,3 @@ 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. } -\examples{ -# Connexion à la base de données -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - -# Création du script SQL avec la version choisie -version <- "v0_16" -last_year <- "2023" -sql <- create_nitrate_analyse_table(version, last_year, connexion) -} diff --git a/man/create_nitrate_prelevement_table.Rd b/man/create_nitrate_prelevement_table.Rd index 1f1f58ec328c308d7e46d84770bd6f86d6a87634..085106846f9f38b38bd121185e6d179f4aafe0dc 100644 --- a/man/create_nitrate_prelevement_table.Rd +++ b/man/create_nitrate_prelevement_table.Rd @@ -4,14 +4,12 @@ \alias{create_nitrate_prelevement_table} \title{Créer une table de prélèvements de nitrates} \usage{ -create_nitrate_prelevement_table(version, last_year, connexion) +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.} - -\item{connexion}{DBIConnection. Connexion active à la base de données PostgreSQL.} } \value{ String. Le script SQL utilisé pour créer la table. @@ -21,12 +19,3 @@ 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. } -\examples{ -# Connexion à la base de données -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - -# Création du script SQL avec la version choisie -version <- "v0_16" -last_year <- "2023" -sql <- create_nitrate_prelevement_table(version, last_year, connexion) -} diff --git a/vignettes/creation-des-tables-et-des-sequences.Rmd b/vignettes/creation-des-tables-et-des-sequences.Rmd new file mode 100644 index 0000000000000000000000000000000000000000..c9498328ef147c7ef2f62ef9d118833ef406172d --- /dev/null +++ b/vignettes/creation-des-tables-et-des-sequences.Rmd @@ -0,0 +1,69 @@ +--- +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 +``` + + +# 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 + +## Incrémentation de la table des analyses + + + diff --git a/vignettes/creation-des-tables-finales.Rmd b/vignettes/creation-des-tables-finales.Rmd deleted file mode 100644 index 88b9a5f25615a6aabfacb765dc8045d53a123fbb..0000000000000000000000000000000000000000 --- a/vignettes/creation-des-tables-finales.Rmd +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Création des tables finales" -output: rmarkdown::html_vignette -vignette: > - %\VignetteIndexEntry{creation-des-tables-finales} - %\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_create_tables.Rmd: do not edit by hand --> - -# Présentation - -> Cette page contient la logique métier concernant la création des tables de prélèvements et d'analyses concernant les nitrates. - - -# Table des prélèvements - -```{r examples-create_nitrate_prelevement_table, eval = FALSE} -# Connexion à la base de données -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - -# Création du script SQL avec la version choisie -version <- "v0_16" -last_year <- "2023" -sql <- create_nitrate_prelevement_table(version, last_year, connexion) -``` - -```{r examples-create_nitrate_analyse_table, eval = FALSE} -# Connexion à la base de données -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") - -# Création du script SQL avec la version choisie -version <- "v0_16" -last_year <- "2023" -sql <- create_nitrate_analyse_table(version, last_year, connexion) -``` - diff --git a/vignettes/import-des-donnees-ars.Rmd b/vignettes/import-des-donnees-ars.Rmd index a4206dc1369a68123ad00b9e2a616c2c2a089a03..a5b00cbb4e229bd755e7c9f6048624c38d51badf 100644 --- a/vignettes/import-des-donnees-ars.Rmd +++ b/vignettes/import-des-donnees-ars.Rmd @@ -2,7 +2,7 @@ title: "Import des données ARS" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{import-des-donnees-ars} + %\VignetteIndexEntry{Import des données ARS} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -14,105 +14,89 @@ knitr::opts_chunk$set( ) ``` -```{r setup} +```{r} library(data.nitrates) ``` <!-- WARNING - This vignette is generated by {fusen} from dev/flat_import_ars_data.Rmd: do not edit by hand --> -# Présentation - -Cette page contient la logique métier concernant l'import des données brutes -fournies par l'ARS dans une base de données POstgreSQL dans le cadre du projet -Nitrates - -# Connexion à la base de données PostgreSQL -```{r connect_to_db, eval = FALSE} -# Se connecter à la base de données PostgreSQL si_eau -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") -``` -```{r list_schemas, eval = FALSE} -# Lister les schémas présents dans la base -schemas_list <- data.frame(datalibaba::list_schemas(connexion)) +```{r config} +#| eval: no -# Renommer la variable unique en "nom_schema" -schemas_list <- schemas_list |> - rename(nom_schema = unique(names(.))) +# Lire le fichier de configuration +config <- yaml::read_yaml("config.yml") -# Trier le dataframe par la variable nom_schema -schemas_list <- schemas_list |> - arrange(nom_schema) +# Accéder aux valeurs pour version et last_year +version <- config$version +last_year <- config$last_year +filepath_data_ars <- config$filepath_data_ars ``` -```{r list_tables, eval = FALSE} -# Lister les tables présentes dans le schéma spécifié -tables_list <- data.frame(datalibaba::list_tables( - con = connexion, - db = "si_eau", - schema = "nitrates")) - -# Renommer la variable unique en "nom_table" -tables_list <- tables_list |> - rename(nom_table = names(tables_list)[1]) -# Trier le dataframe par la variable nom_table -tables_list <- tables_list |> - arrange(nom_table) +# Présentation -``` +Cette page contient la logique métier concernant l'import des données brutes +fournies par l'ARS dans une base de données POstgreSQL dans le cadre du projet +Nitrates. # Import des données de l'ARS dans un dataframe par millésime Les données sont transmies au format XLSX. +```{r import_data_ars_last_year} +#| eval: no - -```{r import_data_ars_2023, eval = FALSE} -data_ars_2023 <- collectr::import_xlsx( - filepath = "T:\\datalab\\SRNP_DEMA_SI_EAU\\NITRATES\\DONNEES_CLIENT\\SOURCES\\ARS\\2024_06\\Nitrates 2023 pour DREAL EPNT4 2024-05-31.xlsx", +data_ars_last_year <- collectr::import_xlsx( + filepath = filepath_data_ars, sheet = 1, row = 2) ``` + # Création d'une table pour le nouveau millésime +```{r create-nitrate_data_ars} +#| eval: no -```{r create-nitrate_data_ars, eval = FALSE} # Charger les données dans une nouvelle table en base -datalibaba::poster_data(data = data_ars_2023, - table = "nitrate_data_analyse_ars_2023", +datalibaba::poster_data(data = data_ars_last_year, + table = glue::glue("nitrate_data_analyse_ars_", last_year), schema = "nitrates", db = "si_eau", overwrite = TRUE, user = "admin") # Ajouter un commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2023)", - table = "nitrate_data_analyse_ars_2023", +datalibaba::commenter_table(comment = glue::glue("Analyses Nitrates ARS (", last_year, ")"), + table = glue::glue("nitrate_data_analyse_ars_", last_year), schema = "nitrates", db = "si_eau", user = "admin") ``` + # Modification du type des champs si besoin +```{r modify_column_type} +#| eval: no -```{r modify_column_type, eval = FALSE} # Modifier le type de colonne pour les champs de date collectr::modify_column_type(database = "si_eau", schema = "nitrates", - table = "nitrate_data_analyse_ars_2023", + table = glue::glue("nitrate_data_analyse_ars_", last_year), column_name = "plv_date", column_type = "date", role = "admin") ``` + # Archivage de la version précédente de la table +```{r archive_table} +#| eval: no -```{r archive_table, eval = FALSE} # Archiver la version actuelle de la table avec tous les millésimes collectr::archive_table(database = "si_eau", schema = "nitrates", @@ -122,22 +106,28 @@ collectr::archive_table(database = "si_eau", ``` + # Insertion des données du nouveau millésime en base dans la table globale +```{r import_and_merge_tables} +#| eval: no -```{r import_and_merge_tables, 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 = "nitrate_data_analyse_ars_2023", + source_table = glue::glue("nitrate_data_analyse_ars_", last_year), source_schema = "nitrates", target_table = "nitrate_data_analyse_ars", target_schema = "nitrates", role = "admin") # Actualiser le commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ARS (2007-2023)", +datalibaba::commenter_table(comment = glue::glue("Analyses Nitrates ARS (2007-", last_year, ")", table = "nitrate_data_analyse_ars", schema = "nitrates", db = "si_eau", user = "admin") ``` + + + + diff --git a/vignettes/import-des-donnees-hub-eau-eso.Rmd b/vignettes/import-des-donnees-hub-eau-eso.Rmd index b85e1f9f8f1fec3787b1ff8dd7870ac875315435..db8192814ffcc4cda6b3ea2dc3a6adfc9a4d20ee 100644 --- a/vignettes/import-des-donnees-hub-eau-eso.Rmd +++ b/vignettes/import-des-donnees-hub-eau-eso.Rmd @@ -2,7 +2,7 @@ title: "Import des données Hub'eau ESO" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{import-des-donnees-hub-eau-eso} + %\VignetteIndexEntry{Import des données Hub'eau ESO} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -14,129 +14,90 @@ knitr::opts_chunk$set( ) ``` -```{r setup} +```{r} library(data.nitrates) ``` <!-- WARNING - This vignette is generated by {fusen} from dev/flat_import_hubeau_eso_data.Rmd: do not edit by hand --> -# Présentation - -> Cette page contient la logique métier concernant l'import des données de -l'[API Hub'eau "Qualité des nappes d'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) dans le cadre du projet Nitrates - -# Connexion à la base de données PostgreSQL -```{r connect_to_db, eval = FALSE} -# Se connecter à la base de données PostgreSQL si_eau -connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") -``` -```{r list_schemas, eval = FALSE} -# Lister les schémas présents dans la base -schemas_list <- data.frame(datalibaba::list_schemas(connexion)) +```{r config} +#| eval: no -# Renommer la variable unique en "nom_schema" -schemas_list <- schemas_list |> - rename(nom_schema = unique(names(.))) +# Lire le fichier de configuration +config <- yaml::read_yaml("config.yml") -# Trier le dataframe par la variable nom_schema -schemas_list <- schemas_list |> - arrange(nom_schema) +# Accéder à la valeur pour last_year +last_year <- config$last_year ``` -```{r list_tables, eval = FALSE} -# Lister les tables présentes dans le schéma spécifié -tables_list <- data.frame(datalibaba::list_tables( - con = connexion, - db = "si_eau", - schema = "qualite_cours_d_eau")) -# Renommer la variable unique en "nom_table" -tables_list <- tables_list |> - rename(nom_table = names(tables_list)[1]) +# Présentation -# Trier le dataframe par la variable nom_table -tables_list <- tables_list |> - arrange(nom_table) - -``` +Cette page contient la logique métier concernant l'import des données de +l'[API Hub'eau "Qualit\u00e9 des nappes d\'eau souterraine"](https://hubeau.eaufrance.fr/page/api-qualite-nappes) +dans le cadre du projet Nitrates. # Import des données Hub'eau ESU dans un dataframe par millésime On utilise la fonction `get_qualite_nappes_analyses()` du package [{hubeau}](https://github.com/inrae/hubeau) - - -```{r create-nitrate_analyse_esu_2020, eval = FALSE} -nitrate_analyse_eso_2020 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2020-01-01", - date_fin_prelevement = "2020-12-31", - size = "5000") -``` - -```{r create-nitrate_analyse_esu_2021, eval = FALSE} -nitrate_analyse_eso_2021 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2021-01-01", - date_fin_prelevement = "2021-12-31", - size = "5000") +```{r create-nitrate_analyse_esu_last_year} +#| eval: no + +nitrate_analyse_eso_last_year <- hubeau::get_qualite_nappes_analyses(code_param = "1340", + code_region = "52", + date_debut_prelevement = glue::glue(last_year, "-01-01"), + date_fin_prelevement = glue::glue(last_year, "-12-31"), + size = "5000") ``` -```{r create-nitrate_analyse_esu_2022, eval = FALSE} -nitrate_analyse_eso_2022 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2022-01-01", - date_fin_prelevement = "2022-12-31", - size = "5000") - -``` - -```{r create-nitrate_analyse_esu_2023, eval = FALSE} -nitrate_analyse_eso_2023 <- hubeau::get_qualite_nappes_analyses(code_param = "1340", - code_region = "52", - date_debut_prelevement = "2023-01-01", - date_fin_prelevement = "2023-12-31", - size = "5000") -``` # Création d'une table pour le nouveau millésime +```{r create-nitrate_data_ars} +#| eval: no -```{r create-nitrate_data_ars, eval = FALSE} # Charger les données dans une nouvelle table en base -datalibaba::poster_data(data = nitrate_analyse_eso_2023, - table = "nitrate_qualite_nappes_analyses_2023", +datalibaba::poster_data(data = nitrate_analyse_eso_last_year, + table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), schema = "qualite_nappes_eau_souterraine", db = "si_eau", overwrite = TRUE, user = "admin") # Ajouter un commentaire sur la table -datalibaba::commenter_table(comment = "Analyses \"Nitrates\" ESO issues de l''API Hub''eau qualite_nappes : données brutes", - table = "nitrate_qualite_nappes_analyses_2023", - schema = "qualite_nappes_eau_souterraine", - db = "si_eau", - user = "admin") +datalibaba::commenter_table( + comment = glue::glue( + "Analyses \"Nitrates\" ESO issues de l\'\'API Hub\'\'eau qualite_nappes : donn\u00e9es brutes", + last_year), + table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), + schema = "qualite_nappes_eau_souterraine", + db = "si_eau", + user = "admin") ``` + # Modification du type des champs si besoin +```{r modify_column_type} +#| eval: no -```{r modify_column_type, eval = FALSE} # Modifier le type de colonne pour les champs de date collectr::modify_column_type(database = "si_eau", schema = "qualite_nappes_eau_souterraine", - table = "nitrate_qualite_nappes_analyses_2023", + table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), column_name = "date_debut_prelevement", column_type = "date", role = "admin") ``` + # Archivage de la version précédente de la table +```{r archive_table} +#| eval: no -```{r archive_table, eval = FALSE} # Archiver la version actuelle de la table avec tous les millésimes collectr::archive_table(database = "si_eau", schema = "qualite_nappes_eau_souterraine", @@ -146,22 +107,31 @@ collectr::archive_table(database = "si_eau", ``` + # Insertion des données du nouveau millésime en base dans la table globale +```{r import_and_merge_tables} +#| eval: no -```{r import_and_merge_tables, 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 = "nitrate_qualite_nappes_analyses_2023", + source_table = glue::glue("nitrate_qualite_nappes_analyses_", last_year), source_schema = "qualite_nappes_eau_souterraine", target_table = "nitrate_qualite_nappes_analyses", target_schema = "qualite_nappes_eau_souterraine", role = "admin") # Actualiser le commentaire sur la table -datalibaba::commenter_table(comment = "Analyses Nitrates ESO API Hub'eau Qualité des nappes d'eau souterraine (2007-2023)", - table = "nitrate_qualite_nappes_analyses", - schema = "qualite_nappes_eau_souterraine", - db = "si_eau", - user = "admin") +datalibaba::commenter_table( + comment = glue::glue( + "Analyses Nitrates ESO API Hub\'eau Qualit\u00e9 des nappes d\'eau souterraine (2007-", + last_year, + ")"), + table = "nitrate_qualite_nappes_analyses", + schema = "qualite_nappes_eau_souterraine", + db = "si_eau", + user = "admin") ``` + + + diff --git a/vignettes/insertion-des-analyses-ars.Rmd b/vignettes/insertion-des-analyses-ars.Rmd index 5f76b05a8ff87f7e25d2b036337086b010a01f47..ab6a7a1bd9a67e5d2dbb64b5da396e9d5017fdeb 100644 --- a/vignettes/insertion-des-analyses-ars.Rmd +++ b/vignettes/insertion-des-analyses-ars.Rmd @@ -2,7 +2,7 @@ title: "Insertion des analyses ARS" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{insertion-des-analyses-ars} + %\VignetteIndexEntry{Insertion des analyses ARS} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -14,19 +14,36 @@ knitr::opts_chunk$set( ) ``` -```{r setup} +```{r} library(data.nitrates) ``` <!-- WARNING - This vignette is generated by {fusen} from dev/flat_insert_ars_into_analyse.Rmd: do not edit by hand --> -# Consolidation et insertion des données de l'ARS dans la table des prélèvements + + + +```{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 + +``` + + +# Consolidation et insertion des données de l'ARS dans la table des analyses ## Chargement des données ARS brutes La table des données brutes Nitrates de l'ARS est chargée : +```{r load-nitrate_data_analyse_ars} +#| eval: no -```{r load-nitrate_data_analyse_ars, eval = FALSE} # Charger la table nitrates.nitrate_data_analyse_ars nitrate_data_analyse_ars <- datalibaba::importer_data( table = "nitrate_data_analyse_ars", @@ -34,22 +51,27 @@ nitrate_data_analyse_ars <- datalibaba::importer_data( db = "si_eau", user = "admin" ) + ``` + ## Consolidation des données ARS On supprime les enregistrements correspondants à des totaux : +```{r filter-param_nom_ars} +#| eval: no -```{r filter-param_nom_ars, eval = FALSE} # Supprimer les lignes ne correspondant pas à une analyse nitrate_analyse_ars <- nitrate_data_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 -```{r replace-strings-with-na, eval = FALSE} # Remplacer chaînes de caractère dans la colonne ana_param_alpha_resultat nitrate_analyse_ars <- nitrate_analyse_ars |> dplyr::mutate( @@ -61,9 +83,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} +#| eval: no -```{r replace-dot_ana_param_alpha_resultat, eval = FALSE} # Remplacer les valeurs dans les colonnes ana_param_alpha_resultat et param_code nitrate_analyse_ars <- nitrate_analyse_ars |> dplyr::mutate( @@ -73,12 +97,14 @@ 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} +#| eval: no -```{r mutate-from_ana_param_alpha_resultat, eval = FALSE} # Ajouter les colonnes code_remarque, resultat_analyse et limite_quantification nitrate_analyse_ars <- nitrate_analyse_ars |> - mutate( + 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, @@ -94,11 +120,14 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> TRUE ~ NA_character_ # Utilisation de NA pour les valeurs non pertinentes ) ) + ``` + On sélectionne les champs utiles à la table des analyses : +```{r select-variables-ars} +#| eval: no -```{r select-variables-ars, eval = FALSE} # Sélectionner les variables nitrate_analyse_ars <- nitrate_analyse_ars |> dplyr::select(code_station = ins_code_national, @@ -113,9 +142,11 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> ``` + On supprime les caractères < et > dans les variables resultat_analyse et limite_quantification : +```{r replace-inferior_superior} +#| eval: no -```{r replace-inferior_superior, eval = FALSE} # Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification nitrate_analyse_ars <- nitrate_analyse_ars |> dplyr::mutate(resultat_analyse = @@ -125,9 +156,11 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> ``` + On modifie le type des variables resultat_analyse et limite_quantification : +```{r change-fieldtypes} +#| eval: no -```{r change-fieldtypes, eval = FALSE} # 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), @@ -136,14 +169,16 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> ``` -# Jointure avec la table des prélèvements créée auparavant + +## 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 -```{r load-nitrate_prelevement, eval = FALSE} -# Charger la table nitrates.nitrate_prelevement_v0_15 +# Charger la table nitrates.nitrate_prelevement_version nitrate_prelevement <- datalibaba::importer_data( - table = "nitrate_prelevement_v0_15", + table = glue::glue("nitrate_prelevement_", version), schema = "nitrates", db = "si_eau", user = "admin" @@ -151,43 +186,52 @@ nitrate_prelevement <- datalibaba::importer_data( ``` + 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 -```{r select-distinct-rows-ars, eval = FALSE} # 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 -```{r join-prelvement_ars, eval = FALSE} # Joindre les dataframes nitrate_analyse_ars et nitrate_prelevement nitrate_analyse_ars <- nitrate_analyse_ars |> - left_join(nitrate_prelevement |> - select(code_station, date_prelevement, code_prelevement), - by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) + 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 -```{r add_code_analyse_ars, eval = FALSE} # Utiliser la fonction add_code_analyse_ars avec la version souhaitée nitrate_analyse_ars <- add_code_analyse( - nitrate_analyse_ars, "v0_15") + nitrate_analyse_ars, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_analyse_ars) ``` -# Chargement en base + +## 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 -```{r select-variables-ars-final, eval = FALSE} # Sélectionner les variables dans l'ordre des champs de la table à alimenter nitrate_analyse_ars <- nitrate_analyse_ars |> dplyr::select(code_analyse, @@ -202,12 +246,14 @@ nitrate_analyse_ars <- nitrate_analyse_ars |> ``` + On charge les données consolidées dans un table dédiée : +```{r insert_into_nitrate_prelevement_version} +#| eval: no -```{r insert-into_nitrate_prelevement_v0_15, eval = FALSE} # Charger les données dans une nouvelle table en base datalibaba::poster_data(data = nitrate_analyse_ars, - table = "nitrate_analyse_ars_v0_15", + table = glue::glue("nitrate_analyse_ars_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -215,18 +261,23 @@ datalibaba::poster_data(data = nitrate_analyse_ars, user = "admin") ``` -# Insertion des données ARS du nouveau millésime en base dans la table globale + +## 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 -```{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 = "nitrate_analyse_ars_v0_15", + source_table = glue::glue("nitrate_analyse_ars_", version), source_schema = "nitrates", - target_table = "nitrate_analyse_v0_15", + target_table = glue::glue("nitrate_analyse_", version), target_schema = "nitrates", role = "admin") ``` + + + diff --git a/vignettes/insertion-des-analyses-hubeau-eso.Rmd b/vignettes/insertion-des-analyses-hubeau-eso.Rmd index 891cd91656c974c253e85a456a5d4131155cbaa7..5d7ce0d56111183015da643d8b408cd89a93fa8e 100644 --- a/vignettes/insertion-des-analyses-hubeau-eso.Rmd +++ b/vignettes/insertion-des-analyses-hubeau-eso.Rmd @@ -2,7 +2,7 @@ title: "Insertion des analyses Hubeau ESO" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{insertion-des-analyses-hubeau-eso} + %\VignetteIndexEntry{Insertion des analyses Hubeau ESO} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -14,19 +14,35 @@ knitr::opts_chunk$set( ) ``` -```{r setup} +```{r} 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: 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 +``` + + # 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: no -```{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", @@ -36,22 +52,26 @@ nitrate_qualite_nappes_analyses <- 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_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: no -```{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( @@ -62,9 +82,11 @@ nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |> ``` + On sélectionne les champs utiles à la table des analyses : +```{r select-variables-hubeau_eso} +#| eval: no -```{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, @@ -80,9 +102,11 @@ nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |> ``` + On modifie le type des variables numériques : +```{r change-fieldtypes} +#| eval: no -```{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), @@ -95,14 +119,16 @@ nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |> ``` + # 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 -```{r load-nitrate_prelevement, eval = FALSE} -# Charger la table nitrates.nitrate_prelevement_v0_15 +# Charger la table nitrates.nitrate_prelevement_version nitrate_prelevement <- datalibaba::importer_data( - table = "nitrate_prelevement_v0_15", + table = glue::glue("nitrate_prelevement_", version), schema = "nitrates", db = "si_eau", user = "admin" @@ -110,53 +136,63 @@ nitrate_prelevement <- datalibaba::importer_data( ``` + 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: no -```{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: no -```{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 |> - left_join(nitrate_prelevement |> - select(code_station, date_prelevement, code_prelevement), - by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) + 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: no -```{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: no -```{r add_code_analyse_hubeau_eso, eval = FALSE} # Utiliser la fonction add_code_analyse_ars avec la version souhaitée nitrate_qualite_nappes_analyses <- add_code_analyse( - nitrate_qualite_nappes_analyses, "v0_15") + 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: no -```{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, @@ -172,12 +208,14 @@ nitrate_qualite_nappes_analyses <- nitrate_qualite_nappes_analyses |> ``` + On charge les données consolidées dans un table dédiée : +```{r insert-into_nitrate_prelevement_v0_xx} +#| eval: no -```{r insert-into_nitrate_prelevement_v0_15, eval = FALSE} # Charger les données dans une nouvelle table en base datalibaba::poster_data(data = nitrate_qualite_nappes_analyses, - table = "nitrate_analyse_hubeau_eso_v0_15", + table = glue::glue("nitrate_analyse_hubeau_eso_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -185,18 +223,24 @@ datalibaba::poster_data(data = nitrate_qualite_nappes_analyses, 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: no -```{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 = "nitrate_analyse_hubeau_eso_v0_15", + source_table = glue::glue("nitrate_analyse_hubeau_eso_", version), source_schema = "nitrates", - target_table = "nitrate_analyse_v0_15", + target_table = glue::glue("nitrate_analyse_", version), target_schema = "nitrates", role = "admin") ``` + + + + diff --git a/vignettes/insertion-des-analyses-hubeau-esu.Rmd b/vignettes/insertion-des-analyses-hubeau-esu.Rmd index 0f1689ddd608d9312d0768eb16fdb8453cec949a..7e3af132890cec31ada9e785da7d6a9477f862c5 100644 --- a/vignettes/insertion-des-analyses-hubeau-esu.Rmd +++ b/vignettes/insertion-des-analyses-hubeau-esu.Rmd @@ -2,7 +2,7 @@ title: "Insertion des analyses Hubeau ESU" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{insertion-des-analyses-hubeau-esu} + %\VignetteIndexEntry{Insertion des analyses Hubeau ESU} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -14,19 +14,35 @@ knitr::opts_chunk$set( ) ``` -```{r setup} +```{r} 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: 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 +``` + + # 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: no -```{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", @@ -36,11 +52,13 @@ nitrate_qualite_rivieres_analyses <- datalibaba::importer_data( ) ``` + ## Consolidation des analyses Hub'eau ESU On remplace des valeurs dans limite_detection et limite_quantification : +```{r replace-dot_limite_detection} +#| eval: no -```{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( @@ -51,9 +69,11 @@ nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |> ``` + On sélectionne les champs utiles à la table des analyses : +```{r select-variables-hubeau_esu} +#| eval: no -```{r select-variables-hubeau_esu, eval = FALSE} # Sélectionner les variables nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |> dplyr::select(code_station, @@ -69,9 +89,11 @@ nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |> ``` + On modifie le type des variables resultat_analyse et limite_quantification : +```{r change-fieldtypes} +#| eval: no -```{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), @@ -84,14 +106,16 @@ nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |> ``` + # 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 -```{r load-nitrate_prelevement, eval = FALSE} -# Charger la table nitrates.nitrate_prelevement_v0_15 +# Charger la table nitrates.nitrate_prelevement_version nitrate_prelevement <- datalibaba::importer_data( - table = "nitrate_prelevement_v0_15", + table = glue::glue("nitrate_prelevement_", version), schema = "nitrates", db = "si_eau", user = "admin" @@ -99,53 +123,63 @@ nitrate_prelevement <- datalibaba::importer_data( ``` + 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: no -```{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: no -```{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 |> - left_join(nitrate_prelevement |> - select(code_station, date_prelevement, code_prelevement), - by = c("code_station" = "code_station", "date_prelevement" = "date_prelevement")) + 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: no -```{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: no -```{r add_code_analyse_hubeau_esu, eval = FALSE} # Utiliser la fonction add_code_analyse_ars avec la version souhaitée nitrate_qualite_rivieres_analyses <- add_code_analyse( - nitrate_qualite_rivieres_analyses, "v0_15") + 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: no -```{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, @@ -161,12 +195,14 @@ nitrate_qualite_rivieres_analyses <- nitrate_qualite_rivieres_analyses |> ``` + On charge les données consolidées dans une table dédiée : +```{r insert-into_nitrate_analyse_hubeau_esu_version} +#| eval: no -```{r insert-into_nitrate_prelevement_v0_15, eval = FALSE} # Charger les données dans une nouvelle table en base datalibaba::poster_data(data = nitrate_qualite_rivieres_analyses, - table = "nitrate_qualite_rivieres_analyses_v0_15", + table = glue::glue("nitrate_analyse_hubeau_esu_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -174,18 +210,24 @@ datalibaba::poster_data(data = nitrate_qualite_rivieres_analyses, 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: no -```{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 = "nitrate_qualite_rivieres_analyses_v0_15", + source_table = glue::glue("nitrate_analyse_hubeau_esu_", version), source_schema = "nitrates", - target_table = "nitrate_analyse_v0_15", + target_table = glue::glue("nitrate_analyse_", version), target_schema = "nitrates", role = "admin") ``` + + + + diff --git a/vignettes/insertion-des-prelevements-ars.Rmd b/vignettes/insertion-des-prelevements-ars.Rmd index 1d1f9c3b4aeab335c4f2aae1b7722d6ac261610c..fa0e73cdd215f4f747d4c7f96870d81e8a53b23b 100644 --- a/vignettes/insertion-des-prelevements-ars.Rmd +++ b/vignettes/insertion-des-prelevements-ars.Rmd @@ -2,7 +2,7 @@ title: "Insertion des prélèvements ARS" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{insertion-des-prelevements-ars} + %\VignetteIndexEntry{Insertion des prélèvements ARS} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -14,19 +14,35 @@ knitr::opts_chunk$set( ) ``` -```{r setup} +```{r} 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: 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 +``` + + # 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 -```{r load-nitrate_data_analyse_ars, eval = FALSE} nitrate_data_analyse_ars <- datalibaba::importer_data( table = "nitrate_data_analyse_ars", schema = "nitrates", @@ -35,9 +51,11 @@ nitrate_data_analyse_ars <- datalibaba::importer_data( ) ``` -La table des stations ESO est chargée : -```{r load-nitrate_station_eso, eval = FALSE} +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: no + station_eso <- datalibaba::importer_data( table = "station_eso", schema = "stations", @@ -46,11 +64,13 @@ station_eso <- datalibaba::importer_data( ) ``` + ## Consolidation des données ARS On ajoute les variables `source` et `code_support` : +```{r add-source_code_support_ars} +#| eval: no -```{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( @@ -59,17 +79,21 @@ nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> ) ``` + On remplace "h" par ":" dans la variable `plv_heure` : +```{r replace-in_plv_heure} +#| eval: no -```{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: no -```{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, @@ -84,18 +108,22 @@ nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> ``` + 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 -```{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: no -```{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")) @@ -104,9 +132,11 @@ nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> 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: no -```{r select-variables-ars_v2, eval = FALSE} nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> dplyr::select(code_intervenant, source = source_ars, @@ -119,24 +149,28 @@ nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> id_prelevement_motif) ``` + On ajoute un identifiant unique s'appuyant sur une séquence stockée en base : +```{r add_code_prelevement_ars} +#| eval: no -```{r add_code_prelevement_ars, eval = FALSE} # Utiliser la fonction add_code_prelevement_ars avec la version souhaitée nitrate_data_analyse_ars <- add_code_prelevement( - nitrate_data_analyse_ars, "v0_16") + 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: no -```{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 = "nitrate_prelevement_ars_v0_16", + table = glue::glue("nitrate_prelevement_ars_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -144,18 +178,23 @@ datalibaba::poster_data(data = nitrate_data_analyse_ars, 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: no -```{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 = "nitrate_prelevement_ars_v0_16", + source_table = glue::glue("nitrate_prelevement_ars_", version), source_schema = "nitrates", - target_table = "nitrate_prelevement_v0_16", + target_table = glue::glue("nitrate_prelevement_", version), target_schema = "nitrates", role = "admin") ``` + + + diff --git a/vignettes/insertion-des-prelevements-hubeau-eso.Rmd b/vignettes/insertion-des-prelevements-hubeau-eso.Rmd index 131e7f3d0cd24f4b22de83f7b249d14812ee9c01..9390f4f36c3a8aa09777db910565dfb6a560a57f 100644 --- a/vignettes/insertion-des-prelevements-hubeau-eso.Rmd +++ b/vignettes/insertion-des-prelevements-hubeau-eso.Rmd @@ -2,7 +2,7 @@ title: "Insertion des prélèvements Hubeau ESO" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{insertion-des-prelevements-hubeau-eso} + %\VignetteIndexEntry{Insertion des prélèvements Hubeau ESO} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -14,19 +14,35 @@ 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 --> + + + +```{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 +``` + + # 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 nitrate_qualite_nappes_prelevements <- datalibaba::importer_data( table = "nitrate_qualite_nappes_analyses", @@ -36,22 +52,26 @@ 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 |> 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 |> dplyr::mutate( @@ -60,9 +80,11 @@ nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |> nature_eau = "ESO") ``` + On sélectionne les champs utiles à la table des prélèvements : +```{r select-variables_hubeau_eso} +#| eval: no -```{r select-variables_hubeau_eso, eval = FALSE} # Sélectionner les variables nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |> dplyr::select(source, @@ -73,42 +95,50 @@ nitrate_qualite_nappes_prelevements <- nitrate_qualite_nappes_prelevements |> nature_eau) ``` + On modifie le type de la variable `code_support` de character en integer : +```{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_nappes_prelevements <- nitrate_qualite_nappes_prelevements |> dplyr::mutate(code_support = as.integer(code_support)) ``` + On dédoublonne les lignes en utilisant les champs `code_station` et `date_prelevement` afin de ne conserver qu'un prélèvement par station et date donnée : +```{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 |> 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: no -```{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, "v0_16") + nitrate_qualite_nappes_prelevements, version) # Afficher le dataframe pour vérifier les modifications print(nitrate_qualite_nappes_prelevements) ``` + On charge les données consolidées dans un table dédiée : +```{r insert-into_nitrate_prelevement_hubeau_eso} +#| eval: no -```{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 = "nitrate_prelevement_hubeau_eso_v0_16", +datalibaba::poster_data(data = nitrate_qualite_nappes_prelevements, + table = glue::glue("nitrate_prelevement_hubeau_eso_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -116,18 +146,23 @@ datalibaba::poster_data(data = nitrate_qualite_nappes_prelevements, 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: no -```{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 = "nitrate_prelevement_hubeau_eso_v0_16", + source_table = glue::glue("nitrate_prelevement_hubeau_eso_", version), source_schema = "nitrates", - target_table = "nitrate_prelevement_v0_16", + target_table = glue::glue("nitrate_prelevement_", version), target_schema = "nitrates", role = "admin") ``` + + + diff --git a/vignettes/insertion-des-prelevements-hubeau-esu.Rmd b/vignettes/insertion-des-prelevements-hubeau-esu.Rmd index b24dc407a803f9fe7b1c909261646891d60f2509..00278219b017f69f728b8be6b5b6e3d5a897ec52 100644 --- a/vignettes/insertion-des-prelevements-hubeau-esu.Rmd +++ b/vignettes/insertion-des-prelevements-hubeau-esu.Rmd @@ -2,7 +2,7 @@ title: "Insertion des prélèvements Hubeau ESU" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{insertion-des-prelevements-hubeau-esu} + %\VignetteIndexEntry{Insertion des prélèvements Hubeau ESU} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -14,19 +14,35 @@ 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 --> + + + +```{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 +``` + + # 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", @@ -36,11 +52,13 @@ 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` : +```{r replace-in_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 |> dplyr::mutate( @@ -49,20 +67,24 @@ nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements | ) ``` + 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 |> dplyr::mutate( source = "Na\u00efades", - nature_eau = "ESO") + nature_eau = "ESU") ``` + On sélectionne les champs utiles à la table des prélèvements : +```{r select-variables_hubeau_esu} +#| eval: no -```{r select-variables_hubeau_esu, eval = FALSE} # Sélectionner les variables nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements |> dplyr::select(source, @@ -75,42 +97,50 @@ nitrate_qualite_rivieres_prelevements <- nitrate_qualite_rivieres_prelevements | commentaire = commentaires_analyse) ``` + On modifie le type de la variable `code_support` de character en integer : +```{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 |> 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: 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 |> 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: no -```{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, "v0_16") + 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: no -```{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 = "nitrate_prelevement_hubeau_esu_v0_16", + table = glue::glue("nitrate_prelevement_hubeau_esu_", version), schema = "nitrates", db = "si_eau", overwrite = TRUE, @@ -118,18 +148,23 @@ datalibaba::poster_data(data = nitrate_qualite_rivieres_prelevements, 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: no -```{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 = "nitrate_prelevement_hubeau_esu_v0_16", + source_table = glue::glue("nitrate_prelevement_hubeau_esu_", version), source_schema = "nitrates", - target_table = "nitrate_prelevement_v0_16", + target_table = glue::glue("nitrate_prelevement_", version), target_schema = "nitrates", role = "admin") ``` + + + diff --git a/vignettes/liste-des-tables-existantes.Rmd b/vignettes/liste-des-tables-existantes.Rmd new file mode 100644 index 0000000000000000000000000000000000000000..d68f7560a0280260c6fa3db9f3c2d204f5b99dff --- /dev/null +++ b/vignettes/liste-des-tables-existantes.Rmd @@ -0,0 +1,82 @@ +--- +title: "Liste des tables existantes" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Liste des tables existantes} + %\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_list_existing_tables.Rmd: do not edit by hand --> + + + + +# Présentation + +Cette page contient la logique métier permettant de consulter les lots de données +existants pour le projet Nitrates. + +# Exploration des données existantes + +## Connexion à la base de données PostgreSQL +```{r connect_to_db} +#| eval: no + +# Se connecter à la base de données PostgreSQL si_eau +connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin") +``` + + +## Liste des schémas de la base de données `si_eau` +```{r list_schemas} +#| eval: no + +# Lister les schémas présents dans la base +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]) + +# Trier le dataframe par la variable nom_schema +schemas_list <- schemas_list |> + arrange(nom_schema) +``` + + +## Liste des tables du schéma `nitrates` +```{r list_tables} +#| eval: no + +# Lister les tables présentes dans le schéma spécifié +tables_list <- data.frame(datalibaba::list_tables( + con = connexion, + db = "si_eau", + schema = "nitrates")) + +# Renommer la variable unique en "nom_table" +tables_list <- tables_list |> + rename(nom_table = names(tables_list)[1]) + +# Trier le dataframe par la variable nom_table +tables_list <- tables_list |> + arrange(nom_table) + +``` + + + + +