Lab 075 : Power BI Copilot — Analytique autonome et narration de données¶
Ce que vous apprendrez¶
- Ce qu'est Power BI Copilot et comment il transforme la création de rapports avec le langage naturel
- Comment les rapports assistés par Copilot et générés par Copilot se comparent à la création manuelle
- Analyser un jeu de données de rapports pour mesurer les gains de temps, la précision et l'adoption par département
- Comprendre comment la génération de mesures DAX fonctionne avec Copilot
- Construire un rapport d'impact quantifiant la valeur de Copilot pour l'équipe analytique
Introduction¶
Power BI Copilot apporte l'IA générative directement dans l'expérience Power BI au sein de Microsoft Fabric. Les analystes et les utilisateurs métier peuvent :
- Créer des rapports en décrivant ce qu'ils veulent en langage naturel
- Générer des mesures DAX sans mémoriser la syntaxe complexe
- Construire des narrations qui résument automatiquement les insights clés
- Poser des questions sur leurs données avec des requêtes conversationnelles
Méthodes de création¶
| Méthode | Qui | Fonctionnement | Durée typique |
|---|---|---|---|
| Manuelle | Analyste | Construit chaque visuel manuellement, écrit le DAX manuellement | 2–4 heures |
| Assistée par Copilot | Analyste | L'analyste démarre ; Copilot suggère des visuels, génère le DAX | 1–2 heures |
| Générée par Copilot | Utilisateur métier | Décrit le rapport en langage naturel ; Copilot le construit | 15–30 min |
Le scénario¶
Vous êtes un Responsable d'équipe BI dans une entreprise de taille moyenne. Votre équipe pilote Power BI Copilot depuis 3 mois. Vous disposez de 10 rapports répartis dans 4 départements — certains manuels, certains assistés par Copilot et certains entièrement générés par Copilot. La direction veut savoir : « Copilot fait-il vraiment gagner du temps ? La qualité est-elle acceptable ? »
Votre jeu de données (powerbi_reports.csv) contient les réponses. Votre mission : analyser les données et construire un rapport d'impact convaincant.
Données simulées
Ce lab utilise un jeu de données de rapports simulé. Les données reflètent des patterns réels : les rapports générés par Copilot sont plus rapides mais légèrement moins précis ; les rapports assistés par Copilot combinent rapidité et qualité de niveau analyste.
Prérequis¶
| Exigence | Raison |
|---|---|
| Python 3.10+ | Exécuter les scripts d'analyse |
Bibliothèque pandas |
Manipulation des données |
Démarrage rapide avec GitHub Codespaces
Toutes les dépendances sont pré-installées dans le devcontainer.
📦 Fichiers de support¶
Téléchargez ces fichiers avant de commencer le lab
Enregistrez tous les fichiers dans un dossier lab-075/ de votre répertoire de travail.
| Fichier | Description | Téléchargement |
|---|---|---|
broken_powerbi.py |
Exercice de correction de bugs (3 bugs + auto-tests) | 📥 Télécharger |
powerbi_reports.csv |
Jeu de données | 📥 Télécharger |
Étape 1 : Comprendre les métriques¶
Avant d'analyser, comprenez ce que chaque colonne du jeu de données mesure :
| Colonne | Description |
|---|---|
| created_by | analyst ou business_user — qui a construit le rapport |
| creation_method | manual, copilot_assisted ou copilot_generated |
| pages | Nombre de pages du rapport |
| visuals | Nombre total d'éléments visuels (graphiques, tableaux, cartes) |
| dax_measures | Nombre de mesures DAX dans le modèle de données |
| copilot_queries | Nombre d'interactions Copilot utilisées lors de la création |
| time_saved_min | Minutes estimées économisées par rapport à une création entièrement manuelle |
| accuracy_score | Score de qualité (0,0–1,0) basé sur la revue de précision des données |
Formules clés¶
Copilot Adoption Rate = (Copilot reports ÷ Total reports) × 100
Avg Time Saved = Sum(time_saved_min for copilot reports) ÷ Count(copilot reports)
Quality Gap = Avg accuracy(manual) − Avg accuracy(copilot_generated)
Étape 2 : Charger et explorer le jeu de données¶
Le jeu de données contient 10 rapports répartis dans 4 départements :
import pandas as pd
df = pd.read_csv("lab-075/powerbi_reports.csv")
print(f"Total reports: {len(df)}")
print(f"Creation methods: {df['creation_method'].value_counts().to_dict()}")
print(f"Departments: {df['department'].unique().tolist()}")
print(f"\nAll reports:")
print(df[["report_id", "report_name", "creation_method", "time_saved_min", "accuracy_score"]].to_string(index=False))
Sortie attendue :
Total reports: 10
Creation methods: {'copilot_assisted': 4, 'copilot_generated': 4, 'manual': 2}
Departments: ['Sales', 'Marketing', 'Operations', 'HR', 'Finance']
Étape 3 : Mesurer l'adoption de Copilot¶
Combien de rapports ont utilisé Copilot sous une forme ou une autre ?
copilot_reports = df[df["creation_method"].isin(["copilot_assisted", "copilot_generated"])]
manual_reports = df[df["creation_method"] == "manual"]
copilot_count = len(copilot_reports)
total = len(df)
adoption_rate = copilot_count / total * 100
print(f"Copilot-assisted/generated reports: {copilot_count}")
print(f"Manual reports: {len(manual_reports)}")
print(f"Copilot adoption rate: {adoption_rate:.0f}%")
Sortie attendue :
Décomposez par méthode de création :
for method, group in df.groupby("creation_method"):
print(f"\n{method}:")
print(f" Reports: {len(group)}")
print(f" Avg pages: {group['pages'].mean():.1f}")
print(f" Avg visuals: {group['visuals'].mean():.1f}")
print(f" Avg DAX measures: {group['dax_measures'].mean():.1f}")
Insight
80 % des rapports utilisent désormais Copilot — un signal d'adoption fort. Les rapports manuels tendent à avoir plus de pages et de visuels, suggérant que les tableaux de bord complexes sont encore construits à la main. Les rapports générés par Copilot sont plus petits mais créés par des utilisateurs métier qui n'auraient pas pu les construire auparavant.
Étape 4 : Calculer les gains de temps¶
La colonne time_saved_min estime le temps que Copilot a fait gagner par rapport à une création entièrement manuelle :
total_time_saved = df["time_saved_min"].sum()
copilot_time_saved = copilot_reports["time_saved_min"].sum()
avg_time_saved = copilot_reports["time_saved_min"].mean()
print(f"Total time saved (all reports): {total_time_saved} min")
print(f"Total time saved (copilot reports): {copilot_time_saved} min")
print(f"Avg time saved per copilot report: {avg_time_saved:.1f} min")
print(f"Total hours saved: {total_time_saved / 60:.1f} hours")
Sortie attendue :
Total time saved (all reports): 395 min
Total time saved (copilot reports): 395 min
Avg time saved per copilot report: 49.4 min
Total hours saved: 6.6 hours
Décomposez par méthode :
for method in ["copilot_assisted", "copilot_generated"]:
subset = df[df["creation_method"] == method]
print(f"\n{method}:")
print(f" Total saved: {subset['time_saved_min'].sum()} min")
print(f" Avg saved: {subset['time_saved_min'].mean():.1f} min")
Étape 5 : Évaluer la qualité et la précision¶
Les gains de temps sont sans valeur si la qualité en pâtit. Comparez les scores de précision :
for method in df["creation_method"].unique():
subset = df[df["creation_method"] == method]
avg_acc = subset["accuracy_score"].mean()
print(f" {method:>20s}: avg accuracy = {avg_acc:.2f}")
Sortie attendue :
manual: avg accuracy = 0.96
copilot_assisted: avg accuracy = 0.94
copilot_generated: avg accuracy = 0.85
# Quality gap analysis
manual_acc = manual_reports["accuracy_score"].mean()
assisted_acc = df[df["creation_method"] == "copilot_assisted"]["accuracy_score"].mean()
generated_acc = df[df["creation_method"] == "copilot_generated"]["accuracy_score"].mean()
print(f"\nQuality gap (manual vs. assisted): {(manual_acc - assisted_acc) * 100:.1f}pp")
print(f"Quality gap (manual vs. generated): {(manual_acc - generated_acc) * 100:.1f}pp")
Compromis de qualité
Les rapports assistés par Copilot (analyste + Copilot) atteignent une précision de 0,94 — seulement 2pp en dessous du manuel. Les rapports générés par Copilot (utilisateur métier + Copilot) obtiennent 0,85 — acceptable pour l'exploration mais pouvant nécessiter une révision par un analyste avant distribution aux dirigeants.
Étape 6 : Construire le rapport d'impact¶
total_copilot_queries = copilot_reports["copilot_queries"].sum()
report = f"""# 📊 Power BI Copilot Impact Report
## Adoption Summary
| Metric | Value |
|--------|-------|
| Total Reports | {len(df)} |
| Copilot Reports | {copilot_count} ({adoption_rate:.0f}%) |
| Manual Reports | {len(manual_reports)} |
| Total Copilot Queries | {total_copilot_queries} |
## Time Savings
| Metric | Value |
|--------|-------|
| Total Time Saved | {total_time_saved} min ({total_time_saved / 60:.1f} hours) |
| Avg per Copilot Report | {avg_time_saved:.1f} min |
| Copilot-Assisted Avg | {df[df['creation_method']=='copilot_assisted']['time_saved_min'].mean():.1f} min |
| Copilot-Generated Avg | {df[df['creation_method']=='copilot_generated']['time_saved_min'].mean():.1f} min |
## Quality Assessment
| Method | Avg Accuracy | Rating |
|--------|-------------|--------|
| Manual | {manual_acc:.2f} | ⭐⭐⭐ Gold standard |
| Copilot-Assisted | {assisted_acc:.2f} | ⭐⭐⭐ Production-ready |
| Copilot-Generated | {generated_acc:.2f} | ⭐⭐ Review recommended |
## Recommendations
1. **Encourage Copilot-assisted** for analyst-built reports — saves ~41 min with near-manual quality
2. **Use Copilot-generated** for exploratory/departmental reports — saves ~58 min, good for self-service
3. **Add review step** for Copilot-generated reports going to executives — accuracy gap of {(manual_acc - generated_acc) * 100:.0f}pp
4. **Track DAX measure accuracy** — Copilot-generated DAX may need validation for complex calculations
"""
print(report)
with open("lab-075/impact_report.md", "w") as f:
f.write(report)
print("💾 Saved to lab-075/impact_report.md")
🐛 Exercice de correction de bugs¶
Le fichier lab-075/broken_powerbi.py contient 3 bugs qui produisent des métriques Power BI incorrectes. Pouvez-vous les trouver et les corriger tous ?
Exécutez les auto-tests pour voir lesquels échouent :
Vous devriez voir 3 tests échoués. Chaque test correspond à un bug :
| Test | Ce qu'il vérifie | Indice |
|---|---|---|
| Test 1 | Nombre de rapports Copilot | Devrait compter les méthodes copilot, pas manual |
| Test 2 | Temps total économisé | Devrait sommer time_saved_min, pas le moyenner |
| Test 3 | Précision moyenne par méthode | Devrait filtrer par méthode avant de calculer la moyenne |
Corrigez les 3 bugs, puis relancez. Quand vous voyez All passed!, c'est terminé !
🧠 Vérification des connaissances¶
Q1 (Choix multiple) : Quelle est la différence clé entre la création de rapports « copilot_assisted » et « copilot_generated » ?
- A) Copilot-assisted utilise un modèle différent de copilot-generated
- B) Copilot-assisted est démarré par un analyste qui utilise Copilot pour l'aide ; copilot-generated est créé entièrement à partir d'une description en langage naturel
- C) Les rapports copilot-generated sont toujours plus précis
- D) Les rapports copilot-assisted ne peuvent pas inclure de mesures DAX
✅ Révéler la réponse
Correct : B) Copilot-assisted est démarré par un analyste qui utilise Copilot pour l'aide ; copilot-generated est créé entièrement à partir d'une description en langage naturel
En mode copilot-assisted, un analyste pilote le processus et utilise Copilot pour suggérer des visuels, générer du DAX ou créer des résumés narratifs. En mode copilot-generated, un utilisateur métier décrit le rapport souhaité en langage naturel et Copilot le construit de zéro — plus rapide mais avec moins de supervision humaine.
Q2 (Choix multiple) : Pourquoi les rapports générés par Copilot pourraient-ils nécessiter une étape de révision avant distribution aux dirigeants ?
- A) Ils utilisent trop de visuels
- B) Ils ont des scores de précision plus bas en raison de moins de supervision humaine lors de la création
- C) Ils sont générés trop rapidement
- D) Ils ne peuvent pas inclure de mesures DAX
✅ Révéler la réponse
Correct : B) Ils ont des scores de précision plus bas en raison de moins de supervision humaine lors de la création
Les rapports générés par Copilot ont une précision moyenne d'environ 0,85 contre environ 0,96 pour les rapports manuels. Sans qu'un analyste valide les mappages de données, la logique de filtres et les calculs DAX, il y a un risque plus élevé d'erreurs subtiles — en particulier pour les métriques métier complexes.
Q3 (Exécutez le lab) : Combien de rapports ont été créés avec Copilot (assistés ou générés) ?
Exécutez l'analyse de l'étape 3 sur 📥 powerbi_reports.csv et comptez les rapports copilot.
✅ Révéler la réponse
8 rapports
Sur les 10 rapports du jeu de données, 4 sont copilot_assisted (R02, R04, R07, R09) et 4 sont copilot_generated (R03, R05, R08, R10). Seulement 2 sont manual (R01, R06). Total des rapports copilot = 8.
Q4 (Exécutez le lab) : Quel est le temps total économisé sur tous les rapports ?
Exécutez l'analyse de l'étape 4 pour calculer le temps total économisé.
✅ Révéler la réponse
395 minutes
Somme de toutes les valeurs time_saved_min : 0 + 45 + 60 + 30 + 50 + 0 + 55 + 65 + 35 + 55 = 395 minutes (6,6 heures). Les rapports manuels (R01, R06) ont 0 de temps économisé puisqu'ils sont la référence.
Q5 (Exécutez le lab) : Quel est le temps moyen économisé par rapport Copilot ?
Divisez le temps total économisé par copilot par le nombre de rapports copilot.
✅ Révéler la réponse
49,4 minutes
Temps total économisé par les rapports copilot = 45 + 60 + 30 + 50 + 55 + 65 + 35 + 55 = 395 min. Nombre de rapports copilot = 8. Moyenne = 395 ÷ 8 = 49,4 minutes par rapport.
Résumé¶
| Sujet | Ce que vous avez appris |
|---|---|
| Power BI Copilot | Création de rapports, génération DAX et narration de données assistées par IA |
| Méthodes de création | Manuelle, assistée par Copilot (analyste+IA), générée par Copilot (utilisateur métier+IA) |
| Gains de temps | 49,4 min en moyenne par rapport Copilot ; 395 min au total pour le pilote |
| Compromis de qualité | Assisté=0,94 de précision (proche du manuel) ; Généré=0,85 (révision nécessaire) |
| Adoption | 80 % des rapports ont utilisé Copilot — signal d'adoption fort du pilote |
| BI en libre-service | Le mode généré par Copilot permet aux utilisateurs métier de créer leurs propres rapports |
Prochaines étapes¶
- Lab 048 — Tableaux de bord Work IQ Power BI (analytique avancée avec Viva Insights)
- Lab 047 — Analytique d'adoption Work IQ Copilot (mesurer l'utilisation de Copilot dans M365)
- Lab 074 — Foundry Agent Service (déployer des agents IA qui alimentent Power BI)
- Lab 038 — Optimisation des coûts IA (gérer les coûts de Copilot et de l'IA)