Metabase, Streamlit et Redash repondent a un besoin croissant : des dashboards rapides a deployer, sans passer par un Data Analyst pour chaque requete. Savoir positionner ces outils — et en assurer la gouvernance — est un vrai differenciateur en entretien.
Les outils BI self-service permettent aux equipes metier d'explorer les donnees sans solliciter un Data Analyst a chaque requete. En entretien, on evalue la capacite a choisir le bon outil selon le contexte — et a mettre en place la gouvernance qui evite le chaos.
Quelle est la difference entre les questions visuelles et les questions SQL natives dans Metabase ? Pourquoi ne pas donner l acces SQL natif a tous les utilisateurs ?
Bonne pratique : ne pas donner l'acces SQL natif a tout le monde. Creer des Modeles pour exposer des vues preoptimisees. Pointer vers un replica de lecture, jamais la base de production transactionnelle.
Dans quel cas choisissez-vous Streamlit plutot que Metabase ? Quelle est la fonction st.cache_data et pourquoi est-elle critique ?
import streamlit as st
import pandas as pd
import plotly.express as px
from sqlalchemy import create_engine
# Cache critique : evite de recharger les donnees a chaque interaction
@st.cache_data(ttl=3600)
def load_data(start_date, end_date):
engine = create_engine("postgresql://...")
query = f"""
SELECT region, month, SUM(revenue) as revenue
FROM sales
WHERE date BETWEEN '{start_date}' AND '{end_date}'
GROUP BY region, month
"""
return pd.read_sql(query, engine)
st.title("Dashboard Ventes")
# Filtres interactifs dans la sidebar
with st.sidebar:
regions = st.multiselect("Regions", ['FR','DE','UK','ES'])
date_range = st.date_input("Periode", value=(start, end))
df = load_data(*date_range)
if regions:
df = df[df['region'].isin(regions)]
# KPIs en colonnes
c1, c2, c3 = st.columns(3)
c1.metric("CA Total", f"{df.revenue.sum():,.0f} EUR", delta="+8.3%")
c2.metric("Regions actives", df.region.nunique())
c3.metric("Meilleur mois", df.groupby('month').revenue.sum().idxmax())
# Graphique interactif
fig = px.bar(df.groupby('region').revenue.sum().reset_index(),
x='region', y='revenue')
st.plotly_chart(fig, use_container_width=True)Quelle est la valeur de Redash par rapport a des exports SQL manuels sur Excel ?
| Metabase | Streamlit | Redash | Power BI / Tableau | |
|---|---|---|---|---|
| Cible | Utilisateurs metier | Data Engineers/Scientists | Equipes tech SQL | Data Analysts / BI |
| Courbe | Tres faible | Moyenne (Python) | Faible (SQL) | Moyenne a elevee |
| Custom | Limitee | Maximale | Moderee | Elevee |
| Cout | Gratuit (OSS) | Gratuit (OSS) | Gratuit (OSS) | Licences par user |
| Self-service | Excellent | Non (code requis) | Bon (SQL requis) | Bon |
| ML integre | Non | Oui (Python natif) | Non | Partiel |
Quels sont les risques d'un deploiement Metabase sans gouvernance ? Comment les evitez-vous ?
| Niveau | Maitrise attendue | Signal GO | NO-GO |
|---|---|---|---|
| Junior | Utilisation de Metabase ou Streamlit, connexion a une base | A cree un dashboard Metabase, sait connecter une source de donnees | Ne connait aucun outil self-service, ne sait pas quand utiliser Metabase vs Power BI |
| Confirme | Gouvernance Metabase, Streamlit avec cache, positionnement des outils | A deploye Metabase en prod avec read replica et modeles, utilise st.cache_data | A deploye Metabase sans read replica, donne l'acces SQL natif a tous |
| Senior | Architecture self-service complete, choix d'outil justifie, monitoring | A architecture un stack self-service (Metabase + dbt + warehouse), justifie ses choix | Ne peut pas expliquer quand utiliser Metabase plutot que Power BI |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.