Skip to content
Snippets Groups Projects
Commit e9c4e70f authored by ronan.vignard's avatar ronan.vignard
Browse files

Renommage du flat

parent 6730a950
No related branches found
No related tags found
10 merge requests!32Passage en version 1.2.2,!31Mise à jour des vignettes suite à l'intégration du millésime 2024,!30Mise à jour des procédures en lien avec le millésime 2024 + Actualisation du README,!29Correction du lien vers l'image pour le site pkgdown,!28Passage en version 1.2.1,!27Finalisation de l'actualisation de la nouvelle logique métier,!26Création d'une table unique des prélèvements et analyses,!24Passage en version 1.2.0,!23Correctifs + documentation,!22Intégration des paramètres version, last_year et filepath_data_ars
---
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-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")
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment