Forum Discussion

tarocha's avatar
tarocha
Icon for Helper II rankHelper II
6 years ago
Solved

Filtrar con tres condiciones

Hola, ¿puedes ayudarme?


Tengo una columna calculada para filtrar a los estudiantes que no han tomado ninguna clase u otra.

Me gustaría incluir una condición más para buscar a aquellos que no tomaron 3 clases ¿podría ayudarme? No puedo añadir otra condición.


Me gustaría filtrar, por ejemplo, a los alumnos que no hicieron ni la clase 1 ni la clase 2 ni la clase 3.

Este es el pbix que estoy usando como ejemplo
https://drive.google.com/file/d/16PN12shTogdJJ9b1w7v75E6cZOn4RNBV/view?usp=sharing

Estoy usando esta fórmula.

Column = 



if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 1" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&'Table'[CLASS]="CLASS 2"),'Table'[DONE])="NOT","Not for class1&2",if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 2" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&'Table'[CLASS]="CLASS 3"),'Table'[DONE])="NOT","Not for class2&3",""))


apagar.JPG

Muchas gracias por la ayuda.



  • Estaba usando el filtro equivocado para la tercera condición, en lugar de usar el valor de la palabra . estaba usando &&.
    Ahora trabajando.

    Este es el código

    Column = 
    
    if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 1" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&('Table'[CLASS]="CLASS 2"||'Table'[CLASS]="CLASS 3")),'Table'[DONE])="NOT","Not for class1&2&3",
    
    if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 1" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&'Table'[CLASS]="CLASS 2"),'Table'[DONE])="NOT","Not for class1&2",
    
    
    if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 2" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&'Table'[CLASS]="CLASS 3"),'Table'[DONE])="NOT","Not for class2&3",
    
    
    "")))

5 Replies

  • FrankAT's avatar
    FrankAT
    Icon for Community Champion rankCommunity Champion

    Hola @tarocha

    puedes hacerlo así:

    03-10-_2020_23-39-40.png

    Measure = 
    VAR _Table =
        FILTER(
            'Table',
            'Table'[DONE] = "NOT" && 
            'Table'[CLASS] = "CLASS 1" || 
            'Table'[CLASS] = "CLASS 2" || 
            'Table'[CLASS] = "CLASS 3" 
        )
    VAR _Count = COUNTX(_Table,'Table'[NAME])    
    RETURN
        IF(_Count = 3 , "Not in Class 1, 2 , 3", BLANK())ass 1, 2 , 3", BLANK())

    Con saludos amables desde la ciudad donde la leyenda del 'Pied Piper de Hamelin' está en casa
    FrankAT (Orgulloso de ser un Datanaut)

    • tarocha's avatar
      tarocha
      Icon for Helper II rankHelper II

      Hola, @FrankAT

      Necesito que sea una columna calculada para que la uses como segmentadora.
      Pude hacer dos condiciones con el código dax a continuación, pero estoy teniendo problemas para incluir una condición más para otra clase.

      Column = 
      if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 1" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&'Table'[CLASS]="CLASS 2"),'Table'[DONE])="NOT","Not for class1&2",if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 2" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&'Table'[CLASS]="CLASS 3"),'Table'[DONE])="NOT","Not for class2&3",""))

  • Esto se puede simplificar un poco así:

    Column = 
    var n = 'Table'[NAME]
    var v = CALCULATETABLE(filter(all('Table'),'Table'[NAME]=n && 'Table'[DONE]="NOT"))
    return CONCATENATEX(v,[CLASS],",")

  • Estaba usando el filtro equivocado para la tercera condición, en lugar de usar el valor de la palabra . estaba usando &&.
    Ahora trabajando.

    Este es el código

    Column = 
    
    if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 1" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&('Table'[CLASS]="CLASS 2"||'Table'[CLASS]="CLASS 3")),'Table'[DONE])="NOT","Not for class1&2&3",
    
    if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 1" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&'Table'[CLASS]="CLASS 2"),'Table'[DONE])="NOT","Not for class1&2",
    
    
    if('Table'[DONE]="NOT"&&'Table'[CLASS]="CLASS 2" && MAXX(FILTER('Table','Table'[NAME]=EARLIER('Table'[NAME])&&'Table'[CLASS]="CLASS 3"),'Table'[DONE])="NOT","Not for class2&3",
    
    
    "")))
    • Anonymous's avatar
      Anonymous
      Not applicable

      Hola @tarocha ,

      Gracias por compartir los códigos. Si el problema se ha resuelto, ¿podrías marcar tu publicación como Respondida? Ayudará a los demás en la comunidad a encontrar la solución fácilmente si se enfrentan al mismo problema con usted. Gracias.

      Saludos

      Rena