Implémentation de la fonction ellipse_publish pour publier un dataframe en tant que table dans un datamart. Un datamart est une collection d'une ou plusieurs tables qui sont généralement le résultat de raffineurs. Lors de la publication d'un dataframe dans un datamart, si le datamart n'existe pas déjà, l'utilisateur sera invité à le créer. Il en va de même pour la table dans laquelle publier les données. Les données d'un dataframe à publier peuvent être soit ajoutées à une table existante d'un datamart, soit la table existante peut être écrasée.
Actuellement, ellipse_publish est uniquement destiné à être utilisé de manière interactive par l'utilisateur depuis la console R. Dans une version ultérieure de ce package, nous proposerons une version non interactive afin de prendre en charge les raffineurs destinés à être automatisés.
À la sortie, la fonction ellipse_publish invite l'utilisateur à traiter les données afin de les rendre immédiatement disponibles dans la plateforme de données via ellipse_query, ou plus tard (la job glue roule toutes les 6 heures en PROD).
Cette version amène la possibilité de travailler avec plusieurs connexions ellipse en même temps dans l'entrepôt de données et dans les datamarts, à la fois dans l'environnement DEV et PROD de la plateforme de données.
Cette version comprend également une réécriture des fonctions non exportées et des améliorations de la lisibilité du code.
À noter, la fonction ellipse_publish doit encore être retravaillée éventuellement (raccourcir, modulariser) pour être plus lisible et maintenable. Pour l'instant il s'agit de la rendre disponible pour que les chercheurs puissent commencer à expérimenter avec la publication de leurs données en DEV et en PROD.
Pour tester le tout vous pouvez suivre ces étapes:
r$> remotes::install_github("ellipse-science/tube", ref = "feature/implementation-des-fonctionnalités-de-datamart")
Downloading GitHub repo ellipse-science/tube@feature/implementation-des-fonctionnalités-de-datamart
Running `R CMD build`...
* checking for file ‘/tmp/Rtmpaw9PZa/remotes4ebbd52ee6282/ellipse-science-tube-c2a320c/DESCRIPTION’ ... OK
* preparing ‘tube’:
* checking DESCRIPTION meta-information ... OK
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
Removed empty directory ‘tube/doc’
Omitted ‘LazyData’ from DESCRIPTION
* building ‘tube_0.4.0.tar.gz’
Installing package into ‘/home/patrick/R/aarch64-unknown-linux-gnu-library/4.3’
(as ‘lib’ is unspecified)
* installing *source* package ‘tube’ ...
** using staged installation
** R
** byte-compile and prepare package for lazy loading
Note: possible error in 'list_glue_tables(type = "datamart", ': unused arguments (type = "datamart", datamart = datamart_name)
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (tube)
r$> con <- tube::ellipse_connect("DEV", "datamarts")
ℹ Environnement: DEV
ℹ Database: datamarts
ℹ Pour déconnecter: tube::ellipse_disconnect(objet_de_connexion)
ℹ Base de données: gluestackdatamartdbd046f685
✔ Connexion établie avec succès! 👍
r$> data <- data.frame(
Name = c("Jack", "John", "Stacy"),
Age = c(32, 45, 21),
City = c("Montreal", "Quebec", "Vancouver")
)
r$> tube::ellipse_publish(con, data, "bidon", "matable1")
✖ La table demandée existe déjà! 😅
❓Voulez-vous
1. ajouter des données à la table existante?
2. écraser la table existante?
Votre choix: (1/2) 2
❓Êtes-vous cetain.e de vouloir écraser la table existante? (oui/non) oui
ℹ Ecrasement de la table existante en cours...
✔ La table a été écrasée avec succès.
✔ La table existante a été écrasée et les nouvelles données ont été ajoutées.
❓Voulez-vous traiter les données maintenant pour les rendre disponibles immédiatement?
Si vous ne le faites pas maintenant, le traitement sers déclenché automatiquement dans les 6 prochaines heures.
Votre choix (oui/non) oui
✔ Le traitement des données a été déclenché avec succès.
ℹ Les données seront disponibles dans les prochaines minutes
ℹ N'oubliez pas de vous déconnecter de la plateforme ellipse avec `ellipse_disconnect(...)` 👋.
r$>
Résumé de la PR:
Implémentation de la fonction ellipse_publish pour publier un dataframe en tant que table dans un datamart. Un datamart est une collection d'une ou plusieurs tables qui sont généralement le résultat de raffineurs. Lors de la publication d'un dataframe dans un datamart, si le datamart n'existe pas déjà, l'utilisateur sera invité à le créer. Il en va de même pour la table dans laquelle publier les données. Les données d'un dataframe à publier peuvent être soit ajoutées à une table existante d'un datamart, soit la table existante peut être écrasée.
Actuellement, ellipse_publish est uniquement destiné à être utilisé de manière interactive par l'utilisateur depuis la console R. Dans une version ultérieure de ce package, nous proposerons une version non interactive afin de prendre en charge les raffineurs destinés à être automatisés.
À la sortie, la fonction ellipse_publish invite l'utilisateur à traiter les données afin de les rendre immédiatement disponibles dans la plateforme de données via ellipse_query, ou plus tard (la job glue roule toutes les 6 heures en PROD).
Cette version amène la possibilité de travailler avec plusieurs connexions ellipse en même temps dans l'entrepôt de données et dans les datamarts, à la fois dans l'environnement DEV et PROD de la plateforme de données.
Cette version comprend également une réécriture des fonctions non exportées et des améliorations de la lisibilité du code.
À noter, la fonction
ellipse_publish
doit encore être retravaillée éventuellement (raccourcir, modulariser) pour être plus lisible et maintenable. Pour l'instant il s'agit de la rendre disponible pour que les chercheurs puissent commencer à expérimenter avec la publication de leurs données en DEV et en PROD.Pour tester le tout vous pouvez suivre ces étapes: