Apache Superset est un outil de visualisation et d’exploration de données. Historiquement développé pour des besoins internes par Airbnb, il est devenu open-source en 2016, incubé en tant que projet Apache et compte plus de 30 000 étoiles sur GitHub (https://github.com/apache/incubator-superset). Parmi les utilisateurs notables de cet outil, on peut citer Twitter, Udemy, Zalando, Airbnb ou encore Lyft.
Superset fonctionne en tant qu’application Web sur les principaux navigateurs internet, c’est un logiciel développé en Python et qui utilise la librairie Flask comme framework Web.
Superset étant open-source, il est possible de communiquer facilement avec la communauté, la version 0.37 est sortie ce 14 août 2020.
Eléments clés d’Apache Superset
Tout d’abord, Superset possède un large panel de visuels disponibles pour mettre en valeur ses données, du simple histogramme à des graphiques sous forme de cartes interactives.
L’interface d’exploration et de visualisation des données est très intuitive, pour créer des graphiques et les incorporer dans des tableaux de bord, comme on peut le voir ci-dessous. On peut sélectionner la source de données, le visuel que l’on souhaite créer, la métrique, les éventuels filtres. Les options de personnalisation du graphique (couleurs, légendes…) sont modifiables dans l’onglet “Customize”.
En matière de sécurité, ce logiciel permet une authentification via des protocoles comme OAuth, OpenID ou encore LDAP par exemple. De plus, on peut facilement contrôler qui a accès à quelles infos grâce à un modèle de sécurité de type RBAC (Role-Based Access Control), notamment en définissant des listes d’utilisateurs et de fonctionnalités. On peut ainsi établir des autorisations de base, filtrer l’accès aux sources de données, aux tableaux de bord ou graphiques à certaines personnes seulement.
Il y a 5 rôles principaux dans Superset :
- Admin : il dispose de toutes les autorisations, y compris donner ou révoquer celles des autres utilisateurs, et modifier leurs tableaux de bord.
- Alpha : il peut accéder à toutes les sources de données, mais ne peut pas modifier les autorisations des autres utilisateurs. L’utilisateur Alpha ne peut modifier que les objets qu’il possède, et a la possibilité d’ajouter ou modifier des sources de données.
- Gamma : ils ne peuvent utiliser que les données provenant de sources auxquelles ils ont accès par le biais d’un autre rôle. Ils ne peuvent consulter que les tableaux de bord générés à partir des sources de données auxquelles ils ont accès. Ce sont des consommateurs de contenu, il leur est impossible de modifier ou d’ajouter des sources de données.
- Sql_lab : ce rôle donne l’accès à SQL Lab. Par défaut, les Admin ont accès à toutes les bases de données, alors que les Alpha et Gamma doivent accorder les accès en fonction des bases de données.
- Public : il permet d'autoriser les utilisateurs déconnectés à accéder à certaines fonctions de Superset.
Apache Superset est aussi composé d’un éditeur SQL/IDE avec requêtage interactif, nommé SQL Lab, j’en reparle ultérieurement.
Il est aussi possible de personnaliser les tableaux de bord en important ses propres templates CSS, et il y a une mise en cache des données pour pouvoir charger plus rapidement les tableaux de bord les plus importants.
Avec quoi peut-on le connecter, comment le mettre en place / l’installer ?
Afin d’importer ses données dans Superset, il est possible de se connecter à différentes bases de données. Superset peut se connecter à une grande partie des bases de données SQL, grâce à l’utilisation de l’ORM (Object Relational Mapping) SQLAlchemy.
L’image ci-dessous provient du site de Superset et montre une partie des bases de données connectables, parmi lesquelles on peut citer Snowflake, Amazon Redshift, ou encore Apache Druid pour des analyses temps réel.
Les packages Python ainsi que les URI SQLAlchemy permettant de connecter les bases de données que l’on souhaite sont disponibles sur la documentation du logiciel.
Apache Superset peut être installé localement en utilisant un conteneur Docker et Docker Compose. Ce tutoriel présente la procédure d'installation.
L’installation peut aussi être effectuée from scratch, ce que j’ai fait sur une instance AWS EC2 T2 medium, là aussi Superset propose ce guide sur son site.
L'installation contient un serveur Web accessible via HTTP sur l'IP/port du conteneur/VM. Superset rend disponibles dans ses guides d’installation des données exemples pour pouvoir prendre en main l’outil facilement et commencer à explorer, analyser et visualiser celles-ci.
J’ai pu tester les différentes fonctionnalités de Superset, connecter une base de données, créer les tables, explorer et requêter les données, mettre en place des visuels et un dashboard, grâce aux procédés exposés dans ce lien :
https://superset.incubator.apache.org/docs/creating-charts-dashboards/first-dashboard
Cela permet de découvrir Superset, pour ensuite pouvoir réaliser ses propres visuels et analyses de données et connecter les bases de données dont on a besoin.
Superset permet de requêter ses données via son interface SQL Lab. Ainsi, on sélectionne une base de données, le schéma de celle-ci et une table à laquelle on s’est connecté précédemment avec l’URI SQLAlchemy correspondant, et on peut par la suite réaliser des requêtes interactives. De plus, il est possible de prévisualiser les données et de sauvegarder l’historique des requêtes.
En revanche, le principal point négatif de SQL Lab est l’impossibilité de requêter ou d’ajouter plusieurs tables en même temps. Une solution consiste à créer des vues pour réaliser des jointures de plusieurs tables, mais cela peut entraîner des problèmes de performance. En effet, si l’on souhaite effectuer une transformation sur cette vue, Superset exécutera une requête en plus de la requête de vue déjà existante.
Comparaison avec Tableau et Metabase
Après avoir présenté cet outil de visualisation qu’est Apache Superset, voici un comparatif avec deux autres outils d’analyse et de présentation graphique des données, Tableau et Metabase.
Tableau | Apache Superset | Metabase |
Payant | Open source et gratuit, incubé par l’Apache Software Foundation (ASF) | Open source et gratuit, version payante d’entreprise qui apporte d’autres fonctionnalités. Offre Metabase Cloud depuis Septembre 2020 |
Possible d’établir des liens entre tables d’une même base ou de base de données différentes | Impossible de joindre/requêter plusieurs tables en même temps | Possible d’établir des liens entre tables d’une même base ou de base de données différentes |
Connectable aux bases NoSQL | Pas de connexion avec les bases NoSQL | Connectable à la base NoSQL MongoDB |
Large personnalisation des tableaux de bord via filtres, tags et légendes | Personnalisation limitée (légendes, quelques filtres et tags). Beaucoup d’améliorations apportées dernièrement sur ce point | Personnalisation des tableaux de bord avec un large panel de visuels, légendes, filtres |
Authentification avec OAuth, OpenID, SAML ou Active Directory | Authentification avec OAuth, OpenID ou LDAP | Authentification avec OAuth ou LDAP |
Facilité d’utilisation pour les débutants, pas de nécessité de connaître le SQL, possibilité d’approfondir les connaissances via des guides pour les plus expérimentés | Interface intuitive, nécessité de connaître le SQL pour pouvoir pleinement profiter de SQL Lab notamment | Facilité d’utilisation pour les débutants, pas de nécessité de connaître le SQL. Exploration des données simple à réaliser pour les personnes non techniques |
Conclusion
Apache Superset est un projet open source qui évolue et grandit très rapidement, la communauté est très réactive. Ses points forts sont les nombreuses bases de données que l’on peut connecter, et des visuels variés, faciles à utiliser, il est très simple de créer des tableaux de bord. Il faut toutefois connaître le SQL pour pouvoir pleinement exploiter cet outil de visualisation. Ce logiciel open source est une bonne alternative à d’autres solutions comme Metabase, en fonction de vos critères de sélection, mais il est encore assez loin de Tableau, l’un des outils les plus utilisés en visualisation de données.
Le créateur initial de Superset, Maxime Beauchemin, a fondé l’entreprise Preset, dont la plateforme d’analyse de données se base sur l’outil open source de visualisation. C’est une manière d’accélérer un peu plus le développement de Superset, via le financement et la vitrine commerciale de Preset. Il est intéressant de suivre l’évolution générale d’Apache Superset.
C’est donc un outil à considérer comme dernière brique de votre Data Platform, qui ne vous coûtera que le prix des ressources nécessaires pour le déployer.
Références :
https://superset.incubator.apache.org/
https://preset.io/
https://github.com/apache/incubator-superset
https://www.dremio.com/tutorials/dremio-apache-superset/
https://blog.smartcat.io/2018/test-driving-apache-superset/
https://medium.com/datadriveninvestor/intoducing-apache-superset-an-open-source-data-visualizaton-tool-4684627014fd