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
Drako
Helper I
Helper I

restar 2 columnas con IF me consigue resultado diferente

Hola

Tengo 2 columnas. Estimado y completado. Creé una nueva columna que resta a estos dos. Esto funciona bien. Luego agregué una declaración IF y las calulaciones están equivocadas.

Resultado correcto sin IF:

FinancialDeviationActual á [CostOriginalEstimate]-[CostCompletedWork]

Con IF:

FinancialDeviationActualWithIF ? IF([CostOriginalEstimate]-[CostCompletedWork]>-0,0,[CostOriginalEstimate]-[CostCompletedWork])

He estado leyendo sobre el contexto de la tabla, pero todavía no dun por qué un simple IF y una subsacciones no funciona y cómo solucionarlo.

image.png

1 ACCEPTED SOLUTION

Hola @Drako ,

Si se trata de una columna calculada, esto también se aplica de una manera diferente de nuevo debido al contexto y la agregación.

Supongamos que tiene los valores siguientes:

Gato Costo Valor Costo - Valor Si el costo
A 10 20 -10 -10
A 15 10 5 0
A 20 15 5 0

Si ha calculado estos valores en una tabla, puede ver que el total tiene lo siguiente:

Costo - Valor 0

Si el costo es -10

Esto es en el nivel de agreagación porque al recoger los valores tiene una suma de líneas individuales, las columnas de coste y valor no coinciden con el Coste IF.

En el IF está eliminando todo lo que tiene un valor por encima de 0 sin embargo en las columnas de costo y valor que está considerando todos los valores tan diferentes resultados.

En este caso para que el cálculo sea correcto y devuelva 0 es necesario crear una medida con la sintaxis siguiente:

Measure = 
SUMX (
    VALUES ( 'Table'[CAT] ),
    CALCULATE (
        IF (
            SUM ( 'Table'[CostOriginalEstimate] ) - SUM ( 'Table'[CostOriginalEstimate] ) >= 0,
            0,
            SUM ( 'Table'[CostOriginalEstimate] ) - SUM ( 'Table'[CostOriginalEstimate] )
        )
    )
)

Esto debería dar el resultado esperado en mi caso 0:

MFelix_0-1605737677558.png


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



View solution in original post

5 REPLIES 5
MFelix
Super User
Super User

Hola @Drako ,

Si hace referencia a medidas, se basan en el contexto, esto significa que los cálculos se realizan en función de la columna, los filtros y las filas que se usan en las visualizaciones. Hacer esto de una manera práctica si usted tiene los siguientes valores:

Gato Valor

A

10

B 20
C 30
D 40
E 50

Y desea sumar todos los valores que son mayores que 20 y realiza la siguiente medida:

Values Above 20 = IF(SUM('Table'[Value]) <= 20 ; 0 ; SUM('Table'[Value]))

El resultado final es este:

MFelix_0-1605717952496.png

Lo que está sucediendo es que el cálculo es recoger la suma de todos los valores dentro del contexto y compararlos con 20 por lo que para CAT A y B la suma es menor o igual a 20 que presenta 0 para el resto del CAT devolver ese valor. Sin embargo, cuando se va al total lo que está sucediendo es que el SUM(Table[Value]) está calculando primero la suma de todas las categorías ( A + B + C + D +E) porque el contexto de esto es la tabla completa y devuelve 150 en lugar de devolver 120 que debería ser el resultado correcto, en este caso necesitamos usar un sumx para repasar el total si rehacer la medida para :

Values Above 20 after =
SUMX (
    VALUES ( 'Table'[Cat] );
    CALCULATE ( IF ( SUM ( 'Table'[Value] ) <= 20; 0; SUM ( 'Table'[Value] ) ) )
)

El resultado final será el siguiente:

MFelix_1-1605718391778.png

¿Ha visto que he sobrescrito el contexto de la medida y en el total el valor ahora es correcto.

(La fórmula anterior no es el mejor ejemplo, sino sólo para fines de ejemplo).

Mirando a usted caso que necesita para chan ge el contexto de su cálculo sin embargo las medidas que está calculando tienen un impacto en ese cálculo alonside con los valores de fila.

Intenté replicar su error, pero no fue abble de nuevo debido al contexto.

¿Puede compartir por favor un datos de maqueta o muestra de su archivo PBIX y el resultado esperado. Puede utilizar un onedrive, google drive, que transferimos o enlace similar para cargar sus archivos.

Si la información es confidencial, compártala a través de un mensaje privado.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Hola @MFelix

En realidad, no estoy usando measure, sino columnas que creé en el DAX. ¿No está seguro de si también se aplica aquí?
¿Cómo puedo enviarle de una manera fácil PBIX sin toda la compelxidad de los datos y tablas en el archivo. Es su una manera de exportar sólo los datos de la tabla y luego compartir esto con usted.... Lo sentimos no he compartido un archivo PBIX debido a la confidencialidad...
Simplemente no entiendo por qué una simple resta no funciona... Utilizo TABLEAU con otros clientes y nunca tengo estas complejidades con totales y cálculos de simpel. 😞

Atentamente

Lucas sano

Hola @Drako ,

Si se trata de una columna calculada, esto también se aplica de una manera diferente de nuevo debido al contexto y la agregación.

Supongamos que tiene los valores siguientes:

Gato Costo Valor Costo - Valor Si el costo
A 10 20 -10 -10
A 15 10 5 0
A 20 15 5 0

Si ha calculado estos valores en una tabla, puede ver que el total tiene lo siguiente:

Costo - Valor 0

Si el costo es -10

Esto es en el nivel de agreagación porque al recoger los valores tiene una suma de líneas individuales, las columnas de coste y valor no coinciden con el Coste IF.

En el IF está eliminando todo lo que tiene un valor por encima de 0 sin embargo en las columnas de costo y valor que está considerando todos los valores tan diferentes resultados.

En este caso para que el cálculo sea correcto y devuelva 0 es necesario crear una medida con la sintaxis siguiente:

Measure = 
SUMX (
    VALUES ( 'Table'[CAT] ),
    CALCULATE (
        IF (
            SUM ( 'Table'[CostOriginalEstimate] ) - SUM ( 'Table'[CostOriginalEstimate] ) >= 0,
            0,
            SUM ( 'Table'[CostOriginalEstimate] ) - SUM ( 'Table'[CostOriginalEstimate] )
        )
    )
)

Esto debería dar el resultado esperado en mi caso 0:

MFelix_0-1605737677558.png


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Hola @MFelix Miguel,

Thnaks por todos tus comentarios. Lo tengo para funcionar. Lo curioso que he aprendido de la manera difícil es que estaba haciendo todo esto en una columna calculada... así que nunca fue funcionar... estaba dando estos resultados extraños... una vez que pasé esto a una medida que funcionó!!!

¡¡¡¡Gracias!!!!

Hola @Drako

No me referí a eso porque me olvidé ya que tiene 2 niveles en la matriz el cálculo necesita tener esa sintaxis adicional contento de que estaba abble para averiguarlo.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



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.