Ma Minute M - Modification dynamique des valeurs en erreurs par null List.Accumulate vs List.Zip
par
, 13/04/2025 à 00h49 (780 Affichages)
Objectif
Modifier dynamiquement les valeurs en erreur dans les colonnes passées en paramètre
Source
Fichier Excel DataTest.xlsx
Solution
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 let Source = Excel.Workbook(File.Contents("C:\_Paul\PowerBI\Goodly\DataTest.xlsx"), null, true), Data_Table = Source{[Item="Data",Kind="Table"]}[Data], #"Changed Type" = Table.TransformColumnTypes(Data_Table,{{"Id", type text}, {"Col1", type text}, {"Col2", type any}, {"Col3", type any}, {"Valeur", type text}, {"Commentaire", type text}}), #"Remove list col" = let listCol = Table.ColumnNames( #"Changed Type"), tblColName = Table.FromList(listCol,null), tblColNameSelection = Table.SelectRows(tblColName, each [Column1] = "Id" or Text.StartsWith([Column1], "Col")), lstColNameSelection = tblColNameSelection[Column1], tblFinal = Table.SelectColumns(#"Changed Type",lstColNameSelection) in #"tblFinal", #"Remove Error" = let listCol = Table.ColumnNames( #"Remove list col") //,tblRemoveErr = List.Accumulate(listCol, #"Remove list col", (anyOutFirst, anyListCurr) => Table.ReplaceErrorValues (anyOutFirst, {{anyListCurr, null}})) ,tblRemoveErr = Table.ReplaceErrorValues(#"Remove list col",List.Zip({listCol,{null}})) in tblRemoveErr in #"Remove Error"
Analyse
- #"Remove Error" = // Objet Conteneur du résultat du traitement de l'étape qui donne son libellé à l'étape
- let // Obligatoire si traitement sur plusieurs commandes
- listCol = Table.ColumnNames( #"Remove list col") // Création d'un objet liste avec les nom de colonne de la Table source #"Remove list col"
- /* ------------------------------------------------------------------------------------------
Choisir une des 2 solutions ci-dessous
Solution 1 => List.Accumulate
Solution 2 => List.Zip- --------------------------------------------------------------------------------------------- */
- ,tblRemoveErr = List.Accumulate(listCol, #"Remove list col", (anyOutFirst, anyListCurr) => Table.ReplaceErrorValues (anyOutFirst, {{anyListCurr, null}})) // Solution avec List.Accumulate
- ,tblRemoveErr = Table.ReplaceErrorValues(#"Remove list col",List.Zip({listCol,{null}})) // Solution avec List.Zip
ASTUCE : List.Zip créée une liste composée de sous listes correspondant à la concaténation du tuple d'items de même indice dans les listes passées en paramètres
ExempleList.Zip( {1,2}, {"a", "b"}) => {{1, "a"}, {2,"b"}}- in tblRemoveErr // Obligatoire avec Let
- in #"Remove Error" // Pour affichage du traitement
Remerciements
- mapeh : Membre de la communauté Developpez
C'est maintenant Votre Minute M