Creation d'une colonne qui somme à partir d'autres colonnes
Bonjour à tous,
J'ai actuellement les 4 colonnes suivantes et je veux en créer une cinquième (Breakdowns count) dans laquelle on va faire la somme le nombre d' "Order" (colonne 4) par "Equipment" et par "WEEK" et par "MONTH".
Par exemple, pour le mois 1, semaine 1, equipement numero 1000406533 : nous avons 3 differents order (Un order est creé lorsqu'une panne survient)
| MONTH | WEEK | Equipment | Order | Breakdowns count |
| 1 | 1 | 1000406531 | 910308940 | 1 |
| 1 | 1 | 1000406533 | 910308045 | 3 |
| 1 | 1 | 1000406533 | 910308045 | |
| 1 | 1 | 1000406533 | 910308270 | |
| 1 | 1 | 1000406533 | 910308299 | |
| 1 | 1 | 1000406533 | 910308299 | |
| 1 | 1 | 1000406535 | 910308586 | 1 |
| 1 | 1 | 1000406535 | 910308586 | |
| 1 | 1 | 1000406536 | 910308297 | 1 |
| 1 | 1 | 1000406538 | 910308121 | 2 |
| 1 | 1 | 1000406538 | 910308988 | |
| 1 | 1 | 1000406538 | 910308988 |
Quel serait le code M à rajouter au miens pour creer cette 5eme colonne ?
Mon code :
let
Source = Excel.CurrentWorkbook(){[Name="TableIW47"]}[Content],
#"Erreurs supprimées" = Table.RemoveRowsWithErrors(Source, {"WEEK"}),
#"Valeur remplacée" = Table.ReplaceValue(#"Erreurs supprimées","",null,Replacer.ReplaceValue,{"Equipment"}),
#"Rempli vers le bas" = Table.FillDown(#"Valeur remplacée",{"Equipment"}),
#"Lignes filtrées" = Table.SelectRows(#"Rempli vers le bas", each ([Breakdown and Hot Call] = "X")),
#"Autres colonnes supprimées" = Table.SelectColumns(#"Lignes filtrées",{"Order", "Actual work", "Equipment", "Breakdown and Hot Call", "Breakdown Duration", "WEEK", "MONTH"}),
#"Reordered Columns" = Table.ReorderColumns(#"Autres colonnes supprimées",{"MONTH", "WEEK", "Equipment", "Order", "Actual work", "Breakdown and Hot Call", "Breakdown Duration"}),
#"Sorted Rows" = Table.Sort(#"Reordered Columns",{{"MONTH", Order.Ascending}, {"WEEK", Order.Ascending}, {"Equipment", Order.Ascending}, {"Order", Order.Ascending}})
in
#"Sorted Rows"J'espere avoir été clair et merci pour votre aide !
bonjour
une contribution de façon classique pour les versions anterieures
cordialement
Bonjour les gars, merci de m'avoir lu et merci pour votre aide. Vos 2 solutions fonctionnent parfaitement, je vais utiliser celle de JFL car j'ai besoin de continuer à bosser sur Power Query. J'ai d'ailleurs une autre opération à effectuer :
Je vais ajouter une 6eme colonne à mon tableau (Breakdown duration) pour laquelle j'ai besoin d'une modification. Dans cette colonne, les durées des pannes sont autant repetée que les "Order".
| MONTH | WEEK | Equipment | Order | Breakdowns count | Breakdown duration |
| 1 | 1 | 1000406531 | 910308940 | 1 | 1.5 |
| 1 | 1 | 1000406533 | 910308045 | 3 | 2 |
| 1 | 1 | 1000406533 | 910308045 | 2 | |
| 1 | 1 | 1000406533 | 910308270 | 0.5 | |
| 1 | 1 | 1000406533 | 910308299 | 6 | |
| 1 | 1 | 1000406533 | 910308299 | 6 | |
| 1 | 1 | 1000406535 | 910308586 | 1 | 1.5 |
| 1 | 1 | 1000406535 | 910308586 | 1.5 | |
| 1 | 1 | 1000406536 | 910308297 | 1 | 2 |
| 1 | 1 | 1000406538 | 910308121 | 2 | 1 |
| 1 | 1 | 1000406538 | 910308988 | 3 | |
| 1 | 1 | 1000406538 | 910308988 | 3 |
Cela me pose probleme pour la suite dans mes TCD et je veux que Query ne répète pas cette même durée. Je voudrais un truk du genre :
| MONTH | WEEK | Equipment | Order | Breakdowns count | Breakdown duration |
| 1 | 1 | 1000406531 | 910308940 | 1 | 1.5 |
| 1 | 1 | 1000406533 | 910308045 | 3 | 2 |
| 1 | 1 | 1000406533 | 910308045 | null | |
| 1 | 1 | 1000406533 | 910308270 | 0.5 | |
| 1 | 1 | 1000406533 | 910308299 | 6 | |
| 1 | 1 | 1000406533 | 910308299 | null | |
| 1 | 1 | 1000406535 | 910308586 | 1 | 1.5 |
| 1 | 1 | 1000406535 | 910308586 | null | |
| 1 | 1 | 1000406536 | 910308297 | 1 | 2 |
| 1 | 1 | 1000406538 | 910308121 | 2 | 1 |
| 1 | 1 | 1000406538 | 910308988 | 3 | |
| 1 | 1 | 1000406538 | 910308988 | 3 |
Merci beaucoup beaucoup vous y êtes tellement pour beaucoup dans ma progression !
Aussi voici mon code actuel :
et
Source = Excel.CurrentWorkbook(){[Name="Choix"]}[Content],
#"Rempli vers le bas" = Table.FillDown(Source,{"Column1"}),
#"En-têtes promus" = Table.PromoteHeaders(#"Rempli vers le bas", [PromoteAllScalars=true]),
#"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"LINES", type text}, {"MACHINE", type text}, {"Equipement No", Int64.Type}}),
#"Requêtes fusionnées" = Table.NestedJoin(#"Type modifié", {"Equipement No"}, Data, {"Equipment"}, "Data", JoinKind.Inner),
#"Data développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "Data", {"Order", "Actual work", "Breakdown and Hot Call", "Breakdown Duration", "WEEK", "MONTH"}, {"Order", "Actual work", "Breakdown and Hot Call", "Breakdown Duration", "WEEK", "MONTH"}),
#"Added Conditional Column" = Table.AddColumn(#"Data développé", "Nb of hours/week", each if [Equipement No] >= 1000409774 then 168 else if [Equipement No] >= 1000409754 then "168" else if [Equipement No] >= 1000407443 then 112 else if [Equipement No] >= 1000407440 then 56 else 112, type any),
#"Sorted Rows" = Table.Sort(#"Added Conditional Column",{{"WEEK", Order.Ascending}, {"LINES", Order.Ascending}, {"MACHINE", Order.Ascending}, {"Order", Order.Ascending}}),
#"Grouped Rows" = Table.Combine(Table.Group(#"Sorted Rows", {"MONTH", "WEEK", "Equipement No"}, {{"All", each Table.FromColumns(Table.ToColumns(_) & {{List.Count(List.Distinct(_[Order]))} & List.Repeat({null}, Table.RowCount(_)-1)}, Table.ColumnNames(_) & {"Breakdowns count"})}})[All]),
#"Reordered Columns" = Table.ReorderColumns(#"Grouped Rows",{"MONTH", "WEEK", "LINES", "MACHINE", "Equipement No", "Order", "Breakdowns count", "Actual work", "Breakdown and Hot Call", "Breakdown Duration", "Nb of hours/week"})
in
#"Reordered Columns"Bonjour à tous de nouveau !
Pourquoi ne pas joindre un classeur représentatif ?
Difficile de cerner le lien entre une durée et un nombre d’occurrences.....
Je viens de recevoir de l'aide et on m'a filé ce code qui fonctionne :
let
Source = Excel.CurrentWorkbook(){[Name="Choix"]}[Content],
#"Rempli vers le bas" = Table.FillDown(Source,{"Column1"}),
#"En-têtes promus" = Table.PromoteHeaders(#"Rempli vers le bas", [PromoteAllScalars=true]),
#"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"LINES", type text}, {"MACHINE", type text}, {"Equipement No", Int64.Type}}),
#"Requêtes fusionnées" = Table.NestedJoin(#"Type modifié", {"Equipement No"}, Data, {"Equipment"}, "Data", JoinKind.Inner),
#"Data développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "Data", {"Order", "Actual work", "Breakdown and Hot Call", "Breakdown Duration", "WEEK", "MONTH"}, {"Order", "Actual work", "Breakdown and Hot Call", "Breakdown Duration", "WEEK", "MONTH"}),
#"Added Conditional Column" = Table.AddColumn(#"Data développé", "Nb of hours/week", each if [Equipement No] >= 1000409774 then 168 else if [Equipement No] >= 1000409754 then "168" else if [Equipement No] >= 1000407443 then 112 else if [Equipement No] >= 1000407440 then 56 else 112, type any),
#"Sorted Rows" = Table.Sort(#"Added Conditional Column",{{"WEEK", Order.Ascending}, {"LINES", Order.Ascending}, {"MACHINE", Order.Ascending}, {"Order", Order.Ascending}}),
#"Grouped Rows" = Table.Combine(Table.Group(#"Sorted Rows", {"MONTH", "WEEK", "Equipement No"}, {{"All", each Table.FromColumns(Table.ToColumns(_) & {{List.Count(List.Distinct(_[Order]))} & List.Repeat({null}, Table.RowCount(_)-1)}, Table.ColumnNames(_) & {"Breakdowns count"})}})[All]),
#"Reordered Columns" = Table.ReorderColumns(#"Grouped Rows",{"MONTH", "WEEK", "LINES", "MACHINE", "Equipement No", "Order", "Breakdowns count", "Actual work", "Breakdown and Hot Call", "Breakdown Duration", "Nb of hours/week"}),
#"Grouped Rows1" = Table.Combine(Table.Group(#"Reordered Columns", {"MONTH", "WEEK", "Equipement No", "Order"}, {{"All", each
let
cn = "Breakdown Duration",
a = Table.RemoveColumns(_, cn)
in
Table.FromColumns(Table.ToColumns(a) & {{Table.Column(_,cn){0}} & List.Repeat({null}, Table.RowCount(a)-1) }, Table.ColumnNames(a) & {cn})}})[All]),
#"Reordered Columns1" = Table.ReorderColumns(#"Grouped Rows1",{"MONTH", "WEEK", "LINES", "MACHINE", "Equipement No", "Order", "Breakdowns count", "Breakdown Duration", "Actual work", "Breakdown and Hot Call", "Nb of hours/week"})
in
#"Reordered Columns1"Or maintenant j'au un autre petit souci :
Je passe donc par Power Query puis ensuite via TCD pour au final envoyer dans un tableau classique les bonnes données. C'est aussi dans ce tableau classique que je fais mes 2 derniers calculs (colonne MTTR et MTBF).
Por ce qui est du calcul du MTTR :
MTTR = Temps d'arret total / nombre d'arrets
soit avec mes données :
MTTR = Max of Breakdown Duration (in hours) / Breakdowns count
Je n'arrive pas à recuperer dans mon tableau classique la valeur de "Max of Breakdown Duration (in hours)". En effet, au lieu de me donner la formule "Getpivotdata..." Excel me donne la cellule dans laquelle se trouve Max of Breakdown Duration (in hours).
Voici le fichier : https://file.io/sGBaGLykuPTT
Merci de m'avoir lu et merci pour votre futur aide !