Extraire une valeur Min avec une condition variable

Accueil – Le CFO masqué Forums Power Query Extraire une valeur Min avec une condition variable

  • Ce sujet contient 2 réponses, 2 participants et a été mis à jour pour la dernière fois par y.monte, le il y a 8 mois et 3 semaines.
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Articles
  • #130619
    y.monte
    Participant

    Bonjour à tous,

    totalement novice sur Power Query, je fais appel à vos bons conseils afin de réaliser une requête.

    J’ai plusieurs milliers de lignes dans un tableau avec des numéros de commande (CDNO) et des numéros de BL (BLNO).
    1 CDNO = plusieurs lignes
    1 CDNO = 1 ou plusieurs BLNO

    L’objectif est d’ajouter une colonne “1er BL” dont la valeur est le premier BL (plus petite valeur) de BLNO associé à CDNO.
    Si 1 CDNO = 1 BLNO alors la colonne ajoutée renvoie la valeur BLNO unique
    si 1 CDNO = plusieurs BLNO alors la colonne ajoutée renvoie la plus faible valeur de ces BLNO

    Sous excel, j’utilise la fonction matricielle suivante : {MIN(SI([CDNO]=[@CDNO];[BLNO])

    En pièce jointe, l’exemple avec en jaune le cas ou une commande a plusieurs BL.

    Merci pour votre aide.

    Attachments:
    You must be logged in to view attached files.
    #130623
    Daniel
    Participant

    Bonjour y.monte, le Forum,

    En partant de ta table contenant tes données, faire une requête permettant de charger les données en Power Query et faire toutes les modifications à faire. Une fois que cela est fait, dupliquer cette requête et regrouper par CDNO avec comme opération Min sur la colonne BLNO, cela donnera pour chaque CDNO le plus petit numéro de BLNO.
    Exemple : tabDataGroupCDNO
    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    #”Type modifié” = Table.TransformColumnTypes(Source,{{“CDNO”, Int64.Type}, {“BLNO”, Int64.Type}, {“1ER BL”, Int64.Type}}),
    #”Colonnes supprimées” = Table.RemoveColumns(#”Type modifié”,{“1ER BL”}),
    #”Lignes groupées” = Table.Group(#”Colonnes supprimées”, {“CDNO”}, {{“BLs”, each List.Min([BLNO]), type nullable number}})
    in
    #”Lignes groupées”
    Fin de l’exemple

    En reprenant la 1ère requête (celle ayant servi de support à la duplication), on va fusionner les deux requêtes en sélectionnant le CDNO. Ensuite il suffit de développer la table ainsi créée en ne gardant que la colonne BLs de la requête tabDataGroupCDNO
    Exemple :
    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    #”Type modifié” = Table.TransformColumnTypes(Source,{{“CDNO”, Int64.Type}, {“BLNO”, Int64.Type}, {“1ER BL”, Int64.Type}}),
    #”Colonnes supprimées” = Table.RemoveColumns(#”Type modifié”,{“1ER BL”}),
    #”Requêtes fusionnées” = Table.NestedJoin(#”Colonnes supprimées”, {“CDNO”}, tabDataGroupCDNO, {“CDNO”}, “tabDataGroupCDNO”, JoinKind.LeftOuter),
    #”tabDataGroupCDNO développé” = Table.ExpandTableColumn(#”Requêtes fusionnées”, “tabDataGroupCDNO”, {“BLs”}, {“BLs”})
    in
    #”tabDataGroupCDNO développé”
    Fin de l’exemple

    En espérant que cela t’aidera à résoudre le problème rencontré, d’autres solutions sont certainement possibles.
    Cordialement
    Daniel

    #130668
    y.monte
    Participant

    Bonjour Daniel,

    Merci pour cette solution qui fonctionne parfaitement!

    A bientot pour une nouvelle question

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.