cumul journalier avec un critere

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 8 mois et 1 semaine.
8 sujets de 1 à 8 (sur un total de 8)
  • Auteur
    Articles
  • #130692
    hboisteau
    Participant

    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.
    #130710
    Daniel
    Participant

    Bonjour 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
    SuppressionIndexCol

    Cordialement
    Daniel

    #130754
    hboisteau
    Participant

    Bonjour 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

    #130779
    Daniel
    Participant

    Bonjour 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
    Daniel

    #130793
    hboisteau
    Participant

    Bonjour 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″

    #130816
    Daniel
    Participant

    Bonjour 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
    Daniel

    #130980
    hboisteau
    Participant

    Bonjour 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

    #130983
    Daniel
    Participant

    Bonjour 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

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