Aller au contenu principal
Insights & Analyses
Data & Décision

INSIGHT #03 // DATA WAREHOUSE & SÉMANTIQUE MÉTIER

La couche sémantique dbt : le chaînon manquant pour fiabiliser votre BI

Pourquoi unifier vos règles de calcul dans dbt Core avec MetricFlow est indispensable avant d'alimenter vos dashboards et assistants Text-to-SQL.

MG

Martial GNINHI

Directeur Technique & Architecte Data

10 Janvier 2025#dbt#Snowflake#BI#Semantic Layer#MetricFlow#Power BI
01 // CONTEXTE & CAS D'USAGE RÉELRetail & E-Commerce

Secteur & Contexte

E-commerce & Retail omnicanal multi-filiales

Contraintes d'exploitation

3 outils concurrents de restitution (Power BI pour la finance, Metabase pour le terrain, requêtes SQL manuelles pour les analystes)

Enjeu critique

Mettre fin aux réunions d'arbitrage où l'on débat pendant 40 minutes de la validité du chiffre plutôt que de la stratégie commerciale

Dans la quasi-totalité des entreprises en forte croissance, le comité de direction mensuel commence par le même rituel stérile : la direction financière annonce 14,2 M€ de chiffre d'affaires, le marketing revendique 15,1 M€, et les responsables de filiales comptabilisent 13,8 M€. Personne n'a tort : chaque équipe a simplement calculé son chiffre dans son outil avec ses propres filtres (dates de commande contre dates de facturation, exclusion tardive des retours, gestion hétérogène des remises promotionnelles). Tenter de résoudre ce chaos en multipliant les dashboards ne fait qu'aggraver la dispersion. Seule une couche sémantique centralisée, déclarée en amont dans le data warehouse, permet de réconcilier durablement les chiffres.

02 // LE PROBLÈME EN PRODUCTION

La dispersion de la logique métier dans les outils de visualisation

Laisser chaque dashboard ou outil de BI coder ses propres agrégations génère une dette analytique exponentielle et ruine toute tentative d'interrogation en langage naturel.

ERR_01 // DAX_SQL_DISCORD

Discordance structurelle des calculs locaux

Une formule DAX complexe dans Power BI exclut les avoirs avec 15 jours de décalage, tandis que la requête SQL sous Metabase les retranche en temps réel.

Écarts récurrents de 4% à 9% entre directions
ERR_02 // TEXT_TO_SQL_CHAOS

Inutilisabilité des agents Text-to-SQL sans ontologie

Un LLM connecté directement à des tables brutes de base de données hallucine sur la définition de la 'marge brute' et choisit aléatoirement entre prix catalogue et prix net.

Taux d'erreur de 42% sur requêtes décisionnelles IA
ERR_03 // SILENT_MAINTENANCE_COST

Multiplication du coût de maintenance des règles

Toute évolution comptable ou fiscale exige de retoucher manuellement 35 rapports distincts dans différents outils, avec un risque critique d'oubli.

Des centaines d'heures d'ingénierie gaspillées
03 // APPROCHE & ARCHITECTURE

Modélisation Medallion, dbt Core 1.8+ et MetricFlow universel

Nous déportons 100% de la logique métier dans le dépôt de code dbt versionné sous Git : les outils de visualisation ne font plus aucun calcul, ils consomment des métriques certifiées.

Stack & Composants de production qualifiés

dbt Corev1.8.4· Moteur de transformation, lignage de données et tests d'intégrité
MetricFlowv0.20.1· Moteur d'abstraction sémantique et génération SQL dynamique
SnowflakeEnterprise· Data Warehouse haute performance et compute analytique
Power BIDirectQuery Semantic· Restitution décisionnelle branchée sur l'API sémantique certifiée

Pipeline de la donnée brute à la consommation unifiée

STAGE 01

Normalisation Medallion (Bronze / Silver)

Ingestion et nettoyage des transactions brutes ERP/Shopify sous Snowflake avec typage strict et déduplication automatique.

Pattern : Medallion Architecture & Idempotent ELT
STAGE 02dbt Core 1.8+

Modélisation dimensionnelle Gold (Star Schema)

Construction de tables de faits transactionnelles auditées et de dimensions conformes (Clients, Produits, Magasins, Calendrier).

Pattern : Kimball Dimensional Modeling
STAGE 03

Déclaration sémantique MetricFlow

Définition déclarative des mesures et métriques dérivées en fichiers YAML versionnés : agrégations additives, non-additives et fenêtres glissantes.

Pattern : Semantic Metrics Layer (MetricFlow)
STAGE 04API GraphQL / JDBC

Exposition universelle (BI & Text-to-SQL)

Diffusion via l'API Semantic Layer (GraphQL / JDBC) vers Power BI, Metabase et les agents conversationnels sans réécriture locale.

Pattern : Universal Semantic Consumption
metricflow_semantic_model.yml — Définition de la métrique Net Revenue
yaml
# Définition sémantique unique du chiffre d'affaires net
semantic_models:
  - name: transactions
    model: ref('fct_transactions_gold')
    entities:
      - name: transaction_id
        type: primary
      - name: customer_id
        type: foreign
    measures:
      - name: gross_amount
        agg: sum
      - name: refund_amount
        agg: sum
      - name: tax_amount
        agg: sum

metrics:
  - name: net_revenue
    description: "Chiffre d'affaires net consolidé après déduction des remboursements et taxes"
    type: derived
    type_params:
      expr: gross_amount - refund_amount - tax_amount
      metrics:
        - name: gross_amount
        - name: refund_amount
        - name: tax_amount

Cette métrique est calculée de manière identique, que la requête provienne de Power BI, d'Excel ou d'un agent IA.

04 // ARBITRAGES TECHNIQUES & LIMITES ASSUMÉES

Arbitrages techniques & Rigidité maîtrisée

Adopter une couche sémantique centrale met fin aux désaccords de chiffres, mais impose de renoncer au bricolage opportuniste des analystes.

NOTE DE GOUVERNANCE : Une couche sémantique n'accélère pas la création d'un graphique ad-hoc de 5 minutes. Elle garantit que les décisions stratégiques reposent sur des chiffres inattaquables.
Exactitude certifiée vs Réactivité terrain
Arbitrage retenu :

Toute nouvelle métrique doit faire l'objet d'une PR Git dbt avec tests d'intégrité avant d'apparaître dans les dashboards.

Le coût assumé :

Délai de création d'un nouvel indicateur passant de 15 minutes en local à 24-48h de revue d'ingénierie.

Mitigation déployée :

Espaces bac à sable 'Sandbox Schema' temporaires pour les expérimentations d'analystes, isolés du reporting officiel.

Abstraction sémantique vs Optimisation SQL bas niveau
Arbitrage retenu :

MetricFlow assemble les requêtes SQL via des sous-requêtes imbriquées pour garantir la conformité sémantique.

Le coût assumé :

Légère surconsommation de crédits Snowflake (estimée entre 10% et 18% à titre indicatif) sans partitionnement fin.

Mitigation déployée :

Matérialisation incrémentale dbt sur les dimensions temporelles et clustering keys rigoureuses sur Snowflake.

05 // RÉSULTATS & MESURES CONTEXTUALISÉES

Résultats mesurés sur le reporting de direction

Impact opérationnel mesuré après déploiement de la couche sémantique dbt sur un portefeuille de 42 tableaux de bord.

Divergence de calcul entre départements

0.0%

Sur l'ensemble des 25 métriques de gestion clés

Précision des requêtes Text-to-SQL IAÀ titre indicatif

91%

Passée de 58% à 91% grâce à l'ontologie dbt

Temps d'audit lors des clôtures mensuellesÀ titre indicatif

÷ 4

Focalisation sur l'action commerciale et non sur le recalcul

Protocole de mesure //Mesures observées sur le périmètre de reporting financier et opérationnel de 12 filiales sur 3 trimestres consécutifs. La précision de l'agent Text-to-SQL est mesurée à titre indicatif sur un banc de 120 questions métier types annotées.

Bénéfices d'exploitation constatés :

  • Alignement immédiat entre la direction financière, la logistique et le marketing lors des comités de direction.
  • Facilité d'intégration de nouveaux outils de visualisation sans avoir à réimplémenter la logique comptable.
  • Possibilité d'activer des agents conversationnels de décision fiables interrogeant la donnée sans halluciner.
  • Documentation vivante des règles de calcul directement synchronisée dans le dbt Docs partagé.
06 // POUR ALLER PLUS LOIN · SOLUTIONS & SERVICES

Prolonger cette architecture sur vos projets

Découvrez les services d'ingénierie et les solutions métiers directement liés à cette problématique :

Vous concevez ou auditez une architecture similaire ?