Support formation Rapports Power BI

Mode développeur (Projet Power BI)

Créer un serveur MCP avec Claude

1- Créer un dossier sur votre poste :

mkdir pbix-mcp-server
cd pbix-mcp-server

2- Y placer ces deux fichiers :

3- Installer les “requis” :

pip install -r requirements.txt

4- Saisir dans Windows + R :

%APPDATA%\Claude\claude_desktop_config.json

5- Dans le fichier JSON, coller

{
  "mcpServers": {
    "pbix-server": {
      "command": "python",
      "args": ["C:\\pbix-mcp-server\\pbix_server.py"]
    }
  }
}

6- Redémarrer Claude

7- Vérifier dans Fichier > Paramètres > Développeur :

image.png

Je mets ici le “Guide” produit par Claude, lors du passage du projet PBIX vers PBIP :

📊 Guide du serveur MCP PBIP

🎯 Qu'est-ce que PBIP ?

PBIP (Power BI Project) est le nouveau format de fichier pour Power BI Desktop qui remplace progressivement PBIX.

Différences PBIX vs PBIP

StructureArchive ZIP binaireDossier avec fichiers JSON/texte
Contrôle de version❌ Difficile (fichier binaire)✅ Facile (Git friendly)
Modification directe❌ Très complexe✅ Simple (édition JSON)
Collaboration❌ Conflits fréquents✅ Fusion Git possible
Lisibilité❌ Format propriétaire✅ JSON lisible

🚀 Avantages du serveur MCP PBIP

  • Modification directe des mesures DAX sans outils externes
  • Lecture simple du modèle de données
  • Import/Export de mesures en JSON
  • Sauvegardes automatiques avant modifications
  • Compatible Git - idéal pour le contrôle de version
  • Pas besoin de Power BI Desktop pour les modifications simples

📋 Structure d'un projet PBIP

MonProjet.pbip/              # Dossier du projet
├── MonProjet.pbip           # Fichier principal (métadonnées)
├── MonProjet.Report/        # Dossier du rapport
│   ├── report.pbir          # Définition du rapport
│   └── definition/          # Visuels et pages
│       ├── pages/
│       └── ...
└── MonProjet.SemanticModel/ # Dossier du modèle sémantique
    ├── definition.pbidataset # 🎯 Modèle de données (Tables, Mesures)
    ├── model.bim            # Modèle Analysis Services
    └── ...

Fichier clé : definition.pbidataset contient toutes les tables, colonnes et mesures DAX en JSON !

🔧 Outils disponibles

Le serveur MCP PBIP offre 12 outils :

📂 Gestion de projet

  1. load_pbip - Charge un projet PBIP
  2. list_pbip_structure - Liste la structure du projet
  3. backup_pbip - Crée une sauvegarde

📊 Lecture du modèle

  1. read_datamodel_definition - Lit le modèle de données
  2. list_tables - Liste toutes les tables
  3. list_dax_measures - Liste les mesures DAX (avec filtre optionnel)
  4. read_report_definition - Lit la définition du rapport

✏️ Modification des mesures DAX

  1. add_dax_measure - Ajoute une nouvelle mesure
  2. update_dax_measure - Modifie une mesure existante
  3. delete_dax_measure - Supprime une mesure

📥📤 Import/Export

  1. export_measures_to_json - Exporte toutes les mesures en JSON
  2. import_measures_from_json - Importe des mesures depuis JSON

💡 Exemples d'utilisation

Charger un projet

load_pbip C:\Projets\MonProjet.pbip

Ou charger le dossier directement :

load_pbip C:\Projets\MonProjet.pbip\

Lister les mesures DAX

list_dax_measures

Filtrer par table :

list_dax_measures table_filter="Ventes"

Ajouter une mesure DAX

add_dax_measure 
  measure_name="Total Ventes"
  dax_expression="SUM(Ventes[Montant])"
  table_name="Mesures"
  description="Somme totale des ventes"
  format_string="#,##0.00 €"
  display_folder="KPI Ventes"

Modifier une mesure

update_dax_measure
  measure_name="Total Ventes"
  table_name="Mesures"
  new_expression="SUMX(Ventes, Ventes[Quantité] * Ventes[PrixUnitaire])"
  new_description="Calcul actualisé du total"

Supprimer une mesure

delete_dax_measure
  measure_name="Mesure Obsolete"
  table_name="Mesures"

Exporter les mesures

export_measures_to_json C:\Projets\mes_mesures.json

Importer des mesures

import_measures_from_json C:\Projets\mes_mesures.json

📝 Format JSON pour l'import/export

{
  "measures": [
    {
      "table": "Mesures",
      "name": "Total Ventes",
      "expression": ["SUM(Ventes[Montant])"],
      "description": "Somme totale des ventes",
      "formatString": "#,##0.00 €",
      "displayFolder": "KPI Ventes"
    },
    {
      "table": "Mesures",
      "name": "Nombre Clients",
      "expression": ["DISTINCTCOUNT(Ventes[ClientID])"],
      "description": "Nombre de clients uniques",
      "formatString": "#,##0",
      "displayFolder": "KPI Clients"
    }
  ]
}

🔄 Workflow recommandé

1. Développement collaboratif avec Git

# Clone du projet
git clone https://github.com/team/powerbi-project.git
cd powerbi-project


# Charger le projet
load_pbip MonProjet.pbip


# Ajouter des mesures
add_dax_measure ...


# Commit et push
git add .
git commit -m "Ajout de nouvelles mesures DAX"
git push

2. Réutilisation de mesures entre projets

# Exporter depuis le projet source
load_pbip ProjetSource.pbip
export_measures_to_json mesures_communes.json


# Importer dans le projet cible
load_pbip ProjetCible.pbip
import_measures_from_json mesures_communes.json

3. Sauvegarde avant modifications

# Charger le projet
load_pbip MonProjet.pbip


# Créer une sauvegarde manuelle
backup_pbip


# Faire des modifications
add_dax_measure ...
update_dax_measure ...


# Une sauvegarde auto est créée avant chaque modification

🎓 Bonnes pratiques

Organisation des mesures

  • ✅ Créer une table dédiée "Mesures" pour toutes les mesures
  • ✅ Utiliser display_folder pour organiser par catégorie
  • ✅ Toujours ajouter une description claire
  • ✅ Définir le format d'affichage approprié

Nommage des mesures

// ✅ BON
Total Ventes
CA par Client
Croissance % YoY


// ❌ MAUVAIS
tv
chiffre_affaires_divise_par_nombre_clients
croissance

Gestion de version

  • ✅ Utiliser Git pour versionner le projet PBIP
  • ✅ Exporter les mesures en JSON pour la documentation
  • ✅ Créer des branches pour tester de nouvelles mesures
  • ✅ Faire des commits atomiques par fonctionnalité

⚠️ Limitations et précautions

Limitations

  • Format PBIP uniquement - Ne fonctionne pas avec PBIX
  • ⚠️ Pas de validation DAX - Le serveur ne vérifie pas la syntaxe
  • ⚠️ Modification manuelle - Power BI doit recharger le fichier
  • ⚠️ Pas de gestion des relations - Seulement les mesures DAX

Précautions

  1. Toujours créer une sauvegarde avant modifications importantes
  2. Tester les mesures dans Power BI après ajout
  3. Fermer Power BI avant de modifier le fichier manuellement
  4. Rouvrir Power BI après les modifications pour recharger

🔧 Configuration du serveur

Installation

pip install mcp pydantic

Configuration Claude Desktop

Windows : %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "pbip-server": {
      "command": "python",
      "args": ["C:\\chemin\\vers\\pbip_server.py"]
    }
  }
}

Mac : ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "pbip-server": {
      "command": "python3",
      "args": ["/chemin/vers/pbip_server.py"]
    }
  }
}

🆚 Comparaison avec PBIX

Lecture structure
Lecture mesures⚠️ Complexe✅ Simple
Ajout mesures❌ Génère script seulement✅ Modification directe
Modification mesures
Suppression mesures
Import/Export
Git friendly
Besoin outils externes✅ Tabular Editor

🎯 Cas d'usage avancés

1. Migration PBIX → PBIP

# 1. Ouvrir le PBIX dans Power BI Desktop
# 2. Fichier > Enregistrer sous > Format PBIP
# 3. Charger le PBIP avec le serveur MCP
load_pbip MonProjet.pbip

2. Templates de mesures

Créer un fichier template_mesures.json :

{
  "measures": [
    {
      "table": "Mesures",
      "name": "Total {METRIC}",
      "expression": ["SUM({TABLE}[{COLUMN}])"],
      "formatString": "#,##0.00 €"
    }
  ]
}

Utiliser pour créer rapidement des mesures similaires.

3. Tests automatisés

# Script de test des mesures
import json


# Exporter les mesures
export_measures_to_json("measures.json")


# Vérifier la syntaxe, conventions de nommage, etc.
with open("measures.json") as f:
    measures = json.load(f)
    
for measure in measures["measures"]:
    # Vérifications...
    assert measure["description"], f"Pas de description: {measure['name']}"

📚 Ressources

🎉 Conclusion

Le serveur MCP PBIP révolutionne la façon de travailler avec Power BI en permettant :

  • ✅ Modifications programmatiques directes
  • ✅ Collaboration facilitée via Git
  • ✅ Automatisation des tâches répétitives
  • ✅ Réutilisation de composants entre projets