Contact: 514-605-7112 / info@lecfomasque.com

Comment faire un cumul conditionnel des données directement dans Power Query ?

Ce sujet a 6 réponses, 3 participants et a été mis à jour par  BagTote, il y a 6 jours et 12 heures.

7 sujets de 1 à 7 (sur un total de 7)
  • Auteur
    Messages
  • #57817

    BagTote
    Participant

    Bonjour à tous,

    J’aimerais savoir si il est possible de faire un cumul « conditionnel » des données directement dans Power Query.

    Exemple de tableau :

    Cf PJ

    La colonne en question : CA cumulé par produit.

    Merci.
    Cordialement.

    • Ce sujet a été modifié le il y a 2 semaines par  BagTote.
    fichiers attachés:
    You must be logged in to view attached files.
    #57820

    BagTote
    Participant

    J’ai trouvé :

    Etape 1 – créer une fonction de filtrage (nommé la fonction « fnFiltreCumul »):
    (TableAFiltrer as table, Annee as number, Mois as number) as table =>
    let
    Resultat = Table.SelectRows(TableAFiltrer, each ([Year] = Annee) and ([Month] <= Mois))
    in
    Resultat

    Etape 2 – Dans la requête, ajouter une colonne personnalisée :
    = fnFiltreCumul(« Etape précédente »,[Year],[Month])

    #57821

    BagTote
    Participant

    Par contre, c’est super lent.

    #57824

    Sophie Marchand
    Admin bbPress

    Bonjour,

    C’est normal que ce soit lent car c’est une fonction itérative (opérée ligne par ligne).

    Si vous créez cette colonne dans Power Query, ce sera lent à la mise à jour du fichier mais par contre, une fois chargée, les visualisations basées sur cette colonne devraient être rapides.

    Vous pourriez aussi créer une mesure en DAX avec une fonctin SUMX. Ce serait plus rapide à la mise à jour du fichier (puisque les mesures se recalculent uniquement lorsqu’elles sont utilisées) mais ça pourrait être plus lent quand l’usager fait une opération sur cette mesure (par exemple, clique sur un filtre qui filtre une visualisation utilisant la mesure).

    Au plaisir,

    Sophie

    #57979

    BagTote
    Participant

    Bonjour Sophie,

    Merci pour le conseil. Je pense que je vais utiliser votre solution.

    Je suis vraiment déçu par power query. Je pensais que c’était puissant.

    Cordialement.

    #57980

    SL
    Participant

    Bonjour

    Il ne faut pas être déçu par Power Query, c’est vraiment super puissant.
    Vous trouverez en exemple une liste de 100 produits avec 10 mois d’historique de CA soit 1000 lignes et en une fraction de seconde vous obtenez le CA cumulé en utilisant des fonctionnalités de bases de Power Query: une fusion, un filtre, un regroupement.

    Je fusionne la table avec elle-même sur le champ [Produit] et je développe les champs [Mois] et [CA] j’ai donc : [Produit], [Mois], [CA], [Mois.1] et [CA.1] avec chaque mois dupliqué soit 10 000 lignes car il y a 100 produits x 10 mois x 10 mois.
    je filtre pour conserver uniquement les [Mois.1] <= [Mois] (votre condition)
    enfin je regroupe sur les champs [Produit], [Mois] et [CA] pour retrouver mes 1000 lignes initiales en sommant le champ [CA.1] pour avoir le CA cumulé

    Je contrôle que j’obtiens bien le même résultat qu’avec une fonction SOMME.SI.ENS.

    Stéphane

    fichiers attachés:
    You must be logged in to view attached files.
    #57982

    BagTote
    Participant

    T’es un génie !!! Fallait y penser.

    Merci beaucoup Stéphane.

7 sujets de 1 à 7 (sur un total de 7)

Vous devez être connecté pour répondre à ce sujet.