Reply
Syndicate_Admin
Administrator
Administrator
Syndicated - Inbound

Resta valores de la misma columna en función de varios filtros

Source Community: Power BI | Source Author Name: DreamToGet

Hola a todos

Estoy tratando de encontrar una manera de restar valores de la misma columna ('Salida') en función de los filtros.

Por ejemplo, para el número de serie del dispositivo 'A123BX90', me gustaría encontrar la diferencia de 'Comprobación desalida'de la columna [TestStep] entre'Process-Pre' y'Process-Post'[TestProcess]. Del mismo modo para 'Valor medido' & 'Salida final' de la columna TestStep.

¿Podría guiarme cómo lograr lo siguiente a través de DAX (el nombre de TestProcess es dinámico y cambiará en todo el conjunto de datos y no puedo codificarlo en función de los nombres actuales) ?

Diferencia de 'Comprobación de salida' = Salida [Process-Pre] - Salida [Process-Post] (124.88-120.52)

DeviceSerialNoTestStepProceso de pruebaSalida
A123BX90InicializaciónProceso-PreNull
A123BX90Comprobación de condicionesProceso-PrePasar
A123BX90Comprobación de coincidenciasProceso-PrePasar
A123BX90Prueba de entradaProceso-PreNull
A123BX90Inicialización rutinariaProceso-PrePasar
A123BX90Comprobación de salidaProceso-Pre124.88
A123BX90Valor medidoProceso-Pre-35
A123BX90Salida finalProceso-Pre24.34
A123BX90Prueba finalProceso-PreNo establecido
A123BX90InicializaciónProceso-PostNull
A123BX90Comprobación de condicionesProceso-PostPasar
A123BX90Comprobación de coincidenciasProceso-PostFallar
A123BX90Prueba de entradaProceso-Post-
A123BX90Inicialización rutinariaProceso-PostPasar
A123BX90Comprobación de salidaProceso-Post120.52
A123BX90Valor medidoProceso-Post-60
A123BX90Salida finalProceso-Post25.86
A123BX90Prueba finalProceso-PostNo establecido

¡Gracias de antemano!

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: v-alq-msft
Syndicated - Inbound

Hola, @DreamToGet

En función de su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

Mesa:

f1.png

En Power Query, puede crear una nueva consulta con los siguientes códigos m en 'Advanced Editor'.

let
    Source = Table.Group(Table, {"DeviceSerialNo", "TestStep"}, {{"Data", each 
let 
x=try Number.From([Output]{0}) otherwise null,
y=try Number.From([Output]{1}) otherwise null
in x-y , type number}})

in
    Source

Resultado:

f2.png

Si desea usar DAX, debe crear una columna de índice en Power Query.

f3.png

Puede crear una medida como se indica a continuación.

Result Measure = 
SUMX(
    SUMMARIZE(
        'Table',
        [DeviceSerialNo],
        [TestStep],
        "Result",
        var minindex = MIN('Table'[Index])
        var maxindex = MAX('Table'[Index])
        var val1 = 
        IFERROR(
            VALUE(
                MAXX(
                    FILTER(
                        'Table',
                        [Index]=minindex
                    ),
                    [Output]
                )
            ),
            BLANK()
        )
        var val2 = 
        IFERROR(
            VALUE(
                MAXX(
                    FILTER(
                        'Table',
                        [Index]=maxindex
                    ),
                    [Output]
                )
            ),
            BLANK()
        )
        return
        val1-val2
    ),
    [Result]
)

Resultado:

f4.png

Saludos

Allan

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

View solution in original post

Source Community: Power BI | Source Author Name: v-alq-msft
Syndicated - Inbound

Hola, @DreamToGet

En Power Query, puede agregar un nuevo paso con los siguientes códigos m. El archivo pbix se adjunta al final.

= Table.Group(#"Changed Type", {"DeviceSerialNo", "TestStep"}, {{"Data", each 
let 
x= Table.Max( Table.SelectRows(_,each [TestProcess]="Process-Pre"),"StartDate")[Output],
y= Table.Max( Table.SelectRows(_,each [TestProcess]="Process-Post"),"StartDate")[Output],
m= try Number.From(x) otherwise null,
n= try Number.From(y) otherwise null
in m-n
}})

Resultado:

c1.png

Saludos

Allan

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: v-alq-msft
Syndicated - Inbound

Hola, @DreamToGet

En función de su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

Mesa:

f1.png

En Power Query, puede crear una nueva consulta con los siguientes códigos m en 'Advanced Editor'.

let
    Source = Table.Group(Table, {"DeviceSerialNo", "TestStep"}, {{"Data", each 
let 
x=try Number.From([Output]{0}) otherwise null,
y=try Number.From([Output]{1}) otherwise null
in x-y , type number}})

in
    Source

Resultado:

f2.png

Si desea usar DAX, debe crear una columna de índice en Power Query.

f3.png

Puede crear una medida como se indica a continuación.

Result Measure = 
SUMX(
    SUMMARIZE(
        'Table',
        [DeviceSerialNo],
        [TestStep],
        "Result",
        var minindex = MIN('Table'[Index])
        var maxindex = MAX('Table'[Index])
        var val1 = 
        IFERROR(
            VALUE(
                MAXX(
                    FILTER(
                        'Table',
                        [Index]=minindex
                    ),
                    [Output]
                )
            ),
            BLANK()
        )
        var val2 = 
        IFERROR(
            VALUE(
                MAXX(
                    FILTER(
                        'Table',
                        [Index]=maxindex
                    ),
                    [Output]
                )
            ),
            BLANK()
        )
        return
        val1-val2
    ),
    [Result]
)

Resultado:

f4.png

Saludos

Allan

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

Source Community: Power BI | Source Author Name: DreamToGet
Syndicated - Inbound

Hola @v-alq-msft ,

Esto es exactamente lo que estaba buscando. Muchas gracias por esto.

Sin embargo, tengo otro problema ahora. Hay casos en los que el mismo 'TestProcess' se ha repetido varias veces y me gustaría utilizar los resultados más recientes (basado en la columna StartDate) para calcular la diferencia, pero no puedo hacerlo. ¿Podría ayudar en esto, por favor?

He adjuntado mi último archivo pbix junto con DAX actualizado para su referencia.

Resta valores de la misma columna en función de varios filters.pbix

¡Gracias!

Source Community: Power BI | Source Author Name: v-alq-msft
Syndicated - Inbound

Hola, @DreamToGet

En Power Query, puede agregar un nuevo paso con los siguientes códigos m. El archivo pbix se adjunta al final.

= Table.Group(#"Changed Type", {"DeviceSerialNo", "TestStep"}, {{"Data", each 
let 
x= Table.Max( Table.SelectRows(_,each [TestProcess]="Process-Pre"),"StartDate")[Output],
y= Table.Max( Table.SelectRows(_,each [TestProcess]="Process-Post"),"StartDate")[Output],
m= try Number.From(x) otherwise null,
n= try Number.From(y) otherwise null
in m-n
}})

Resultado:

c1.png

Saludos

Allan

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

avatar user

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

Feb2025 NL Carousel

Fabric Community Update - February 2025

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

Top Solution Authors (Last Month)
Top Kudoed Authors (Last Month)