Girault Conceptions

Power BI — Master 2 PPA Supply Chain

← Retour à la liste des TP
Travail Pratique · Séance S3

🔧 Transformation des données (Power Query)

Nettoyer, typer, dédoublonner et enrichir les données avec Power Query et le langage M.

⏱ Durée 2h30
📊 Niveau Débutant
🔌 Sources CSV livraisons · PostgreSQL commerciaux

🎓 Objectifs pédagogiques

🎯 Contexte

Le fichier livraisons.csv de NordSupply contient des données brutes issues du WMS : dates au format texte, montants avec virgules, doublons, colonnes inutiles. Avant toute analyse, il faut nettoyer et transformer.

Vous découvrirez l'éditeur Power Query et le langage M.

📋 Prérequis

  • TP 02 terminé (sources connectées)
  • Fichier .pbix avec au moins la table livraisons chargée

🛠️ Étape 1 — Ouvrir Power Query

  1. Cliquer sur Accueil > Transformer les données
  2. L'éditeur Power Query s'ouvre dans une nouvelle fenêtre
  3. Identifier les 3 zones :
    • Requêtes (gauche) : liste des tables
    • Aperçu (centre) : prévisualisation
    • Étapes appliquées (droite) : historique des transformations

🛠️ Étape 2 — Promouvoir les en-têtes

Si la 1ère ligne contient les noms de colonnes mais a été détectée comme données :

  1. Onglet Accueil > Utiliser la première ligne comme en-tête

🛠️ Étape 3 — Typer les colonnes

Cliquer sur l'icône à gauche du nom de colonne pour changer le type :

ColonneType à appliquer
date_livraisonDate
montantNombre décimal
quantiteNombre entier
statutTexte

⚠️ Erreur fréquente : si "1 234,56" n'est pas converti en nombre, c'est un problème de locale. Faire un clic-droit sur la colonne → Modifier le type > Avec les paramètres régionaux > Français (France).

🛠️ Étape 4 — Supprimer les doublons

  1. Sélectionner les colonnes clés : numero_livraison
  2. Onglet Accueil > Supprimer les lignes > Supprimer les doublons

💡 Vous devriez perdre quelques lignes (≈ 2-5%).

🛠️ Étape 5 — Ajouter des colonnes calculées

Onglet Ajouter une colonne > Colonne personnalisée :

Colonne 1 : Année

Date.Year([date_livraison])

Colonne 2 : Mois

Date.Month([date_livraison])

Colonne 3 : Nom du mois

Date.ToText([date_livraison], "MMMM")

Colonne 4 : Retard de livraison (en jours)

Duration.Days([date_livraison] - [date_promise])

🛠️ Étape 6 — Fusionner deux requêtes

Objectif : enrichir livraisons avec le nom du commercial.

  1. Accueil > Fusionner des requêtes
  2. Table de gauche : livraisons, colonne id_commercial
  3. Table de droite : commerciaux, colonne id
  4. Type de jointure : Externe gauche
  5. Cliquer sur la flèche de la nouvelle colonne → décocher tout sauf nom_complet

🛠️ Étape 7 — Code M complet (avancé)

Visualisez le code généré : Affichage > Éditeur avancé

let
    Source = Csv.Document(Web.Contents("https://powerbi-cours.app.girault-conceptions.com/downloads/livraisons.csv"),
                          [Delimiter=";", Columns=8, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    Headers = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    Typed = Table.TransformColumnTypes(Headers,{
        {"numero_livraison", type text},
        {"date_livraison", type date},
        {"montant", type number},
        {"quantite", Int64.Type},
        {"statut", type text},
        {"region", type text},
        {"id_commercial", Int64.Type},
        {"date_promise", type date}
    }),
    Dedup = Table.Distinct(Typed, {"numero_livraison"}),
    AjoutAnnee = Table.AddColumn(Dedup, "Annee", each Date.Year([date_livraison]), Int64.Type),
    AjoutMois  = Table.AddColumn(AjoutAnnee, "Mois", each Date.Month([date_livraison]), Int64.Type),
    AjoutRetard = Table.AddColumn(AjoutMois, "Retard_jours",
                                  each Duration.Days([date_livraison] - [date_promise]), Int64.Type)
in
    AjoutRetard

🛠️ Étape 8 — Fermer et appliquer

Accueil > Fermer et appliquer — les transformations sont alors poussées dans le modèle Power BI.

📊 Résultat attendu

  • Table livraisons propre, typée, dédoublonnée
  • 4 colonnes calculées : Année, Mois, Nom du mois, Retard_jours
  • Colonne nom_complet du commercial fusionnée
  • ~ 8 à 10 étapes appliquées visibles dans le volet droit

✅ Critères d'évaluation

  • Types de colonnes corrects (Date, Decimal, Integer)
  • Doublons supprimés
  • 4 colonnes calculées présentes
  • Fusion réussie avec table commerciaux
  • Code M lisible et commenté

📚 Pour aller plus loin

PDF : S3 — Transformation des données Power Query