Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Cómo filtrar una columna con 2 condiciones

Hola

Tengo problemas con el cálculo de la tabla filtrada, mis dos tablas relacionadas Registro y Clase son los siguientes:

Registration

Student_ID

Clase

A

C1

A

C3

B

C1

B

C2

B

C3

C

C1

C

C2

Class

Clase

Escuela

C1

S1

C2

S1

C3

S2

Ahora me gustaría calcular el porcentaje de estudiantes en S1 también matriculado en S2.

Como el ejemplo anterior, la respuesta será del 66,7% (A&B), y la fórmula debe ser:
• de los estudiantes registrados S1 & S2 / á de los estudiantes registrados S1

pero no pude filtrar dos condiciones en la misma columna, lo que significa que no podía agrupar a los estudiantes que se registraron en S1 y S2.

Mi script de dax orginal:

N.o de alumnos registrados S1 & S2
CALCULATE(
DISTINCTCOUNT('Registro'[Student_ID]),
FILTER('Class', AND(RELATED('Class'[School]) á "S1", RELATED('Class'[School]) á "S2"))
)

El resultado anterior debe ser 2, pero resultó ser incorrecto.

Espero que alguien pueda ayudarme con él y Gracias de antemano!

1 ACCEPTED SOLUTION
Mariusz
Community Champion
Community Champion

Hola @leo_chou

Prueba esto.

# of students registered S1 & S2 = 
VAR __s1 = CALCULATETABLE( VALUES( Registration[Student_ID] ), ALL( Class ), 'Class'[School] = "S1" )
VAR __s2 = CALCULATETABLE( VALUES( Registration[Student_ID] ), ALL( Class ), 'Class'[School] = "S2" )
RETURN 
DIVIDE(
   COUNTROWS( INTERSECT( __s1, __s2 ) ),
   COUNTROWS( __s1 )
)

Saludos
Mariusz

Si este post ayuda, entonces considere aceptarlo como la solución.

Por favor, siéntase libre de conectarse conmigo.
Linkedin

View solution in original post

4 REPLIES 4
amitchandak
Super User
Super User

@leo_chou , Unir ambas tablas en la clase un intento

countX(filter(summarize(Registration, Registration[Student_ID] , "_1", calculate(count(Registration[Class]), filter(Class, Class[School]="S1"))
             , "_2", calculate(count(Registration[Class]), filter(Class, Class[School]="S2"))
      ), [_1]>0 && [_2] >0),[Student_ID])
      
Mariusz
Community Champion
Community Champion

Hola @leo_chou

Prueba esto.

# of students registered S1 & S2 = 
VAR __s1 = CALCULATETABLE( VALUES( Registration[Student_ID] ), ALL( Class ), 'Class'[School] = "S1" )
VAR __s2 = CALCULATETABLE( VALUES( Registration[Student_ID] ), ALL( Class ), 'Class'[School] = "S2" )
RETURN 
DIVIDE(
   COUNTROWS( INTERSECT( __s1, __s2 ) ),
   COUNTROWS( __s1 )
)

Saludos
Mariusz

Si este post ayuda, entonces considere aceptarlo como la solución.

Por favor, siéntase libre de conectarse conmigo.
Linkedin

Anonymous
Not applicable

Hola @Mariusz: Realmente muchas gracias. y también tengo una pregunta de bonificación que queremos saber ¿hay alguna manera de que pueda simplemente filtrar a estos estudiantes de la tabla de registro original? Dado que la tabla de registro también incluía una columna de Asunto, necesito saber el número de estudiantes que se inscribió en S1 y S2 inscritos para cada asignatura.

Anonymous
Not applicable

Realmente muchas gracias por su respuesta, realmente funciona aunque no estoy familiarizado con algunos de la función 🙂

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.