DAX IF && || Declaración para nueva columna en PowerBI Desktop

Un usuario Pregunto ✅

mananthakore

Hola chicos,

Soy bastante nuevo en este PowerBI Desktop. Estoy tratando de agregar una nueva columna con una declaración compleja SI Y O.

Estoy obteniendo un resultado del 90% de esta fórmula, pero una condición simplemente no parece funcionar y no tengo idea de por qué.

aquí está la fórmula:

Costo presupuestado = IF (right (vTransactionHistoryAlt_FMInc[Last 4 Digit], 1) = «1» && vTransactionHistoryAlt_FMInc[Site]= «3450» || vTransactionHistoryAlt_FMInc[Site]= «3240» || vTransactionHistoryAlt_FMInc[Site]= «3530», «1499», if (right (vTransactionHistoryAlt_FMInc[Last 4 Digit], 1) = «1» && vTransactionHistoryAlt_FMInc[Site]= «3250» || vTransactionHistoryAlt_FMInc[Site]= «3580» || vTransactionHistoryAlt_FMInc[Site]= «3500» || vTransactionHistoryAlt_FMInc[Site]= «3310», «881», IF (right (vTransactionHistoryAlt_FMInc[Last 4 Digit], 1) = «1», «227», IF (right (vTransactionHistoryAlt_FMInc[Last 4 Digit], 1) = «2» && vTransactionHistoryAlt_FMInc[Site]= «3450» || vTransactionHistoryAlt_FMInc[Site]= «3240» || vTransactionHistoryAlt_FMInc[Site]= «3530», «5377», IF (derecha (vTransactionHistoryAlt_FMInc[Last 4 Digit], 1) = «2» && vTransactionHistoryAlt_FMInc[Site]= «3250» || vTransactionHistoryAlt_FMInc[Site]= «3580» || vTransactionHistoryAlt_FMInc[Site]= «3500» || vTransactionHistoryAlt_FMInc[Site]= «3310», «3048», «262»)))))

Todos mis criterios se están cumpliendo, excepto en los casos en los que en la 5ª declaración IF, sigue obteniendo un resultado basado en el 4º criterio, como si la 5ª declaración IF no existiera.

¿Pueden ayudarlo a descubrir qué está mal con la quinta declaración IF, es lo mismo que la primera, la segunda y la tercera y la cuarta, funcionan bien?

Gracias por adelantado

Hola @mananthakore,

No estoy seguro de cuáles son sus datos de muestra y cuál es su resultado esperado.

Utilice el siguiente DAX para calcular el costo presupuestado y verifique si obtiene el resultado deseado

Budgeted Cost = IF(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)= "1" && (vTransactionHistoryAlt_FMInc[Site]="3450" || vTransactionHistoryAlt_FMInc[Site]="3240" || vTransactionHistoryAlt_FMInc[Site]="3530" ),"1499",

if(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)="1" && (vTransactionHistoryAlt_FMInc[Site]="3250" || vTransactionHistoryAlt_FMInc[Site]="3580" || vTransactionHistoryAlt_FMInc[Site]="3500" || vTransactionHistoryAlt_FMInc[Site]="3310") ,"881", 

IF(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)= "1", "227", IF(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)= "2" && (vTransactionHistoryAlt_FMInc[Site]="3450" || vTransactionHistoryAlt_FMInc[Site]="3240" || vTransactionHistoryAlt_FMInc[Site]="3530" ),"5377",

IF(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)= "2" && (vTransactionHistoryAlt_FMInc[Site]="3250" || vTransactionHistoryAlt_FMInc[Site]="3580" || vTransactionHistoryAlt_FMInc[Site]="3500" || vTransactionHistoryAlt_FMInc[Site]="3310" ),"3048", "262")))))

1.PNG

Gracias,
Lydia

Hola @mananthakore,

No estoy seguro de cuáles son sus datos de muestra y cuál es su resultado esperado.

Utilice el siguiente DAX para calcular el costo presupuestado y verifique si obtiene el resultado deseado

Budgeted Cost = IF(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)= "1" && (vTransactionHistoryAlt_FMInc[Site]="3450" || vTransactionHistoryAlt_FMInc[Site]="3240" || vTransactionHistoryAlt_FMInc[Site]="3530" ),"1499",

if(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)="1" && (vTransactionHistoryAlt_FMInc[Site]="3250" || vTransactionHistoryAlt_FMInc[Site]="3580" || vTransactionHistoryAlt_FMInc[Site]="3500" || vTransactionHistoryAlt_FMInc[Site]="3310") ,"881", 

IF(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)= "1", "227", IF(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)= "2" && (vTransactionHistoryAlt_FMInc[Site]="3450" || vTransactionHistoryAlt_FMInc[Site]="3240" || vTransactionHistoryAlt_FMInc[Site]="3530" ),"5377",

IF(right(vTransactionHistoryAlt_FMInc[Last 4 Digit],1)= "2" && (vTransactionHistoryAlt_FMInc[Site]="3250" || vTransactionHistoryAlt_FMInc[Site]="3580" || vTransactionHistoryAlt_FMInc[Site]="3500" || vTransactionHistoryAlt_FMInc[Site]="3310" ),"3048", "262")))))

1.PNG

Gracias,
Lydia

himanshu56

Hola @mananthakore

Es muy difícil leer su fórmula con varios si.

Le aconsejaría que utilice SWITCH dax en lugar de IF.

SWITCH(
    TRUE()
    ,<boolean expression>, <result if true>
    ,<boolean expression>, <result if true>
    , ..., ...
    ,<else condition - no trues above>
)

Para saber más sobre cómo usar SWITCH, consulte el siguiente enlace:

https://powerpivotpro.com/2015/03/the-diabolical-genius-of-switch-true

Gracias,

Himanshu

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *