Aller au contenu principal
Simon Sangla
Retour aux missions

Exemple, données fictives

AI Analytics Trust Sprint · livrable d’exemple

Exemple de rapport de préparation

Voici le format du rapport du sprint, rempli à partir du projet de démonstration public dbt-revenue-variance-demo (commit 243d6f0, CI verte). Aucun client, aucune donnée client. Ce n’est ni un audit Cortex Analyst ni une exécution dans Snowflake : la démo n’a ni l’un ni l’autre. Les résultats question par question ne sont pas montrés ici. Le deuxième bloc dit ce qu’un vrai projet ajoute.

Client
Aucun (projet de démonstration fictif)
Domaine présenté
Chiffre d’affaires mensuel et écart au budget (modèles dbt et couche sémantique, DuckDB)
Préparé le
2026-10-07 (exemple)
Préparé par
Simon Sangla, ingénieur analytics et IA indépendant
Verdict
GO SOUS CONDITIONS (simple exemple de format ; aucun système réel n’a été évalué). Chaque condition renvoie à un constat ci-dessous.

1. Synthèse

Contrôles exécutés
6 preuves rejouables, chacune avec son énoncé, son test et son résultat dans le dépôt ; la CI les rejoue à chaque push
Chiffre de référence
Chiffre d’affaires de 53 546,30 EUR (build propre), recalculé à partir des commandes brutes
Défauts injectés dans les données
3. Le build d’origine en a détecté 1 sur 3 ; avec deux tests ajoutés pour eux, il en détecte 3 sur 3
Changements qui laissent un dbt build simple au vert
4 distincts : deux des défauts de données, un changement d’agrégation de la métrique, un changement de filtre dans la requête de dashboard
Résidence des données
Pas une exécution dans Snowflake. Cet exemple a tourné sur DuckDB avec des données fictives.

2. Ce qu’un vrai projet ajoute (non montré dans cet exemple)

Cet exemple couvre la partie confiance des métriques et validation. Le sprint lui-même est une évaluation à périmètre fixe de 5 jours de votre configuration Snowflake Cortex ou text-to-SQL, et le rapport ajoute :

3. Carte de confiance des métriques

Granularité : le niveau que représente une ligne. Test à réponse connue : recalcule un chiffre indépendamment à partir des données brutes et le compare à celui du modèle.

4. Constats

Les constats ci-dessous viennent d’une injection volontaire de défauts sur une démo publique, pas d’une découverte sur un système réel.

Constat 1 (gravité élevée) : une classe de défauts qu’un pipeline au vert peut laisser passer.

Trois défauts ont été injectés dans le seed des commandes d’une copie du projet. Le chiffre d’affaires propre est de 53 546,30 EUR.

  • Cinq lignes de commande terminées chargées deux fois

    Chiffre d’affaires (EUR)
    53 776,60 (+230,30)
    Build d’origine
    Détecté (unique_stg_orders_order_id)
    Après deux tests ajoutés pour eux
    Détecté
  • Lignes remboursées requalifiées en terminées

    Chiffre d’affaires (EUR)
    61 606,60 (+8 060,30, +15 %)
    Build d’origine
    Non détecté : PASS=27, ERROR=0
    Après deux tests ajoutés pour eux
    Détecté (assert_refunds_present_each_month)
  • Commandes de mars 2026 manquantes

    Chiffre d’affaires (EUR)
    35 950,20 (-17 596,10, -33 %)
    Build d’origine
    Non détecté : PASS=27, ERROR=0
    Après deux tests ajoutés pour eux
    Détecté (assert_orders_cover_budget_months)

Les tests à réponse connue n’ont pas aidé : ils recalculent le chiffre d’affaires à partir du même seed, donc quand le seed est faux, les deux côtés concordent. Le mois manquant n’apparaissait que comme un écart de 100 % au budget, ce qui ressemble à un résultat métier, pas à un défaut de données. Tests ajoutés : deux. Build propre PASS=29, ERROR=0 ; les trois builds modifiés échouent avec ERROR=1, 1 et 2.

Constat 2 (gravité élevée) : un changement dans la couche sémantique est invisible pour le build.

Un mot changé dans la définition de la métrique (agg: sum devient agg: max) : la métrique renvoie 9 550,90 EUR contre 53 546,30 EUR depuis les commandes brutes. dbt build reste vert parce qu’aucun test de table ne lit la couche sémantique. Seul un contrôle à réponse connue, interrogé via la couche sémantique elle-même, le détecte.

Constat 3 (gravité moyenne) : deux définitions d’un même chiffre.

Une requête de type dashboard et la métrique revenue concordent à 53 546,30 EUR. Si la requête abandonne le filtre de statut, elle renvoie 61 606,60 EUR, et dbt build reste vert (PASS=27, ERROR=0). Un contrôle qui exécute la requête et la métrique côte à côte le détecte.

Constat 4 (résolu) : un changement de définition doit être visible.

Compter les commandes remboursées comme chiffre d’affaires fait passer celui-ci à 61 606,60 EUR (+8 060,30, +15 %) et met le build au rouge sur deux tests à réponse connue (ERROR=2). Le changement ne peut pas atteindre le pont d’écart en silence : quelqu’un doit l’approuver.

5. Décision go / no-go avant production

Conditions avant déploiement général

  1. Garder les deux tests de données ajoutés (couverture des mois de budget, remboursements présents chaque mois) dans le build. Constat 1.
  2. Exécuter en CI le contrôle à réponse connue de la métrique via la couche sémantique. Constat 2.
  3. Exécuter en CI le contrôle de parité dashboard / métrique, ou supprimer la seconde définition. Constat 3.

Sources : proofs/2026-10-07-*/CLAIM.md dans le dépôt de démonstration, commit 243d6f0. Données fictives, seed 42.

Réserver un appel de cadrage de 20 min (ouvre un nouvel onglet)