Déployer Apache Superset pour visualiser les données d’un portail CKAN
Apache Superset s’impose comme l’outil open source de référence pour l’exploration et la visualisation de données. Couplé à un portail CKAN, il permet de transformer des jeux de données bruts en tableaux de bord interactifs accessibles aux décideurs comme aux citoyens. Cet article détaille la mise en place d’une chaîne complète : de l’ingestion CKAN vers une base analytique, jusqu’aux dashboards Superset exposés en iframe sur un site public.
Pourquoi Superset plutôt qu’une autre solution ?
Dans l’écosystème open data, les portails CKAN offrent un excellent catalogage mais des capacités de visualisation limitées. Superset comble ce manque en proposant plus de 40 types de graphiques natifs, un moteur SQL intégré, et une gestion fine des rôles et permissions — le tout sans licence commerciale. Comparé à Metabase ou Grafana, Superset se distingue par sa capacité à gérer des volumes importants via des connecteurs optimisés (Trino, ClickHouse, DuckDB) et par son intégration naturelle dans une stack Python.
Architecture de référence
L’architecture proposée repose sur trois couches distinctes. La première est la couche d’ingestion : un script Python ou un job Airflow extrait périodiquement les ressources CKAN via l’API package_show et les charge dans une base analytique PostgreSQL ou DuckDB. La deuxième couche est le moteur Superset lui-même, déployé en conteneur Docker avec Redis pour le cache et Celery pour les requêtes asynchrones. La troisième couche est la diffusion : les dashboards sont embarqués via iframe dans le site public WordPress ou Drupal grâce au mode « embedded » de Superset, avec un token JWT pour le contrôle d’accès.
Déploiement Docker pas à pas
Le déploiement se fait via docker-compose avec quatre services : superset-web, superset-worker, superset-beat et redis. Le fichier superset_config.py est monté en volume pour configurer la connexion à la base métadonnées, les paramètres de sécurité (SECRET_KEY, CSRF, headers CORS pour l’embed), et les feature flags comme EMBEDDED_SUPERSET. L’initialisation se fait avec superset db upgrade puis superset init pour créer les rôles par défaut.
Connecter CKAN à Superset
Deux approches sont possibles pour alimenter Superset depuis CKAN. La première, directe, consiste à pointer Superset vers le DataStore CKAN via son extension PostgreSQL — simple mais limitée aux données tabulaires déjà chargées dans le DataStore. La seconde, recommandée pour la production, passe par un pipeline ETL léger : un DAG Airflow ou un cron Python interroge l’API CKAN, nettoie et normalise les données, puis les insère dans une base analytique dédiée. Cette séparation garantit la stabilité du portail CKAN tout en offrant des performances de requêtage optimales dans Superset.
Sécurité et contrôle d’accès
Superset intègre un système RBAC complet. Pour un usage open data, on crée typiquement un rôle « Public Viewer » avec accès en lecture seule aux dashboards publiés. L’intégration Keycloak est possible via le provider Flask-OIDC, ce qui permet un SSO unifié entre CKAN, Superset et les autres briques du SI. Les dashboards embarqués utilisent un guest token avec une durée de vie courte, généré côté serveur pour éviter toute fuite de credentials.
Bonnes pratiques pour des dashboards open data
Un dashboard destiné au grand public doit respecter quelques principes. Limiter le nombre de graphiques à cinq ou six par vue pour éviter la surcharge cognitive. Privilégier les types de visualisation simples (barres, lignes, cartes choroplèthes) plutôt que les graphiques exotiques. Ajouter systématiquement un filtre temporel et un filtre géographique. Documenter chaque indicateur avec une infobulle explicative. Enfin, activer le cache Superset avec un TTL adapté à la fréquence de mise à jour des données sources — typiquement 24 heures pour des données ouvertes mises à jour quotidiennement.
Aller plus loin
Une fois la chaîne en place, plusieurs évolutions sont envisageables : ajouter des alertes automatiques sur des seuils (via Superset Alerts), connecter un moteur Trino pour fédérer plusieurs sources sans les dupliquer, ou encore exposer les dashboards en tant que datasets CKAN enrichis avec un lien retour vers la visualisation. L’objectif final est de créer un cercle vertueux où les données ouvertes deviennent réellement exploitables par tous les publics.
