Forum Discussion

benjaminlvdr's avatar
benjaminlvdr
New Member
7 years ago
Solved

DAX

Hi everyone,   Can you help to debug this formula please ?   IF(AND(Tableau_owssvr_1[Project complexity]="simple";Tableau_owssvr_1[Adressed request time]<5);"on-time";IF(AND(Tableau_owssvr_1[Proj...
  • MFelix's avatar
    7 years ago

    Hi benjaminlvdr,

     

    As parry2k said this is not the best way to have your question answer however I believe I have found your error check the bold part below, you have 2 brackets in the middle of your formula closing it earlier than you need.

     

     

    IF(AND(Tableau_owssvr_1[Project complexity]="simple";Tableau_owssvr_1[Adressed request time]<5);"on-time";IF(AND(Tableau_owssvr_1[Project complexity]="simple";Tableau_owssvr_1[Adressed request time]>5);"delay";IF(AND(Tableau_owssvr_1[Project complexity]="medium";Tableau_owssvr_1[Adressed request time]<10);"on-time";
    IF(AND(Tableau_owssvr_1[Project complexity]="medium";Tableau_owssvr_1[Adressed request time]>10)) <- this bracket is to much
    ;"delay";IF(AND(Tableau_owssvr_1[Project complexity]="complex";Tableau_owssvr_1[Adressed request time]<15);"on-time";IF(AND(Tableau_owssvr_1[Project complexity]="complex";Tableau_owssvr_1[Adressed request time]>15);"delay"Smiley Wink))))

     

     

    On best practices your formula should be written like this:

    Formula =
    IF (
        AND (
            Tableau_owssvr_1[Project complexity] = "simple";
            Tableau_owssvr_1[Adressed request time] < 5
        );
        "on-time";
        IF (
            AND (
                Tableau_owssvr_1[Project complexity] = "simple";
                Tableau_owssvr_1[Adressed request time] > 5
            );
            "delay";
            IF (
                AND (
                    Tableau_owssvr_1[Project complexity] = "medium";
                    Tableau_owssvr_1[Adressed request time] < 10
                );
                "on-time";
                IF (
                    AND (
                        Tableau_owssvr_1[Project complexity] = "medium";
                        Tableau_owssvr_1[Adressed request time] > 10
                    );
                    "delay";
                    IF (
                        AND (
                            Tableau_owssvr_1[Project complexity] = "complex";
                            Tableau_owssvr_1[Adressed request time] < 15
                        );
                        "on-time";
                        IF (
                            AND (
                                Tableau_owssvr_1[Project complexity] = "complex";
                                Tableau_owssvr_1[Adressed request time] > 15
                            );
                            "delay";
                            ""
                        )
                    )
                )
            )
        )
    )
    

    don't know what the smiley face in the end represent I placed a "".

     

    But to improve overall legebility and performance you should redo your measure to this:

    ttt =
    SWITCH (
        TRUE ();
        Tableau_owssvr_1[Project complexity] = "simple"
            && Tableau_owssvr_1[Adressed request time] < 5; "on-time";
        Tableau_owssvr_1[Project complexity] = "simple"
            && Tableau_owssvr_1[Adressed request time] > 5; "delay";
        Tableau_owssvr_1[Project complexity] = "medium"
            && Tableau_owssvr_1[Adressed request time] < 10; "on-time";
        Tableau_owssvr_1[Project complexity] = "medium"
            && Tableau_owssvr_1[Adressed request time] > 10; "delay";
        Tableau_owssvr_1[Project complexity] = "complex"
            && Tableau_owssvr_1[Adressed request time] < 15; "on-time";
        Tableau_owssvr_1[Project complexity] = "complex"
            && Tableau_owssvr_1[Adressed request time] > 15; "delay";
        ""
    )

    As you can see it's much shorte and easier to read, again the "" on the end should be replace by what you have on your smiley face.

     

    Regards,

    MFelix