-
Juliette Engelaere-Lefebvre authoredJuliette Engelaere-Lefebvre authored
{datalibaba} est un ensemble de fonctions visant à faciliter l’alimentation du serveur de données du DREAL Pays de la Loire. Site web de présentation du package : https://dreal-pdl.gitlab-pages.din.developpement-durable.gouv.fr/csd/datalibaba/index.html
Installation
remotes::install_gitlab('dreal-pdl/csd/datalibaba', host = "gitlab-forge.din.developpement-durable.gouv.fr")
Example
library(datalibaba)
Vérifier la configuration de son poste
La fonction check_server_renviron()
permet de s’assurer que les
variables systèmes sont bien activées.
check_server_renviron()
Elle doivent être de la forme :
server=adresse_ip
user_does=identifiant
pwd_does=lemotdepassesansquote
port=lenumerodeport
Le suffixe does
du nom d’utilisateur et du mot de passe peut être
remplacé par n’importe quel suffixe permettant d’identifier le rôle de
connexion ou autre, par exemple, user_dreal
et pwd_dreal
. Mais en
l’état des développements actuels, la fonction check_server_enriron()
ne les reconnaîtra pas comme valides alors qu’ils le sont.
Un pas à pas complet est présenté sur la vignette ‘Configurer son poste
pour utiliser {datalibaba}’(vignette("tuto_config")
).
Se connecter
con
sera utilisée ensuite sur l’ensemble des autres fonctions pour
dialoguer avec le serveur de base de données.
con <- connect_to_db(db = "datamart", user = "does")
Lister les schémas
list_schemas(con)
Lister les tables d’un schéma
Ici on liste les table du schéma “public”
list_tables(con, "public")
Charger une table
Un dataframe de votre environnement peut être chargée dans le serveur de base de données
post_data(con, data = head(iris), schema = "public", table = "iris").
La fonction poster_data()
se veut plus complète :
- elle ouvre et ferme la connexion au SGBD,
- elle gère les dataframes spatiaux, les variables temporelles et les facteurs,
- elle adapte le dataset posté pour respecter quelques contraintes d’administration du SGBD (normalisation du nom des variables, ajout de clé primaire, et pour les tables spatiales : ajout d’index spatial, déclaration du CRS et du nb de dimensions de la géométrie)
- poste quelques métadonnées en commentaire de la table (auteur du chargement et sa date)
- ajoute les droits de lecture/écriture du schéma à la table postée.
Le schéma spécifié en argument est créé s’il n’existe pas.
poster_data(data = iris, table = "test_iris", schema = "public", db = "public", user = "does", overwrite = TRUE)
Télécharger une table
Une table du serveur de base de données peut être téléchargée en dataframe.
db_iris <- get_data(con, schema = "public", table = "iris")
La fonction importer_data()
se veut plus complète :
- elle ouvre et ferme la connexion au SGBD,
- elle gère les dataframes spatiaux, les variables temporelles et les facteurs,
- et ‘déstandardise’ les noms de champs si le dataset a été posté avec
poster_data()
,
de manière à retrouver le dataframe dans l’état précis où il était avant son versement au SGBD.
db_iris <- importer_data(table = "test_iris", schema = "public", db = "public", user = "does", overwrite = TRUE)
Poster des métadonnées en commentaires
On peut commenter les tables chargées sur le SGBD depuis RStudio :
commenter_table(comment = "Je suis un commentaire important sur la table test_iris.", table = "test_iris",
schema = "public", db = "public", user = "does")
En dehors des informations spécifiées au niveau de l’argument comment, la fonction ajoute le nom de l’auteur et la date du commentaire.
Des fonctions existent également pour commenter un schéma :
commenter_schema()
ou un champ de table (= une variable ou un
attribut) : commenter_champ()
.
- Enfin la fonction
post_dico_attr()
permet de verser tout un dictionnaire d’attributs/dictionnaire des variables en commentaires de champ à partir d’un dataframe. Ce dataframe doit comprendre deux champs - le 1er pour le nom des variables, le second pour leur explicitation. Le nommage de ces deux champs n’a pas d’importance, leur ordre importe en revanche. Ce dataframe peut comprendre autant de lignes que d’attributs que l’on souhaite documenter.
dico_iris <- data.frame(VAR = names(iris), VAR_LIB = paste("ceci est le libellé descriptif de", names(iris)))
post_dico_attr(dico = dico_iris, table = "test_iris", schema = "public", db = "public", user = "does")
Récupérer des commentaires de tables SGBD
On peut récupérer les commentaires de tables chargées sur le SGBD dans RStudio :
dico_var <- get_table_comments(table = "test_iris", schema = "public", db = "public", user = "does")
On récupère à la fois les commentaires de champs et le commentaire de la table.