Ce site stocke des cookies sur votre ordinateur. Nous les utilisons afin de personnaliser votre expérience de navigation ainsi que pour des analyses d'audience.
Analyse ultra-rapide avec Tableau Online et Dremio, traduit et adapté du site de l’éditeur.
Analyse ultra-rapide avec Tableau Online et Dremio
Guide de configuration de Tableau Online Bridge avec Dremio
Aperçu
Tableau Bridge est un moyen de connecter votre instance Tableau Online à vos données. La connexion à des sources de données en ligne à l’aide de Tableau Online est facile, vous pouvez vous connecter à la fois aux données en direct et extraites en fonction de votre environnement.
Mais que se passe-t-il si vos sources de données changent constamment ?
Vous ne voudriez pas avoir à publier et re-publier vos classeurs chaque fois qu’un changement se produit au niveau du jeu de données. Il peut également y avoir des cas où la sécurité empêche l’accès aux sources de données internes (sur l’infrastructure on premise). Ce qui peut aussi être le cas pour Dremio. Avec Tableau Bridge, il est facile de créer une connexion sécurisée entre Tableau Online et vos ensembles de données internes, y compris Dremio.
Dans ce didacticiel, vous allez être guidé à travers les étapes :
Pour configurer de Tableau Online avec Tableau Bridge
Pour créer une connexion en direct à Dremio depuis Tableau Online
Besoin de se rafraîchir la mémoire sur Dremio ? Synaltic, partenaire officiel de la solution vous accompagne dans la découverte de cet outil !
Un cluster Dremio en cours d’exécution, consultez ladocumentation pour plus de détails sur la façon de déployer Dremio sur votre environnement. Synaltic peut aussi vous aider dans cette démarche
Un système pour l’exécution de Tableau Bridge (doit être activé 24h / 24 et 7j / 7 pour les requêtes en direct)
Téléchargez lespilotes ODBC Dremio pour l’environnement sur lequel vous allez travailler.
Téléchargez et installezTableau Bridge sur la machine dédiée à l’exécution du pont.
Installez Tableau Bridge sur la machine qui exécutera le pont. Le pont doit être disponible 24h / 24 et 7j / 7 pour l’utilisateur qui interagit avec Tableau de bord sur Tableau Online, sinon les requêtes échoueront.
Ouvrez le pont et ajoutez une connexion à Tableau Online
Maintenant sur votre navigateur, accédez à online.tableau.com et ouvrez le menu des paramètres en bas à gauche.
Sélectionnez l’option Pont en haut
Cochez l’option : Enable Tableau Bridge clients to maintain live connections to on-premises data puis cliquez sur Enregistrer.
Dans la section État du client, définissez le nouveau pont sur Extract and Live, puis cliquez sur Enregistrer.
Configurer un tableau de bord et publier
Maintenant que tout est prêt, amusons-nous !
Tout d’abord, accédez à votre interface utilisateur Dremio et créez un jeu de données virtuel (VDS). Pour ce tutoriel, j’ai créé un VDS «Employé» qui est le résultat d’une jointure de deux ensembles de données différents provenant de PostgreSQL et SQL Server.
Nous pouvons vérifier la lignée de ces données dans l’entrée Graph.
Maintenant, créons un classeur dans Tableau à l’aide de l’ensemble de données résultant. Pour une explication détaillée de ce qui est sur le point de se passer, consultez notre didacticielVisualiser votre premier ensemble de données avec Tableau .
Tout d’abord, créez le fichier TDS pour l’ensemble de données que nous voulons visualiser, faites-le en cliquant sur l’ellipse à côté de l’icône de la disquette, puis sélectionnez Tableau dans le menu déroulant.
Ouvrez le fichier TDS et, lorsque vous y êtes invité, saisissez les mêmes informations d’identification que vous avez utilisées pour vous connecter à l’interface utilisateur Dremio.
Créer et enregistrer le classeur.
Ensuite, dans Tableau à partir du menu Serveur, vérifiez que vous êtes connecté, sinon connectez-vous au serveur à l’aide de vos informations d’identification Tableau Online, puis sélectionnez Publier le classeur.
Laissez tous les paramètres par défaut et cliquez sur Publier.
Une fois le classeur publié correctement, vous recevrez la notification suivante (cliquez sur Terminé)
Testez votre connexion en direct Tableau Online
Vous pouvez utiliser deux méthodes pour vérifier que Tableau envoie des requêtes à Dremio et non à un extrait sur le serveur.
Première méthode : ouvrez votre classeur et sélectionnez Modifier le classeur.
Apportez ensuite des modifications à votre classeur, puis explorez l’entrée Jobs dans l’interface utilisateur de Dremio.
Seconde méthode : à partir de Tableau Online, sélectionnez Sources de données et vérifiez que la source de données indique Live
Il est tout à fait possible que la connexion dise “Extraire”, ce qui signifie que les requêtes ne sont pas envoyées à Dremio.
Pour résoudre ce problème, sélectionnez simplement les points de suspension sur le jeu de données et cliquez sur Modifier la connexion.
Ensuite, fournissez vos informations d’identification et informations sur le serveur et cliquez sur Enregistrer.
Comme le montre l’exemple ci-dessus, il est très simple de travailler avec vos classeurs Tableau sur Tableau Online tout en vous assurant qu’il existe une connexion en direct à Dremio. J’espère que vous avez apprécié ce didacticiel, visitez labibliothèque de didacticiels de Dremio pour lire d’autres didacticiels comme celui-ci. Ainsi, découvrez comment Dremio, le moteur de lac de données, peut vous aider à obtenir des informations plus rapidement à partir de vos données.
Après un court passage par une startup dans les années 2000, Charly fonde Altic qui est ensuite devenue Synaltic. Passionné par l'urbanisation des systèmes d’information, l'innovation, la donnée, il a toujours défendu le logiciel libre et l'open source.
Dans cet article nous allons illustrer la construction de couches sémantiques dans Dremio et montrer des exemples d’utilisation de certaines fonctionnalités qu’offre dbt : les tests, l’utilisation de code jinja et les macros.
Dremio cloud ou Dremio Software (version 22.0 ou supérieures).
dbt-dremio installé (assurez-vous que Python 3.8.x ou une version ultérieure est installée, ainsi que git).
Avoir une connaissance basique du langage sql (ainsi que les CTE).
Compétences basiques dans l’utilisation de la ligne de commande.
Dans la suite, VisualStudio code sera utilisé pour éditer les fichiers du projet. Vous pouvez utiliser un autre IDE ou l’éditeur de fichier de votre choix.
Dans cet article nous travaillerons sur un environnement linux (ubuntu) avec Dremio software connecté à une base de données postgres (BDLearn) où le jeux de données est disponible ici.
Présentation de l’exercice
L’objectif de cet article est d’illustrer comment utiliser dbt pour construire des couches sémantiques de données dans Dremio. Nous le ferons avec l’exemple suivant.
Le jeu de données représente la location de dvd dans des magasins, il contient des informations sur les films, les magasins de location et les locations, ainsi que les clients et le personnel des magasins. Pour l’exercice nous nous concentrerons sur le prêt de film et nous allons construire nos couches de données afin de répondre aux questions suivantes (nous ne nous intéresserons pas aux clients, aux magasins ou aux personnels).
Quels sont les films les plus regardés ? Lesquels génèrent le plus de bénéfices et à quelle catégorie appartiennent-il ? Quels sont les films peu ou pas empruntés ?
Parmi les films les plus empruntés, quelle est la durée des films ? Est elle similaire ?
Combien de films il y a par catégorie ? Quel genre de film est le plus emprunté ? Quelle catégorie de film génère le plus de bénéfices ?
Combien est ce qu’il y a de langue de film dans l’inventaire ? Les films dans quelle langue sont les plus empruntés ?
Pour cela nous nous intéresserons aux tables suivantes de la base de données :
Construction des couches sémantiques dans Dremio
Lors de l’initialisation d’un projet dbt, nous avons l’arborescence du projet ci-contre (voir l’article précédent initialiser un projet).
Nous nous intéresserons dans la suite, uniquement au dossier models/, tests/, macros/, dbt_packages/ et au fichier dbt_project.yml du projet dbt.
Commençons l’exercice par créer l’arborescence et la configuration des modèles.
Arborescence et configuration
Construisons nos couches de données dans Dremio comme suit :
une 1ère couche (bronze) qui sera le reflet des tables de la base de données qui nous intéresse.
une 2ème couche (silver) où nous allons regrouper les tables selon leur catégorie. Nous aurons deux vues, l’une concernant les films et l’autre concernant leur emprunt.
une 3ème couche applicative (gold), où nous aurons une vue qui englobera toutes les informations permettant de répondre à nos questions pour l’analyse.
Sous le répertoiremodèle nous allons créer une arborescencesimilaire à celle que l’on souhaite avoir dans Dremio pour faciliter l’écriture de la configuration et l’organisation du projet.
Et dans le fichier dbt_project.yml nous allons écrire la configuration de nos modèles. Tous nos modèles seront matérialisés en vue et seront créés dans le même space Dremio ‘dbt_learn’. De plus, dans le space ‘dbt_learn’ on va créer un répertoire par couche de données (bronze, silver et gold). Dans le répertoire bronze on placera tous les modèles du répertoire models/dbt_learn/0_bronze du projet, dans silver ceux du répertoire models/dbt_learn/1_silveret dans gold ceux du répertoire models/dbt_learn/2_gold.
Construisons maintenant les modèles couche par couche.
La couche bronze
Dans le répertoire 0_bronze/ ajoutons 7 modèles (fichiers .sql) et un fichier bronze_config.yml pour leur configuration et les tests (que l’on verra plus tard).
Définissons les modèles comme le reflet des tables du modèle de données présenté précédemment. Par exemple pour la table category on écrira la requête suivante :
Pour référencer les tables physiques dans Dremio on va utiliser le bloc de code source{{source()}} au lieu de référencer la table directement comme nous l’aurions fait dans Dremio. C’est une bonne pratique de l’utiliser car de cette façon, si un changement survient dans la base de données il n’y aura plus besoin de venir dans chaque modèle pour modifier la référence de la table, mais juste dans le fichier .yml où sa définition aura été notée. De plus, pour la documentation du projet ça permettra de connaître les sources qui ont permis de construire les modèles. Nous ne verrons pas la partie documentation que pourvoit dbt dans cet article mais dbt fournit un lineage qui est généré à partir de la définition de nos modèles grâce aux bloc {{source()}} et {{ref()}} (que nous verrons dans la partie suivante).
Sous le répertoire models/dbt_learn/ on va créer un fichier source.yml avec le contenu suivant :
Les références entre Dremio et dbt sont expliquées dans le schéma suivant :
Les modèles de la couche bronze sont maintenant prêts.
La couche silver
Au-dessus des modèles de la couche bronze nous allons construire deux modèles sous le répertoire /1_silver.
Pour lier ces modèles aux modèles le la couche bronze on va utiliser le bloc de code {{ref()}}. Définissons les modèles comme suit.
La couche gold
Enfin, au-dessus de la couche silver on va créer un modèle en vue de répondre à notre analyse. Ajoutons un fichier .sql sous le répertoire /2_gold.
Définissons le modèle comme suit.
Création dans Dremio
Actuellement, nous n’avons rien dans Dremio à part la connexion à la base de données.
Ajoutons nos couches sémantiques définies avec dbt dans Dremio en exécutant la commande suivante :
dbt run --select models/dbt_learn # tous les modèles present dans le répertoire models/dbt_learn
ou
dbt run --select +rented_film # le model rented_film et tous les modèles parents
Nos 10 vues ont bien été créées dans Dremio et le spaceainsi que les répertoires se sont créés :
On observe dans les logs d’exécution que les modèles se construisent dans l’ordre des couches, c’est grâce aux références entre les modèles.
Les données sont maintenant prêtes à être exploitées pour l’analyse.
Exemple d’utilisation des tests, la qualité des données
dbt est très pratique pour exécuter un grand nombre de tests de qualité sur les données. Écrire des tests va permettre d’effectuer un contrôle sur les données manipulées, de s’assurer que les données sont conformes à ce qui est attendu (éviter les surprise après coût) et de vérifier la fraîcheur des données sources.
Il existe deux types de tests, les tests singuliers et les tests génériques. Les tests singuliers sont, comme son nom l’indique, des tests pour un modèle spécifique (ou groupe de modèles) que l’on écrit soit même. Et les tests génériques sont des tests réutilisables qui peuvent être appliqué à plusieurs modèles. Il y a des tests génériques intégrés (built-in ou pre-built generic tests), ce sont 4 tests prédéfinis que l’on peut utiliser directement sur un modèle, et les tests génériques personnalisés (custom generic tests) que l’on écrit soit même. Illustrons l’utilisation des tests avec nos modèles précédemment construits.
Les tests singuliers
Les tests personnalisés sont à définir dans le répertoire tests/, dans un fichier sql. Le test est conçu pour un modèle unique. La requête doit identifier les lignes où la condition n’est pas remplie.
En voici un exemple :
Dans l’exemple, on veut que la date à laquelle on empreinte le film (rental_date) soit antérieure à la date à laquelle on rend le film (return_date). La condition n’est donc pas remplie lorsque rental_date > return_date. La commande dbt test va permettre de lancer le test. Ici nous souhaitons uniquement lancer ce test, pour cela nous allons lancer la commande dbt test -s test_rental_check_date.
Le test est passé donc on a bien la date rental_date antérieur à la date return_date.
Ces tests sont à définir dans un fichier .yml dans le répertoire models/. Implémentons ces 4 tests pour le modèle film dans le fichier bronze_config.yml. Vérifions que la colonne film_id ne contient pas de valeur nulle et contient des valeurs uniques. Que les valeurs de la colonne language_id sont bien présentes dans la colonne language_id du modèle language et qu’elles sont non nulles (notion de clé étrangère). Et enfin que les valeurs de la colonne rating soit l’une des valeurs suivantes : R, PG-13, NC-17, PG ou G.
Exécutons les tests du modèle film avec la commande suivante : dbt test -s film
Les tests personnalisés :
Ces tests, une fois définis, peuvent être réutilisés pour plusieurs modèles. Ils sont créés avec du code Jinja dans un bloc test et placés dans le répertoire /macros ou vous pouvez créer un répertoire generic sous le répertoire tests/ et les y placer.
Ajoutons le test not_empty_string à la colonne name du modèle category. Et exécutons les tests du modèle category avec la commande dbt test -s category.
Nous ne le verrons pas dans cet article mais dbt offre la possibilité d’utiliser des packages. Les packages permettent par exemple d’importer des tests déjà implémentés par d’autres dans votre projet et de les utiliser comme les tests génériques. Cela permet de ne pas réinventer la roue.
Exemple d’utilisation de code jinja et des macros
Nous ne verrons pas en détail dans cet article la syntaxe et tout ce qu’offre le code jinja et les macros dans un projet dbt, mais nous allons présenter quelques exemples d’utilisation.
Du code jinja dans la définition d’un modèle
Dans le jeux de données il y a la présence de 6 tables “payment” pour les 6 premiers mois de 2020. Imaginons que l’on souhaite avoir une vue regroupant l’ensemble de ces tables, il faudrait faire l’union de toutes ces tables. En utilisant du code jinja on a la possibilité de faire une itération sur le nom des tables. Voici un exemple :
Du code jinja dans la définition d’un test singulier
Écrivons un test qui permet que les tables dans la source contiennent au moins un certain nombre de ligne. Ce test peut être utile par exemple si on est dans un environnement de recette et que l’on souhaite vérifier que le jeu de données qu’on test est suffisant.
Le test nous dit que 2 tables n’ont pas un nombre de lignes suffisant. Et effectivement la table category et language ne respecte pas les conditions.
Utilisation d’une macro dans la définition d’un modèle
Imaginons que dans plusieurs modèles nous ayons besoin de faire l’agrégation COUNT et SUM sur une colonne, comme nous l’avons fait pour le modèle de la couche gold. Nous pourrions écrire une macro qui ferait ces opérations et l’utiliser après dans ces modèles.
Dans le dossier macros/ on va ajouter un fichier “aggregate_calculation.sql”. Et dans ce fichier on va ajouter le code suivant :
Dans un même fichier il est possible de définir plusieurs macros.
Maintenant dans notre modèle rented_film, faisons référence à la macro que nous venons d’ajouter :
Conclusion
Dans cet article nous avons vu un exemple de comment créer des couches sémantiques dans Dremio avec dbt. Nous avons également vu comment utiliser les tests pour contrôler la qualité des données utilisées et comment utiliser du code jinja ou des macro dans la définition de nos modèles.
Dans un prochain article on illustrera d’autres fonctionnalités qu’offre dbt.
A la mi-avril 2025 la version 3.0 de ce projet va voir le jour. Elle apporte des améliorations significatives qui promettent de transformer l’expérience des utilisateurs et d’attirer de nouveaux adeptes.
Performance et architecture repensées
La nouvelle architecture client-serveur d’Airflow 3.0 offre une flexibilité et une scalabilité accrues. Cette refonte permet une exécution fluide sur différents environnements cloud et améliore considérablement les performances globales du système.
Le monitoring des DAGs a été optimisé, offrant une visibilité en temps réel sur l’état des workflows. Le découplage entre l’API et le frontend permet une meilleure réactivité de l’interface utilisateur et facilite les mises à jour indépendantes de ces composants.
La version 3 introduit le Edge Executor ! Il est ainsi possible d’avoir des déploiements très flexibles. L’exécution des tâches est réalisée au plus près des données.
Avec l’introduction des tâches différables, il est déjà possible d’exécuter des workflows asynchrones et de libérer le slot du worker Airflow. Certes, on peut utiliser l’opérateur SSH, mais Airflow ne prenait pas nativement en charge l’exécution de workers sur des machines distantes. Avec Airflow 3.0, tout cela change.
Les workers n’auront plus besoin d’être contenus dans le déploiement Airflow. Airflow fait référence aux workers externes sous le nom d’Edge executors. Cela signifie que plusieurs choses vont changer :
Les workers ne pourront plus accéder à la base de données Airflow. Par défaut, tous les services Airflow ont accès à la base de données Airflow car elle est responsable du suivi de l’état. En découplant les workers et la base de données Airflow, il devient possible d’exécuter des workers à distance. Ceci est principalement facilité par le nouveau Task SDK.
Les workers communiqueront via l’API REST d’Airflow. L’authentification des workers externes se fera par le biais de jetons JWT ou ID.
Les workers ne seront plus liés aux packages Airflow. Il n’y aura plus de dépendance aux packages installés dans l’image fournie avec le déploiement Airflow. Un package distinct sera disponible, beaucoup plus léger que l’image de base d’Airflow. Ce package fournira les outils nécessaires pour exécuter le worker externe.
Versionning des DAGs
Une fonctionnalité très attendue est le versionning natif des DAGs. Les utilisateurs peuvent désormais suivre l’historique des modifications de leurs workflows directement dans l’interface utilisateur. Cette fonction permet de visualiser les changements apportés aux DAGs au fil du temps et de revenir facilement à des versions antérieures si nécessaire.
Des Datasets aux Assets
Airflow 3.0 introduit le concept d’Assets, une évolution des Datasets. Cette approche offre une gestion plus fine des dépendances entre les tâches et les données.
De cette manière, la traçabilité entre jeu de données et traitements (tâche, DAG) est intrinsèque. Vous pourrez tout de suite identifier les jeux de données exploités par un DAG et tous les DAGs qui lisent ou écrivent tels ou tels jeux de données.
SDK multi-langages
Airflow 3.0 étend son support à plusieurs langages de programmation grâce à un nouveau SDK. Les langages de programmation supportés par le nouveau SDK : Python, Java (langages dérivé Scala…), Javascript, TypeScript, Go.
Par exemple, on peut maintenant écrire les DAG en Java.
L’interface utilisateur d’Airflow 3.0 a été entièrement repensée avec React et FastAPI. Elle offre une expérience plus intuitive et réactive, avec des fonctionnalités telles que :
Un mode sombre
Une vue en grille et une vue graphique des DAGs redimensionnables
Une visualisation améliorée des dépendances entre les assets
Un accès rapide aux informations clés sur le déploiement Airflow et l’état des services.
Tester Apache Airflow 3 par vous même
L’article a surtout vocation à vous rappeler que la version 3 est bientôt là. Bien sûr toutes les fonctionnalités de cette verion 3 n’ont pas été exhaustivement listées. Et nous vous invitons à le découvrir par vous même. Cette suite de commandes devrait vous aider.
git clone https://github.com/apache/airflow.gitcd airflow# Création et activation de l'environnement virtuel (recommandé)python3 -m venv .venvsource .venv/bin/activategit checkout v3-0-stablepip install "pipx>=1.4.1"pipx ensurepathpipx install -e./dev/breezebreeze start-airflow --backend postgres --load-example-dags --dev-mode --db-reset
Par la suite, ouvrez votre navigateur à la page suivante : http://127.0.0.1:28080.
La participation de tout un chacun est importante. Faites des retours à la communauté.
En attendant la mi-avril
Avec ces améliorations majeures, Apache Airflow 3.0 se positionne comme une solution d’orchestration de workflows encore plus puissant et accessible. Dans un contexte économique où la maîtrise du système d’information est cruciale, cette nouvelle version pourrait attirer de nombreux nouveaux utilisateurs en quête d’un outil flexible, performant et facile à utiliser pour gérer leurs pipelines de données et leurs processus métier. Les utilisateurs de Control-M seraient surpris de la facilité de migration vers Apache Airflow.
Toute l’équipe de Synaltic se tient disponible pour vous aider à découvrir et faire vos premiers pas avec Apache Airflow y compris avec cette nouvelle version.
À la fin de cette formation, vous serez en mesure de comprendre les concepts clés, les avantages et l’architecture de dbt en tant qu’outil de transformation et de modélisation des données. De plus vous pourrez mettre en place un projet utilisant dbt en partant de 0 et en appliquant les bonnes pratiques.
A propos de DBT
Data Build Tool (ou dbt) est un outil open source qui facilite la transformation de vos données au sein de votre Data Warehouse ou de votre Data Lakehouse comme Dremio, à travers le processus ELT (Extract Load Transform). L’outil utilise le langage sql pour la transformation des données avec la possibilité d’intégrer du code jinja dans les requêtes ou d’utiliser des macros pour par exemple réutiliser du code ou créer des fonctions. Vous pouvez utiliser git pour faciliter la collaboration et le versionning de votre projet dbt.
[…] Analyse ultra rapide avec Tableau Online et Dremio […]