Aller au contenu

Apache Superset

Business intelligence, tableaux de bord et exploration SQL.

URL https://bi.akko.local
Authentification Keycloak SSO (realm akko)
Service Docker superset

Aperçu

Apache Superset est la couche BI de la plateforme AKKO. Il se connecte à Trino pour interroger les tables Iceberg et les données PostgreSQL, offrant :

  • Une construction de graphiques interactive avec une interface glisser-déposer
  • SQL Lab pour les requêtes ad-hoc
  • Des tableaux de bord pré-construits auto-provisionnés au démarrage
  • Le support de la fédération de requêtes (Iceberg + PostgreSQL dans un seul graphique)

Contenu auto-provisionné

AKKO inclut un sidecar superset-init qui provisionne automatiquement un environnement de démonstration complet au premier démarrage. Aucune configuration manuelle n'est requise.

Ce qui est créé

Catégorie Nombre Détails
Connexion base de données 1 Trino (AKKO) -- URI SQLAlchemy : trino://trino@trino:8080/iceberg
Jeux de données physiques 4 customers, accounts, transactions, advisors (depuis iceberg.analytics.*)
Jeux de données virtuels 4 balance_by_account_type, monthly_volume_by_operation, spending_by_category, revenue_by_branch
Graphiques 8 KPIs, graphiques en barres, graphiques en lignes, camembert, tableaux
Tableau de bord 1 AKKO Banking Overview

Détail des graphiques

Graphique Type Jeu de données
Total Customers Big Number customers
Active Balance Big Number accounts
Balance by Account Type Bar balance_by_account_type (virtuel)
Monthly Transaction Volume Line monthly_volume_by_operation (virtuel)
Spending by Category Donut Pie spending_by_category (virtuel)
Revenue by Branch (Federation) Bar revenue_by_branch (virtuel -- joint Iceberg + PostgreSQL)
Top 10 Customers by Volume Table customers
Advisor Performance Table advisors

Les données doivent exister au préalable

Le script d'auto-provisionnement crée des jeux de données qui référencent des tables Iceberg. Si les tables n'existent pas encore (le notebook de démonstration bancaire n'a pas été exécuté), les jeux de données sont ignorés avec un avertissement. Exécutez d'abord le notebook akko-banking-demo.ipynb, puis redémarrez Superset pour compléter le provisionnement.

Exemple de fédération

Le graphique Revenue by Branch démontre la fédération de requêtes de Trino -- il joint des données du catalogue Iceberg (iceberg.analytics.customers, iceberg.analytics.accounts, iceberg.analytics.transactions) avec des données PostGIS de PostgreSQL (postgresql.geospatial.branches) dans une seule requête SQL.


Connexion Trino

Superset se connecte à Trino avec la configuration suivante :

Nom de la base de données :   Trino (AKKO)
URI SQLAlchemy :               trino://trino@trino:8080/iceberg

Cette connexion donne accès à tous les catalogues Trino :

Catalogue Backend Contenu
iceberg Apache Polaris (Iceberg REST) Tables analytiques (customers, accounts, transactions, advisors)
postgresql PostgreSQL Données géospatiales (branches avec PostGIS), pgvector
system Trino interne Métadonnées d'exécution, historique des requêtes

SQL Lab

SQL Lab est l'éditeur SQL interactif de Superset. Accédez-y depuis le menu supérieur : SQL > SQL Lab.

Fonctionnalités :

  • Éditeur SQL multi-onglets avec coloration syntaxique
  • Historique des requêtes et requêtes sauvegardées
  • Explorateur de schémas de tables (barre latérale gauche)
  • Export des résultats en CSV

Exemple de requête

-- Revenu par région depuis les tables Iceberg
SELECT c.segment,
       COUNT(DISTINCT c.customer_id) AS customers,
       ROUND(SUM(ABS(t.amount)), 2) AS total_volume
FROM iceberg.analytics.customers c
JOIN iceberg.analytics.accounts a ON a.customer_id = c.customer_id
JOIN iceberg.analytics.transactions t ON t.account_id = a.account_id
WHERE a.status = 'active'
GROUP BY c.segment
ORDER BY total_volume DESC;

Requêtes SQL pré-construites

Le fichier superset/assets/akko-banking-queries.sql contient des requêtes SQL prêtes à l'emploi pour l'exploration dans SQL Lab.


Créer des graphiques personnalisés

  1. Naviguez vers Charts > + Chart
  2. Sélectionnez un jeu de données (ou créez-en un nouveau depuis SQL Lab)
  3. Choisissez un type de visualisation (barre, ligne, camembert, tableau, etc.)
  4. Configurez les métriques et dimensions
  5. Cliquez sur Save et ajoutez optionnellement à un tableau de bord

Créer un jeu de données personnalisé

Un jeu de données physique correspond directement à une table :

  1. Allez dans Datasets > + Dataset
  2. Sélectionnez la base de données Trino (AKKO)
  3. Sélectionnez le schéma (par ex. analytics)
  4. Sélectionnez la table
  5. Cliquez sur Add

Un jeu de données virtuel est défini par une requête SQL :

  1. Écrivez une requête dans SQL Lab
  2. Cliquez sur Save > Save as Dataset
  3. Les résultats de la requête deviennent un jeu de données réutilisable pour les graphiques

Authentification

Superset utilise Keycloak SSO pour l'authentification. Les utilisateurs se connectent via le realm AKKO et sont associés aux rôles Superset en fonction de leur appartenance aux groupes Keycloak.


Problèmes connus

Les métriques sur les jeux de données virtuels doivent utiliser des fonctions d'agrégation

Lors de la création de graphiques sur des jeux de données virtuels (définis par SQL), les métriques doivent utiliser des fonctions d'agrégation comme SUM(col), COUNT(*) ou AVG(col). L'utilisation d'un nom de colonne brut (par ex. total_balance au lieu de SUM(total_balance)) échouera avec une erreur Trino EXPRESSION_NOT_AGGREGATE.

Association graphique-tableau de bord

Le point d'accès POST de l'API REST de Superset pour les tableaux de bord ne crée pas la relation many-to-many entre tableaux de bord et graphiques. Le script d'auto-provisionnement contourne ce problème en utilisant directement l'ORM Superset (dash.slices = slices). Si vous créez des tableaux de bord via l'API REST, les graphiques peuvent apparaître non liés -- re-sauvegardez le tableau de bord dans l'interface pour corriger.

superset-init s'exécute à chaque démarrage

Le script de provisionnement est idempotent. Il vérifie l'existence des bases de données, jeux de données, graphiques et tableaux de bord avant d'en créer de nouveaux. Redémarrer Superset ne dupliquera pas le contenu.