Forum Discussion

balar2007's avatar
balar2007
Regular Visitor
5 years ago
Solved

SWITCH o IF

Necesito transformar una declaración de caso que he escrito en spotfire a Power Bi

Caso
CUANDO [Formula] -"EBOB" ENTONCES "MOGAS"
CUANDO [Fórmula] -"G01" ENTONCES "GASOIL"
CUANDO [Fórmula] -"G50" ENTONCES "GASOIL"

CUANDO [Grado]-"DAOWA" ENTONCES "FO"

CUANDO ([Formula]-"BOB10ARGM") Y ([Grado]-"M5859") ENTONCES "MOGAS"
CUANDO ([Fórmula]-"FRONTLINEICELS") Y ([Grado]-"HYWAX") ENTONCES "FO"

CUANDO ([Cliente]-"MFPERNIS") Y ([Formula]-"BIPEB") ENTONCES "HEDGES"

ELSE [Fórmula]

Dado que hay varias columnas de una tabla implicada, ¿cómo escribo una expresión DAX mediante SWITCH. Si no cambia lo que es la mejor manera

Ayúdame

  • @balar2007 , Switch True ayudará en este caso

    Switch( True() ,
    , [Formula]="EBOB" , "MOGAS"
    , [Formula]="G01" , "GASOIL"
    , [Formula]="G50" , "GASOIL"

    , [Grado]-"DAOWA" , "FO"

    , ([Formula]-"BOB10ARGM") && ([Grado]-"M5859") , "MOGAS"
    , ([Formula]-"FRONTLINEICELS") && ([Grado]-"HYWAX") , "FO"

    , ([Cliente]-"MFPERNIS") && ([Formula]-"BIPEB") , "HEDGES"

    , [Fórmula]
    )

    Ref Video: https://www.youtube.com/watch?v=gelJWktlR80

  • Anonymous's avatar
    Anonymous
    5 years ago

    Hola @balar2007 ,

    Como @amitchandak dicho, Switch True es una buena idea.

    En addititon, también puede probar IF.

    Formula =
    IF (
        [Formula] = "EBOB",
        "MOGAS",
        IF (
            [Formula] = "G01",
            "GASOIL",
            IF (
                [Formula] = "G50",
                "GASOIL",
                IF (
                    [Grade] = "DAOWA",
                    "FO",
                    IF (
                        [Formula] = "BOB10ARGM"
                            && [Grade] = "M5859",
                        "MOGAS",
                        IF (
                            [Formula] = "FRONTLINEICELS"
                                && [Grade] = "HYWAX",
                            "FO",
                            IF ( [Client] = "MFPERNIS" && [Formula] = "BIPEB", "HEDGES", [Formula] )
                        )
                    )
                )
            )
        )
    )

    Saludos

    Stephen Tao

    Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

7 Replies

  • mahoneypat's avatar
    mahoneypat
    Icon for Microsoft Employee rankMicrosoft Employee

    El cambio es el camino a seguir. Este es un ejemplo con el código, pero no está claro si está realizando una columna o medida. Esto supone que [Formula] es una medida. Tenga en cuenta que la fórmula se calcula primero en una variable para que no se vuelva a calcular varias veces.

    Switch Example =
    VAR vFormula = [Formula]
    RETURN
    SWITCH (
    vFormula,
    "EBOB", "MOGAS",
    "G01", "GASOIL",
    "G50", "GASOIL",
    vFormula
    )

    saludos

    palmadita

  • @balar2007 , Switch True ayudará en este caso

    Switch( True() ,
    , [Formula]="EBOB" , "MOGAS"
    , [Formula]="G01" , "GASOIL"
    , [Formula]="G50" , "GASOIL"

    , [Grado]-"DAOWA" , "FO"

    , ([Formula]-"BOB10ARGM") && ([Grado]-"M5859") , "MOGAS"
    , ([Formula]-"FRONTLINEICELS") && ([Grado]-"HYWAX") , "FO"

    , ([Cliente]-"MFPERNIS") && ([Formula]-"BIPEB") , "HEDGES"

    , [Fórmula]
    )

    Ref Video: https://www.youtube.com/watch?v=gelJWktlR80

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hola @balar2007 ,

    Como @amitchandak dicho, Switch True es una buena idea.

    En addititon, también puede probar IF.

    Formula =
    IF (
        [Formula] = "EBOB",
        "MOGAS",
        IF (
            [Formula] = "G01",
            "GASOIL",
            IF (
                [Formula] = "G50",
                "GASOIL",
                IF (
                    [Grade] = "DAOWA",
                    "FO",
                    IF (
                        [Formula] = "BOB10ARGM"
                            && [Grade] = "M5859",
                        "MOGAS",
                        IF (
                            [Formula] = "FRONTLINEICELS"
                                && [Grade] = "HYWAX",
                            "FO",
                            IF ( [Client] = "MFPERNIS" && [Formula] = "BIPEB", "HEDGES", [Formula] )
                        )
                    )
                )
            )
        )
    )

    Saludos

    Stephen Tao

    Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

  • Hola @balar2007

    Para buscar la cadena EBOB en [Formula] modifique la línea a este

    CONTAINSSTRING( [Formula], "EBOB" ), "MOGAS"

    saludos

    Phil

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hola @balar2007 ,

    ¿Podría decirme si su problema ha sido resuelto?
    Si es así, acédi es la solución. Más gente se beneficiará de ello.
    O todavía está confundido al respecto, por favor proporcione más detalles sobre su tabla y su problema o compártame con su archivo pbix de su Onedrive for Business.


    Saludos
    Stephen Tao