Forum Discussion
Comparar filas
Hola, tengo una tabla (Tabla) que contiene datos de los estudiantes, con calificaciones que lograron en cada período académico. He creado una matriz (Matrix) que utiliza los datos de La tabla y las medidas que identifica el progreso realizado desde la línea de base hasta el término seleccionado. Necesito encontrar una manera de contar el número de estudiantes que han hecho progresos positivos desde la línea de base para seleccionar el término.
Así que person1 ha progresado de la línea de base a la aut por +1, lo que significa que person1 ha hecho progresos positivos y, por lo tanto, contaría para el número de estudiantes que progresaron de la línea de base a la aut. Sin embargo, desde la línea de base hasta la spr person1 hizo un progreso -1, lo que significa que person1 no contará para el total de la línea de base a spr. Tendré tres totales: base a aut, base a spr y base a suma.
Mesa:
| Id | Nombre | Término | Data_Drop_Order | Base | Aut | Spr | Suma |
| 1234 | person1 | Suma | 4 | 0 | 0 | 0 | 5 |
| 1234 | person1 | Spr | 3 | 0 | 0 | 3 | 0 |
| 1234 | person1 | Aut | 2 | 0 | 5 | 0 | 0 |
| 1235 | person1 | Base | 1 | 4 | 0 | 0 | 0 |
Matriz:
| Nombre | Base | Aut | Spr | Suma | ProgBaseAut | ProgBaseSpr | ProgBaseSum |
| person1 | 4 | 5 | 3 | 5 | 1 | -1 | 1 |
Hola @ckausihan_12 ,
Podemos usar los siguientes pasos para satisfacer sus necesidades.
1. Cree tres medidas para calcular la diferencia.
ProgBaseAut 2 = CALCULATE(SUM('Table (2)'[Aut]),ALLEXCEPT('Table (2)','Table (2)'[Name])) - CALCULATE(SUM('Table (2)'[Baseline]),ALLEXCEPT('Table (2)','Table (2)'[Name])) ProgBaseSpr 2 = CALCULATE(SUM('Table (2)'[Spr]),ALLEXCEPT('Table (2)','Table (2)'[Name])) - CALCULATE(SUM('Table (2)'[Baseline]),ALLEXCEPT('Table (2)','Table (2)'[Name])) ProgBaseSum 2 = CALCULATE(SUM('Table (2)'[Sum]),ALLEXCEPT('Table (2)','Table (2)'[Name])) - CALCULATE(SUM('Table (2)'[Baseline]),ALLEXCEPT('Table (2)','Table (2)'[Name]))2. Luego podemos crear tres medidas para determinar si las tres primeras medidas son mayores que 0.
BAut 2 = IF([ProgBaseAut 2]>0,1,0) BSpr 2 = IF([ProgBaseSpr 2]>0,1,0) BSum 2 = IF([ProgBaseSum 2]>0,1,0)3. Por fin podemos crear una medida para calcular el recuento de personas que cumplen las condiciones.
count Person 2 = CALCULATE(DISTINCTCOUNT('Table (2)'[Name]),FILTER('Table (2)',[BAut 2]=1 && [BSpr 2]=1 && [BSum 2]=1))El resultado como este,
BTW, pbix como adjunto.
Saludos
Equipo de apoyo a la comunidad _ zhenbw
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
6 Replies
- v-zhenbw-msft
Community Support
Hola @ckausihan_12 ,
Tenemos algunos confundidos.
En la tabla de matriz, la línea base de la persona1 es 4, Aut es 5, Spr es 3. Pero en la tabla person4 la línea base es 4, Aut de person3 es 5. Y no imaginamos cuál es tu deseo resultado.
Así que adivinamos una solución y puedes referirte.
1. Cree tres medidas para calcular el [ProgBaseAut], [ProgBaseSpr], [ProgBaseSum].
ProgBaseAut = CALCULATE(COUNT('Table'[Name]),FILTER('Table','Table'[Aut]>'Table'[Baseline])) ProgBaseSpr = CALCULATE(COUNT('Table'[Name]),FILTER('Table','Table'[Spr]>'Table'[Baseline])) ProgBaseSum = CALCULATE(COUNT('Table'[Name]),FILTER('Table','Table'[Sum]>'Table'[Baseline]))2. Luego podemos crear una nueva tabla usando Introducir fecha, y crear una medida para resumir las tres medidas.
Total = SUMX( VALUES('Table (2)'[Row]), SWITCH( 'Table (2)'[Row], "ProgBaseAut",[ProgBaseAut], "ProgBaseSpr",[ProgBaseSpr], "ProgBaseSum",[ProgBaseSum]))Si no cumple con su requisito, ¿podría mostrar el resultado exacto esperado basado en la tabla que ha compartido?
BTW, pbix como adjunto.
Saludos
Equipo de Apoyo comunitario _ zhenbw
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
- ckausihan_12
Helper I
Hola @v-zhenbw-msft ,
Hice algunos cambios para aclarar cualquier confusión.
He añadido una persona extra a mi ejemplo. Por favor, vea la matriz a continuación.
Agregué tres medidas para calcular cuánto progreso se ha realizado desde la línea de base hasta los términos. Los necesito, ya que me ayudarán a determinar quién hizo progresos positivos, se mantuvo igual o hizo progresos negativos (sólo me interesa el progreso positve).
ProgBaseAut á SUM('Table'[Aut]) - SUM('Table'[Baseline])ProgBaseSpr á SUM('Table'[Spr]) - SUM('Table'[Baseline])ProgBaseSum á SUM('Table'[Sum]) - SUM('Table'[Baseline])Agregué tres medidas adicionales para ayudar a identificar a las personas que hicieron progresos positivos.BAut á IF([ProgBaseAut]>0,1)BSpr á IF([ProgBaseSpr]>0,1)BSum - IF([ProgBaseSum]>0,1)Esencialmente sólo necesito un recuento de las personas que han hecho progresos positivos, así que cuenten baut, BSpr y Bsum cuando sea igual a 1.Por favor, vea la tabla de ejemplo a continuación I con mis resultados desitados:Término No. Progreso positivo Aut 1 Spr 1 Suma 2 - Greg_Deckler
Community Champion
@ckausihan_12 Lo sentimos, no después de esto, ¿por qué exactamente la Persona 1 ha progresado de la línea de base a la aut por +1?
- v-zhenbw-msft
Community Support
Hola @ckausihan_12 ,
Podemos usar los siguientes pasos para cumplir con sus requisitos.
1. Sustituya [BAut], [BSpr] y [BSum] por las tres medidas siguientes.
BAut = [ProgBaseAut]>0 BSpr = [ProgBaseSpr]>0 BSum = [ProgBaseSum]>02. Luego podemos crear una medida para calcular el recuento de la persona que satisface la condición.
count Person = CALCULATE(DISTINCTCOUNT('Table'[Name]),FILTER('Table',[BAut] && [BSpr] && [BSum]))El resultado así,
Si no cumple con su requisito, ¿podría mostrar el resultado exacto esperado basado en la tabla que ha compartido?
BTW, pbix como adjunto.
Saludos
Equipo de Apoyo comunitario _ zhenbw
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
- ckausihan_12
Helper I
Hola @v-zhenbw-msft ,
Sin lugar a dudas este soltiuon no funcionará para mí, ya que cada persona tiene una entrada indivdual para cada término. Mi diseño de conjunto de datos es el siguiente:
Nombre Base Aut Spr Suma person1 4 0 0 0 person1 0 6 0 0 person1 0 0 7 0 person1 0 0 0 5 person2 3 0 0 0 person2 0 3 0 0 person2 0 0 5 0 person2 0 0 0 5
- v-zhenbw-msft
Community Support
Hola @ckausihan_12 ,
Podemos usar los siguientes pasos para satisfacer sus necesidades.
1. Cree tres medidas para calcular la diferencia.
ProgBaseAut 2 = CALCULATE(SUM('Table (2)'[Aut]),ALLEXCEPT('Table (2)','Table (2)'[Name])) - CALCULATE(SUM('Table (2)'[Baseline]),ALLEXCEPT('Table (2)','Table (2)'[Name])) ProgBaseSpr 2 = CALCULATE(SUM('Table (2)'[Spr]),ALLEXCEPT('Table (2)','Table (2)'[Name])) - CALCULATE(SUM('Table (2)'[Baseline]),ALLEXCEPT('Table (2)','Table (2)'[Name])) ProgBaseSum 2 = CALCULATE(SUM('Table (2)'[Sum]),ALLEXCEPT('Table (2)','Table (2)'[Name])) - CALCULATE(SUM('Table (2)'[Baseline]),ALLEXCEPT('Table (2)','Table (2)'[Name]))2. Luego podemos crear tres medidas para determinar si las tres primeras medidas son mayores que 0.
BAut 2 = IF([ProgBaseAut 2]>0,1,0) BSpr 2 = IF([ProgBaseSpr 2]>0,1,0) BSum 2 = IF([ProgBaseSum 2]>0,1,0)3. Por fin podemos crear una medida para calcular el recuento de personas que cumplen las condiciones.
count Person 2 = CALCULATE(DISTINCTCOUNT('Table (2)'[Name]),FILTER('Table (2)',[BAut 2]=1 && [BSpr 2]=1 && [BSum 2]=1))El resultado como este,
BTW, pbix como adjunto.
Saludos
Equipo de apoyo a la comunidad _ zhenbw
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.