Forum Discussion

ckausihan_12's avatar
ckausihan_12
Icon for Helper I rankHelper I
6 years ago
Solved

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:

IdNombreTérminoData_Drop_OrderBaseAutSprSuma
1234person1Suma40005
1234person1Spr30030
1234person1Aut20500
1235person1Base14000

Matriz:

NombreBaseAutSprSumaProgBaseAutProgBaseSprProgBaseSum
person145351-11
  • 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]))

    Com 1.jpg

    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)

    Com 2.jpg

    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,

    Com 3.jpg

    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's avatar
    v-zhenbw-msft
    Icon for Community Support rankCommunity 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]))

    C 1.jpg

    2. Luego podemos crear una nueva tabla usando Introducir fecha, y crear una medida para resumir las tres medidas.

    C 2.jpg

    Total = 
    SUMX(
        VALUES('Table (2)'[Row]),
    SWITCH(
        'Table (2)'[Row],
        "ProgBaseAut",[ProgBaseAut],
        "ProgBaseSpr",[ProgBaseSpr],
    "ProgBaseSum",[ProgBaseSum]))

    C 3.jpg

    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.

  • 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.

    Capture.JPG

    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érminoNo. Progreso positivo
    Aut1
    Spr1
    Suma2

  • Greg_Deckler's avatar
    Greg_Deckler
    Icon for Community Champion rankCommunity 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's avatar
    v-zhenbw-msft
    Icon for Community Support rankCommunity 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]>0

    2. 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í,

    Com 1.jpg

    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's avatar
      ckausihan_12
      Icon for Helper I rankHelper 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:

      NombreBaseAutSprSuma
      person14000
      person10600
      person10070
      person10005
      person23000
      person20300
      person20050
      person20005

  • v-zhenbw-msft's avatar
    v-zhenbw-msft
    Icon for Community Support rankCommunity 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]))

    Com 1.jpg

    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)

    Com 2.jpg

    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,

    Com 3.jpg

    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.