Power Query – Transposition/pivotage de données

  • Power Query – Transposition/pivotage de données

    Posté par Johan sur 12 décembre 2024 at 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 4 months, 3 weeks ago 2 Membres · 4 Réponses
  • 4 Réponses
  • Johan

    Member
    12 décembre 2024 at 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

    Member
    12 décembre 2024 at 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

    Member
    12 décembre 2024 at 13h15

    Merci Jonathan. Ca fonctionne parfaitement.

  • Jonathan

    Member
    12 décembre 2024 at 19h10

    Parfait, bon courage pour la suite de ton projet 👍

Connectez-vous pour répondre.