Accueil – Le CFO masqué › Forums › Power Query › cumul journalier avec un critere
- Ce sujet contient 7 réponses, 2 participants et a été mis à jour pour la dernière fois par Daniel, le il y a 1 année et 1 mois.
-
AuteurArticles
-
4 août 2023 à 5 h 56 min #130692hboisteauParticipant
Bonjour,
je suis a la recherche d’une solution pour faire un cumul journalier mais avec un critère.je m’explique j’ai des résultats journalièrement pour la machine a, b et c et je souhaite faire le cumul sur le jour suivant avec le critère a, b et c.
je vous joint un petit fichier Excel pour une meilleure compréhension
Merci
HB
Attachments:
You must be logged in to view attached files.4 août 2023 à 12 h 07 min #130710DanielParticipantBonjour h.boisteau, le Forum,
Voici une solution à la question posée, peut-être certaines étapes notamment l’avant dernière peut être supprimée (TriSurIndex_2)
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“date”, type datetime}, {“machine”, type text}, {“données”, Int64.Type}}),
AjoutIndexCol = Table.AddIndexColumn(ModificationTypeDonnees, “Index”, 1, 1, Int64.Type),
TriSurIndex_1 = Table.Sort(AjoutIndexCol,{{“Index”, Order.Ascending}}),
RunningTotalMachine = Table.AddColumn(
TriSurIndex_1,
“Machine Running Total”,
(OutTable) =>
List.Sum(
Table.SelectRows(
TriSurIndex_1,
(InTable) => InTable[Index] <= OutTable[Index]
and
InTable[machine] = OutTable[machine])[données]
)
),
TriSurIndex_2 = Table.Sort(RunningTotalMachine,{{“Index”, Order.Ascending}}),
SuppressionIndexCol = Table.RemoveColumns(TriSurIndex_2,{“Index”})
in
SuppressionIndexColCordialement
Daniel8 août 2023 à 4 h 21 min #130754hboisteauParticipantBonjour Daniel,
Merci pour cette reponse.
J’aessaye maintenant de la mettre en pratique avec mes données reelles et je suis confronté a une chose. Aucune erreur dans l’ajout de la colonne conditionnelle avec la formule
= (OutTable) =>
List.Sum(
Table.SelectRows(
TriSurIndex_1,
(InTable) => InTable[Index] <= OutTable[Index]
and
InTable[machine] = OutTable[machine])[données]
)
),mais a l’affichage je n’ai que Function dans ma cellule et pas de chiffres.
deuxiemement peut tu m’expliquer les deux dernieres lignes c’est à dire :
TriSurIndex_2 = Table.Sort(RunningTotalMachine,{{“Index”, Order.Ascending}}),
SuppressionIndexCol = Table.RemoveColumns(TriSurIndex_2,{“Index”})comment fait-tu le deuxieme tri ?
merci encore par avance
HB
8 août 2023 à 13 h 58 min #130779DanielParticipantBonjour h.boisteau, le Forum,
Donc si j’ai bien compris, tu n’as pris qu’une partie de ce que je t’ai envoyé. Il est normal que tu ais une fonction et pas le résultat car pour obtenir celui-ci il faut qu’il soit inclus dans la fonction Powerquery Table.addcolumn comme suit :
Table.AddColumn(
TriSurIndex_1,
“Machine Running Total”,
(OutTable) =>
List.Sum(
Table.SelectRows(
TriSurIndex_1,
(InTable) => InTable[Index] <= OutTable[Index]
and
InTable[machine] = OutTable[machine])[données]
)
)
Néanmoins, il est aussi impératif d’avoir créer au préalable la colonne Index commençant à 1 et éventuellement de faire un tri dessus (à vérifier)
Serait-il possible que tu poste le code de ta requête ?
Cordialement
Daniel9 août 2023 à 3 h 57 min #130793hboisteauParticipantBonjour Daniel et le forum,
merci pour cette réponse, je te joint ma requête ci-dessous:
let
Source = Excel.Workbook(File.Contents(“C:\Users\hbois\OneDrive\2020\Bureau\dossier de test Aout 23\5-DataBase Resultat Mas.xlsx”), null, true),
TBLResultatMas_Table = Source{[Item=”TBLResultatMas”,Kind=”Table”]}[Data],
#”Type modifié” = Table.TransformColumnTypes(TBLResultatMas_Table,{{“Date Exploit.”, type date}, {“Salle”, type text}, {“Machine”, Int64.Type}, {“Socle”, Int64.Type}, {“Déno.”, type text}, {“Marque”, type text}, {“Version”, type text}, {“Type”, type text}, {“Programme”, type text}, {“%”, type number}, {“Prog.”, Int64.Type}, {“Progressif”, type text}, {“Date config”, type date}, {“Dt. fin cfg”, type date}, {“Modèle”, type text}, {“Mise max#(lf)(montant)”, Int64.Type}, {“Nb#(lf)lignes”, Int64.Type}, {“Nb jours”, Int64.Type}, {“Inc Entrées”, Int64.Type}, {“Inc Sorties”, Int64.Type}, {“Inc Jackpots”, Int64.Type}, {“Inc CC”, Int64.Type}, {“Inc Billets”, Int64.Type}, {“Inc Entrées AFT Promos non restreints”, Int64.Type}, {“Inc Sorties AFT#(lf)Promos Non restreints”, Int64.Type}, {“Nb. Jeux “, Int64.Type}, {“Net Win”, Int64.Type}, {“Réel”, type number}, {“Théo”, type number}, {“Taux #(lf)occupation”, type number}}),
#”Fractionner la colonne par délimiteur” = Table.SplitColumn(#”Type modifié”, “Progressif”, Splitter.SplitTextByDelimiter(“,”, QuoteStyle.Csv), {“Progressif.1”, “Progressif.2”, “Progressif.3”, “Progressif.4″}),
#”Type modifié1″ = Table.TransformColumnTypes(#”Fractionner la colonne par délimiteur”,{{“Progressif.1”, type text}, {“Progressif.2”, type text}, {“Progressif.3”, type text}, {“Progressif.4″, type text}}),
#”Colonnes supprimées” = Table.RemoveColumns(#”Type modifié1″,{“Salle”, “Machine”, “Socle”, “Déno.”, “Marque”, “Version”, “Type”, “Programme”, “%”, “Prog.”, “Progressif.3”, “Progressif.4”, “Date config”, “Dt. fin cfg”, “Modèle”, “Mise max#(lf)(montant)”, “Nb#(lf)lignes”, “Nb jours”, “Inc Sorties”, “Inc Jackpots”, “Inc CC”, “Inc Billets”, “Inc Entrées AFT Promos non restreints”, “Inc Sorties AFT#(lf)Promos Non restreints”, “Nb. Jeux “, “Net Win”, “Réel”, “Théo”, “Taux #(lf)occupation”}),
#”Lignes filtrées” = Table.SelectRows(#”Colonnes supprimées”, each ([Progressif.1] <> null)),
#”Valeur remplacée” = Table.ReplaceValue(#”Lignes filtrées”,null,”0″,Replacer.ReplaceValue,{“Progressif.2″}),
#”Tableau croisé dynamique des colonnes supprimé” = Table.UnpivotOtherColumns(#”Valeur remplacée”, {“Date Exploit.”, “Inc Entrées”}, “Attribut”, “Valeur”),
#”Lignes triées” = Table.Sort(#”Tableau croisé dynamique des colonnes supprimé”,{{“Date Exploit.”, Order.Ascending}}),
#”Lignes groupées” = Table.Group(#”Lignes triées”, {“Date Exploit.”, “Valeur”}, {{“Coin In”, each List.Sum([Inc Entrées]), type nullable number}}),
#”Index ajouté” = Table.AddIndexColumn(#”Lignes groupées”, “Index”, 1, 1, Int64.Type),
TriSurIndex_1 = Table.Sort(#”Index ajouté”,{{“Index”, Order.Ascending}}),
#”Personnalisée ajoutée” = Table.AddColumn(TriSurIndex_1, “Cumul Coin In”, each
(OutTable) =>
List.Sum(
Table.SelectRows(
TriSurIndex_1,
(InTable) => InTable[Index] <= OutTable[Index]
and
InTable[Valeur] = OutTable[Valeur])[Coin In]
)
),
#”Lignes filtrées1″ = Table.SelectRows(#”Personnalisée ajoutée”, each ([Valeur] <> “0”))
in
#”Lignes filtrées1″9 août 2023 à 13 h 56 min #130816DanielParticipantBonjour h.boisteau, le Forum,
Alors en fonction de ta requête et des données s’y afférant, pour régler le problème il suffit de supprimer (Output) => de la ligne
#”Personnalisée ajoutée” = Table.AddColumn(TriSurIndex_1, “Cumul Coin In”, each
(OutTable) =>
List.Sum(
Table.SelectRows(
TriSurIndex_1,
(InTable) => InTable[Index] <= OutTable[Index]
and
InTable[Valeur] = OutTable[Valeur])[Coin In]
)
)
sans oublier les autres mentions Output ( OutTable[Index] devient [Index] et OutTable[Valeur] devient [Valeur]) et ce devrait être bon.
Désolé du temps de réponse.
Cordialement
Daniel11 août 2023 à 14 h 46 min #130980hboisteauParticipantBonjour Daniel et le Forum,
Merci Daniel pour ta réponse mais malgré mon obstination je n’arrive pas a générer le résultat, cela tourne en boucle et ne s’arrête pas!
A vrai dire je n’ai pas compris tes consignes et je suis un peu perdu dans la requête.
HB
12 août 2023 à 10 h 53 min #130983DanielParticipantBonjour h.boisteau, le Forum,
Je reprends ta requête en la modifiant comme cela, normalement cela devrait fonctionner
Début de la Requête
let
Source = Excel.Workbook(File.Contents(“C:\Users\hbois\OneDrive\2020\Bureau\dossier de test Aout 23\5-DataBase Resultat Mas.xlsx”), null, true),
TBLResultatMas_Table = Source{[Item=”TBLResultatMas”,Kind=”Table”]}[Data],
#”Type modifié” = Table.TransformColumnTypes(TBLResultatMas_Table,{{“Date Exploit.”, type date}, {“Salle”, type text}, {“Machine”, Int64.Type}, {“Socle”, Int64.Type}, {“Déno.”, type text}, {“Marque”, type text}, {“Version”, type text}, {“Type”, type text}, {“Programme”, type text}, {“%”, type number}, {“Prog.”, Int64.Type}, {“Progressif”, type text}, {“Date config”, type date}, {“Dt. fin cfg”, type date}, {“Modèle”, type text}, {“Mise max#(lf)(montant)”, Int64.Type}, {“Nb#(lf)lignes”, Int64.Type}, {“Nb jours”, Int64.Type}, {“Inc Entrées”, Int64.Type}, {“Inc Sorties”, Int64.Type}, {“Inc Jackpots”, Int64.Type}, {“Inc CC”, Int64.Type}, {“Inc Billets”, Int64.Type}, {“Inc Entrées AFT Promos non restreints”, Int64.Type}, {“Inc Sorties AFT#(lf)Promos Non restreints”, Int64.Type}, {“Nb. Jeux “, Int64.Type}, {“Net Win”, Int64.Type}, {“Réel”, type number}, {“Théo”, type number}, {“Taux #(lf)occupation”, type number}}),
#”Fractionner la colonne par délimiteur” = Table.SplitColumn(#”Type modifié”, “Progressif”, Splitter.SplitTextByDelimiter(“,”, QuoteStyle.Csv), {“Progressif.1”, “Progressif.2”, “Progressif.3”, “Progressif.4″}),
#”Type modifié1″ = Table.TransformColumnTypes(#”Fractionner la colonne par délimiteur”,{{“Progressif.1”, type text}, {“Progressif.2”, type text}, {“Progressif.3”, type text}, {“Progressif.4″, type text}}),
#”Colonnes supprimées” = Table.RemoveColumns(#”Type modifié1″,{“Salle”, “Machine”, “Socle”, “Déno.”, “Marque”, “Version”, “Type”, “Programme”, “%”, “Prog.”, “Progressif.3”, “Progressif.4”, “Date config”, “Dt. fin cfg”, “Modèle”, “Mise max#(lf)(montant)”, “Nb#(lf)lignes”, “Nb jours”, “Inc Sorties”, “Inc Jackpots”, “Inc CC”, “Inc Billets”, “Inc Entrées AFT Promos non restreints”, “Inc Sorties AFT#(lf)Promos Non restreints”, “Nb. Jeux “, “Net Win”, “Réel”, “Théo”, “Taux #(lf)occupation”}),
#”Lignes filtrées” = Table.SelectRows(#”Colonnes supprimées”, each ([Progressif.1] <> null)),
#”Valeur remplacée” = Table.ReplaceValue(#”Lignes filtrées”,null,”0″,Replacer.ReplaceValue,{“Progressif.2″}),
#”Tableau croisé dynamique des colonnes supprimé” = Table.UnpivotOtherColumns(#”Valeur remplacée”, {“Date Exploit.”, “Inc Entrées”}, “Attribut”, “Valeur”),
#”Lignes triées” = Table.Sort(#”Tableau croisé dynamique des colonnes supprimé”,{{“Date Exploit.”, Order.Ascending}}),
#”Lignes groupées” = Table.Group(#”Lignes triées”, {“Date Exploit.”, “Valeur”}, {{“Coin In”, each List.Sum([Inc Entrées]), type nullable number}}),
#”Index ajouté” = Table.AddIndexColumn(#”Lignes groupées”, “Index”, 1, 1, Int64.Type),
TriSurIndex_1 = Table.Sort(#”Index ajouté”,{{“Index”, Order.Ascending}}),
#”Personnalisée ajoutée” = Table.AddColumn(TriSurIndex_1, “Cumul Coin In”, each
List.Sum(
Table.SelectRows(
TriSurIndex_1,
(InTable) => InTable[Index] <= [Index]
and
InTable[Valeur] = [Valeur])[Coin In]
)
),
#”Lignes filtrées1″ = Table.SelectRows(#”Personnalisée ajoutée”, each ([Valeur] <> “0”))
in
#”Lignes filtrées1″Fin de la requête
En espérant que cela te permettra de résoudre le problème rencontré
Cordialement
Daniel -
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.