Entender los IF y los OR en DAX

Un usuario Pregunto ✅

rrhutch

Estoy haciendo la transición de Tablau a PowerBI y tengo problemas para escribir una nueva declaración de columna en DAX. Mi declaración en Tableau funciona de manera similar a Excel y dice lo siguiente:

SI ([App Status]=»CA» O [App Status]=»AR» O [App Status]=»AM» O [App Status]=»ACOM») ENTONCES «Y» ELSEIF ([App Status] = «Puede» O [App Status] = «Def» O [App Status] = «No Con» O [App Status] = «W») Y [App Status Date]<=[SumDate] ENTONCES "N" MÁS "Y" FIN

Probé la sintaxis, incluida la declaración OR en el exterior, pero dio un error. Además, no estaba claro sobre las capacidades de ElseIf.

Cualquier ayuda sería muy apreciada.

konstantinos

@rrhutch Como @Dan80 mencionó que la sintaxis DAX es diferente O es || y AND es && para más de dos condiciones, además debe agregar un punto y coma o una coma según la configuración del delimitador de región como Excel.

IFDAX =
IF (
    [App Status] = "AC"
        || [App Status] = "AR"
        || [App Status] = "AM"
        || [App Status] = "ACOM";
    "Y";
    IF (
        [App Status] = "Can"
            || [App Status] = "Def"
            || [App Status] = "NoCon"
            || [App Status] = "W"
            && [App Status Date] <= [SumDate];
        "N";
        "Y"
    )
)

O una fórmula mejor para IF anidado es SWITCH

SWITCHDAX =
SWITCH (
    TRUE;
    [App Status] = "AC"
        || [App Status] = "AR"
        || [App Status] = "AM"
        || [App Status] = "ACOM"; "Y";
    [App Status] = "Can"
        || [App Status] = "Def"
        || [App Status] = "NoCon"
        || [App Status] = "W"
        && [App Status Date] <= [SumDate]; "N";
    "Y"
)

Le sugiero que verifique las definiciones del lenguaje de fórmulas DAX, al menos al principio

konstantinos

@rrhutch Como @Dan80 mencionó que la sintaxis DAX es diferente O es || y AND es && para más de dos condiciones, además debe agregar un punto y coma o una coma según la configuración del delimitador de región como Excel.

IFDAX =
IF (
    [App Status] = "AC"
        || [App Status] = "AR"
        || [App Status] = "AM"
        || [App Status] = "ACOM";
    "Y";
    IF (
        [App Status] = "Can"
            || [App Status] = "Def"
            || [App Status] = "NoCon"
            || [App Status] = "W"
            && [App Status Date] <= [SumDate];
        "N";
        "Y"
    )
)

O una fórmula mejor para IF anidado es SWITCH

SWITCHDAX =
SWITCH (
    TRUE;
    [App Status] = "AC"
        || [App Status] = "AR"
        || [App Status] = "AM"
        || [App Status] = "ACOM"; "Y";
    [App Status] = "Can"
        || [App Status] = "Def"
        || [App Status] = "NoCon"
        || [App Status] = "W"
        && [App Status Date] <= [SumDate]; "N";
    "Y"
)

Le sugiero que verifique las definiciones del lenguaje de fórmulas DAX, al menos al principio

rrhutch

En respuesta a konstantinos

Gracias. Eso fue útil.

Dan80

Las funciones OR y AND en DAX tienen un límite de solo 2 condiciones, por lo que para evitar el problema, en lugar de usar OR, use | carácter y AND usa &&. Estos le permiten utilizar más de 2 condiciones. ¿Espero que esto ayude?

Deja un comentario

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