Power Query – Transposition/pivotage de données

  • Power Query – Transposition/pivotage de données

    Posté par Johan sur 12 décembre 2024 à 11h58

    Bonjour,

    Je bloque sur un problème de transposition ou de pivotage des données dans Power Query. J’ai un fichier résultat issu d’une requête :

    Je souhaite pourvoir réorganiser mes données afin de pourvoir créer une vignette sous la forme suivante :

    Pour le moment, je n’arrive pas au but recherché, je me retrouve avec des données brutes (entières) et des données pourcentage dans la même colonne. Quelqu’un saurait – il m’aiguiller sur la façon de résoudre mon problème.

    Je vous en remercie vivement par avance,

    Cordialement,

    Johan

    Jonathan a répondu Il y a 1 mois, 1 semaine 2 Membres · 4 Réponses
  • 4 Réponses
  • Johan

    Membre
    12 décembre 2024 à 12h04

    A toute fin utile, j’ai déposé mon fichier de données (Donnees_Affaires_MEDIALOG.xlsx) dans la partie document du forum.

  • Jonathan

    Membre
    12 décembre 2024 à 12h18

    Bonjour Johan,

    Voici un code qui devrait fonctionner.

    let
    // Chargement du fichier Excel contenant les données
    Source = Excel.Workbook(File.Contents("C:\Users\Admin\Downloads\Donnees_Affaires_MEDIALOG.xlsx"), null, true),

    // Sélection de l'onglet "Délai de traitement"
    Delay_Treatment_Sheet = Source{[Item="Délai de traitement",Kind="Sheet"]}[Data],

    // Transposition des colonnes en lignes pour inverser la structure de la table
    Transposed_Table = Table.Transpose(Delay_Treatment_Sheet),

    // Remplissage des valeurs manquantes dans la colonne "Column2" en se basant sur les lignes précédentes
    Filled_Down = Table.FillDown(Transposed_Table, {"Column2"}),

    // Suppression des colonnes inutiles pour l'analyse
    Removed_Columns = Table.RemoveColumns(Filled_Down, {"Column1", "Column5", "Column6"}),

    // Ajout d'une colonne conditionnelle pour extraire les données associées à "CPAM"
    Added_CPAM_Column = Table.AddColumn(Removed_Columns, "CPAM", each if [Column2] = "CPAM " then [Column4] else null),

    // Remplissage des valeurs de la colonne "CPAM" en se basant sur les lignes précédentes
    Filled_Down_CPAM = Table.FillDown(Added_CPAM_Column, {"CPAM"}),

    // Filtrage des lignes pour conserver uniquement celles avec des valeurs non nulles dans "Column3"
    Filtered_Rows = Table.SelectRows(Filled_Down_CPAM, each ([Column3] <> null)),

    // Création d'une table pivotée à partir des valeurs uniques de la colonne "Column3"
    Pivoted_Table = Table.Pivot(Filtered_Rows, List.Distinct(Filtered_Rows[Column3]), "Column3", "Column4"),

    // Renommage des colonnes pour une meilleure lisibilité
    Renamed_Columns = Table.RenameColumns(Pivoted_Table, {{"Column2", "KPIs"}}),

    // Modification des types de données des colonnes pour garantir la cohérence
    Changed_Types = Table.TransformColumnTypes(Renamed_Columns, {
    {"CPAM", type text},
    {"KPIs", type text},
    {"Nombre Affaires activées ", Int64.Type},
    {"Nombre affaires traitées en moins de 2 jours", Int64.Type},
    {"% affaires traitées en moins de 2 jours", Percentage.Type},
    {"Nombre affaires traitées en moins de 10 jours", Int64.Type},
    {"% affaires traitées en moins de 10 jours", Percentage.Type}
    })
    in
    Changed_Types
  • Johan

    Membre
    12 décembre 2024 à 13h15

    Merci Jonathan. Ca fonctionne parfaitement.

  • Jonathan

    Membre
    12 décembre 2024 à 19h10

    Parfait, bon courage pour la suite de ton projet 👍

Connectez-vous pour répondre.