Restitution de données et création de tableaux de bords
Metabase est un outil de restitution de données et de création de tableaux de bord orienté utilisateurs. Il se connecte à vos sources de données, vous propose de les découvrir et d'en produire des dashboards ergonomiques.
Dans le domaine de la Business Intelligence ou créations de dashboard métiers, il existe beaucoup d'outils payants et quelques uns open-source. Nous allons vous présenter Metabase qui à l'avantage de proposer leur outil avec les principales fonctionnalités en open source et gratuitement. Cette version est à héberger soi-même (exemple ci-dessous). Sinon ils proposent une version avec plus de sécurité et d'audit mais la marche est haute en terme de prix. Ils ont aussi des offres en mode SAAS.
Installation
Prérequis : base de donnée PostgreSQL
Cette base de donnée sera utilisée pour la configuration de Metabase. Voici un exemple de commandes et script :
# Ajout d'un utilisateur systeme postgres sur le host et creation du repertoire des données de la base
$ sudo useradd -r postgres
$ mkdir data
$ sudo chown postgres:postgres
# Ajout du reseaux docker dédié
$ docker network create MB_NET
# Execution du script start.sh ci-dessous
$ ./start.sh
avec le script start.sh
suivant :
docker run -d --name metabaseDB \
--restart unless-stopped \
--network MB_NET \
--user 999:998 \
-v /etc/passwd:/etc/passwd:ro \
-v $PWD/data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=metabasedemo \
-e POSTGRES_USER=metabasedemo \
-e POSTGRES_DB=metabase \
-p 15432:5432 \
postgres:12.4
Image docker de Metabase
Nous utilisons l'image Docker officielle avec le script suivant :
#!/bin/sh
docker run -d -p 3000:3000 \
--network MB_NET \
-e "MB_DB_TYPE=postgres" \
-e "MB_DB_DBNAME=metabase" \
-e "MB_SB_PORT=5432" \
-e "MB_DB_USER=metabasedemo" \
-e "MB_DB_PASS=metabasedemo" \
-e "MB_DB_HOST=metabaseDB" \
-e "JAVA_TIMEZONE=Europe/Paris" \
--name metabase metabase/metabase:latest
et après exécution de ces scripts vous pouvez aller sur localhost:3000 et vous obtenez l’assistant de première configuration :
Vous avez le choix de plusieurs sources de données :
Overview
La prise en main est plutôt intuitive et simple et orienté utilisateur (et non pas informaticien comme dans beaucoup d'outils BI).
Une base de donnée de démo est fournie ce qui permet de jouer avec l'outil sans ajouter de sources externes.
Metabase vous présente une radiographie de vos données : il a scanné les tables et construit pour vous des premiers tableaux de bords plus ou moins pertinents en fonction de votre modèle.
En plus de la radiographie, vous avez 3 notions essentielles :
- les requêtes que vous pouvez construire de 3 manière différentes, de la question simple à la requête SQL
- les dashboards qui sera une composition de vos requêtes
- les pulses qui sont des rapports automatiques que vous pouvez envoyer sur Slack ou par mail.
Pour requeter les données, vous avez donc 3 niveaux en fonction de votre appétence technique :
- La question simple va lire le contenu d'une table choisie. Metabase fonctionnera mieux si votre modèle de donnée source est déjà bien structuré. Il ne vous permet pas de transformation intermédiaires et de préparation de données comme d'autres outils de BI plus évolués.
- La question personnalisée permettra les jointures avec d'autres tables, l'ajout de colonnes calculées, le tout de façon graphique
- La requête native permet de taper ses propres requêtes SQL. Vous avez la possibilité d'ajouter des clauses where optionnelles (entre [[ et ]] ) et aussi des variables qui pourront être utilisées dans les dashboards.
Comparaisons entre périodes
Un cas classique est de présenter des données sur une période comparées à une autre période.
Une façon de faire est d'utiliser la question personnalisée. Dans la partie "Résumer", choisir une expression personnalisée au lieu d'une colonne existante et utiliser un opérateur conditionnel tel que sumif
ou countif
. Par exemple : SumIf([Quantity], between([Created at],"2020-01-01","2020-12-31"))
.
Notes et écueils
Alias et variables
Dans les requêtes SQL, le système n'aime pas l'utilisation des alias avec les variables. Un exemple qui ne fonctionne pas :
select p.nom, p.race
from pet as p
where 1=1
[[ and {{ color }} ]];
Explications :
- nous utilisons ici une clause optionnelle délimitée entre crochet. Si celle-ci n'est pas présente, la clause where se retrouve vide et la requête n'est plus valide, d'ou l'ajout du
1=1
. - la variable "color" rattachée à la colonne du même nom ne passera pas ensuite dans la requête générée par Metabase et vous donnera une erreur.
Notre conseil est d'enlever les alias pour les tables sur lesquelles vous avez des variables.
Notes sur outils de BI
Nous ne ferons pas de comparaisons poussées avec les gros de la BI tels que Qlik ou Tableau Software, mais le principal avantage de Metabase est sa prise main facile et rapide et son ergonomie orientée utilisateur final.