COUNTROWS + OR + AND

Accueil – Le CFO masqué Forums Power BI COUNTROWS + OR + AND

9 sujets de 1 à 9 (sur un total de 9)
  • Auteur
    Articles
  • #60730
    questvba
    Participant

    Bonjour,
    J’ai données qui sont réparties en colonnes. Exemple, une colonne Type, une colonne Statuts…
    Je cherche à compter le nombre de lignes qui peuvent remplir une ou des condition.

    Par exemple : Le nombre de ligne où le Type est ‘Verificatietaken’ et où le Status est différent de ‘TO_HANDLE’ et différent de ‘IN_HANDLING’. Pour ce faire, je suis arrivé au résultat en faisant ceci :

    TOT_V = calculate(COUNTROWS(Cumul);Cumul[Type]=”Verificatietaken”;Cumul[Status]<>”TO_HANDLE”;Cumul[Status]<>”IN_HANDLING”)

    OU

    TOT_VV = calculate(COUNTROWS(Cumul);
    FILTER(cumul; Cumul[Type]=”Verificatietaken”);
    FILTER(cumul;Cumul[Status]<>”TO_HANDLE”);
    FILTER(cumul;Cumul[Status]<>”IN_HANDLING”))

    Donc, on peut arriver au même résultat de manière différente. Il y a donc certainement des astuces.

    Maintenant, je cherche à découvrir par exemple :
    . Le nombre de lignes où le Type est ‘Verificatietaken’ avec le Status ‘TO_HANDLE’ et où le Type est ‘Verificatietaken’ avec le Status est ‘IN_HANDLING’.
    Faut-il simplement passer par une addition ? Ou bien une combinaison de AND et OR ?
    Je suis preneur de toute piste pour résoudre mon petit problème.
    Un grand merci,

    #60747
    questvba
    Participant

    Bête question supplémentaire : je vois que le OR est limité à deux arguments. Vous utilisez quelle astuces lorsque vous avez 3 critères ?

    #60750
    SL
    Participant

    Bonjour
    Je ne peux vous répondre sur votre première question mais pour avoir plus de 2 critères OR il faut utiliser || voir ici : https://docs.microsoft.com/fr-fr/dax/or-function-dax
    Et pour le AND c’est &&
    Stéphane

    #60761
    questvba
    Participant

    Merci pour l’info. maintenant, je dois voir pour adapter ma formule – si c’est possible :

    TOT_V_TO_HANDLE = calculate(COUNTROWS(Cumul);Cumul[Type]="Verificatietaken";Cumul[Status]="TO_HANDLE") + calculate(COUNTROWS(Cumul);Cumul[Type]="Verificatietaken";Cumul[Status]="IN_HANDLING")

    #60763
    Sophie Marchand
    Participant

    Bonjour,

    Je ne suis pas certaine d’avoir bien compris votre question mais je crois que vous cherchez à faire ceci:

    TOT_V_TO_HANDLE = calculate(COUNTROWS(Cumul);Cumul[Type]=”Verificatietaken”;Cumul[Status]=”TO_HANDLE” || Cumul[Status]=”IN_HANDLING”)

    Si ce n’est pas le cas, pourriez-vous fournir un petit exemple avec des données et nous résumer un cas de figure? Merci.

    Au plaisir,

    Sophie

    #60765
    questvba
    Participant

    Bonjour,
    Évidemment, vous avez capté ma demande ( ‘‿’ )

    J’ai donc votre solution :
    test1 = calculate(COUNTROWS(Cumul);Cumul[Type]= "Verificatietaken";Cumul[Status]= "TO_HANDLE" || Cumul[Status]= "IN_HANDLING")

    Et celle-ci :

    test = 
    COUNTROWS(
        FILTER(
            Cumul;
            Cumul[Type]="Verificatietaken"
            &&  Cumul[Status]="TO_HANDLE"
            ||
            Cumul[Type]="Verificatietaken"
            &&  Cumul[Status]="IN_HANDLING"
        )
    )

    Question en plus : les deux solutions me donnent le même résultat (qui est identique à ce que je trouve en Excel). Faut-il préférer l’une ou l’autre solution ? Quel serait le critère qui me ferait choisir l’une ou l’autre ?

    • Cette réponse a été modifiée le il y a 10 mois et 1 semaine par questvba.
    #60767
    Sophie Marchand
    Participant

    Bonjour,

    Dans ce cas-ci, je crois que c’est sans doute assez équivalent… Dans la première formule, on calcule une expression selon certains filtres alors que dans la deuxième on compte le nombre de lignes d’une table dont on a filtré les lignes…

    Sophie

    #60768
    questvba
    Participant

    Un grand merci pour l’explication. Est-ce que cela peut avoir un impact sur un calcul ultérieur qui prendrait ce premier résultat ? Ou sur une visualisation ?

    #60774
    Sophie Marchand
    Participant

    Ça ne devrait pas, non.

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