Forum Discussion

cchp07's avatar
cchp07
Frequent Visitor
6 years ago
Solved

Power BI DAX Function 'SWITCH' does not support comparing values of type True/False

I am getting this error when I try to create a column in Power BI:


Function 'SWITCH' does not support comparing values of type True/False with values of type Text. Consider using the VALUE or FORMAT function to convert one of the values.


How do I fix this?


Here is the DAX for the column I am creating:


Status = SWITCH([G1TDTE] = "Null", "Plan", AND([G1DDTE] = "Null", [G1CDTE] = "Null"), "Undone Wip", [G1CDTE] = "Null", "Done Wip", "Finished")


The columns have the type text because I replaced values in query editor from 0 to "Null".

  • is this a colunm or a measure 

     

    if measure then you must use a max of the colunm values that you are comparing 

    Status = 
    SWITCH (
        TRUE(),
        MAX([G1TDTE]) = "Null", "Plan",
        AND ( max([G1DDTE]) = "Null", max([G1CDTE]) = "Null" ), "Undone Wip",
        max([G1CDTE]) = "Null", "Done Wip",
        "Finished"
    )

    for colunm no max need use the col ref as is 

     

    Status_COL = 
    SWITCH (
        TRUE(),
        [G1TDTE] = "Null", "Plan",
        AND ([G1DDTE] = "Null", [G1CDTE] = "Null" ), "Undone Wip",
        [G1CDTE] = "Null", "Done Wip",
        "Finished"
    )

    this only works if you have replaced you colunm with text colunms 

     

     

4 Replies

  • Hello cchp07 

    I think it is just the first part of the SWITCH that is giving you trouble.  If we change it like so it should work.

    Status =
    SWITCH (
        TRUE (),
        [G1TDTE] = "Null", "Plan",
        AND ( [G1DDTE] = "Null", [G1CDTE] = "Null" ), "Undone Wip",
        [G1CDTE] = "Null", "Done Wip",
        "Finished"
    )
      

     

      • jdbuchanan71's avatar
        jdbuchanan71
        Super User

        cchp07 

        Can you share a sample of the data in a format that can be copied (not a screen shot) or the .pbix file itself?

  • is this a colunm or a measure 

     

    if measure then you must use a max of the colunm values that you are comparing 

    Status = 
    SWITCH (
        TRUE(),
        MAX([G1TDTE]) = "Null", "Plan",
        AND ( max([G1DDTE]) = "Null", max([G1CDTE]) = "Null" ), "Undone Wip",
        max([G1CDTE]) = "Null", "Done Wip",
        "Finished"
    )

    for colunm no max need use the col ref as is 

     

    Status_COL = 
    SWITCH (
        TRUE(),
        [G1TDTE] = "Null", "Plan",
        AND ([G1DDTE] = "Null", [G1CDTE] = "Null" ), "Undone Wip",
        [G1CDTE] = "Null", "Done Wip",
        "Finished"
    )

    this only works if you have replaced you colunm with text colunms