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 1 année et 6 mois.
-
AuteurMessages
-
28 juillet 2023 à 12 h 03 min #130619
y.monte
ParticipantBonjour à 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 BLNOL’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 BLNOSous 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.28 juillet 2023 à 12 h 48 min #130623Daniel
ParticipantBonjour 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’exempleEn 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’exempleEn espérant que cela t’aidera à résoudre le problème rencontré, d’autres solutions sont certainement possibles.
Cordialement
Daniel2 août 2023 à 12 h 00 min #130668y.monte
ParticipantBonjour Daniel,
Merci pour cette solution qui fonctionne parfaitement!
A bientot pour une nouvelle question
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.