Forum Discussion

FelipMark's avatar
FelipMark
Helper II
3 years ago
Solved

Conditional column with null value error

Hey guys, i created a conditional column of a date field, but when the field is "null" the conditional column returns error. Can you tell the reason?

 

= Table.AddColumn(#"Colunas Removidas1", "Status",
each if [DTENTREGA] < [DTPREVENT] then "Early"
else if [DTENTREGA] > [DTPREVENT] then "Late"
else if [DTENTREGA] = [DTPREVENT] then "On Time"
else if [DTENTREGA] = null then "In Progress"
else "Dispatch")



Error: Expression.Error: We are unable to convert null value to Logical type. Details: Value= Type=[Type]

  • Hello - you have to either filter out the nulls first, or use try-otherwise to step over them.

     

    Filter out the nulls first would be like this:

    = Table.AddColumn(#"Colunas Removidas1", "Status",
    each if [DTENTREGA] = null or [DTPREVENT] = null then null
    else if [DTENTREGA] < [DTPREVENT] then "Early"
    else if [DTENTREGA] > [DTPREVENT] then "Late"
    else if [DTENTREGA] = [DTPREVENT] then "On Time"
    else if [DTENTREGA] = null then "In Progress"
    else "Dispatch")

    Using try-otherwise would be like this, but it is riskier since there could be other errors that are overstepped. 

    = Table.AddColumn(#"Colunas Removidas1", "Status",
    each try 
    if [DTENTREGA] < [DTPREVENT] then "Early"
    else if [DTENTREGA] > [DTPREVENT] then "Late"
    else if [DTENTREGA] = [DTPREVENT] then "On Time"
    else if [DTENTREGA] = null then "In Progress"
    else "Dispatch" otherwise null)

     

     

3 Replies

  • Hello - you have to either filter out the nulls first, or use try-otherwise to step over them.

     

    Filter out the nulls first would be like this:

    = Table.AddColumn(#"Colunas Removidas1", "Status",
    each if [DTENTREGA] = null or [DTPREVENT] = null then null
    else if [DTENTREGA] < [DTPREVENT] then "Early"
    else if [DTENTREGA] > [DTPREVENT] then "Late"
    else if [DTENTREGA] = [DTPREVENT] then "On Time"
    else if [DTENTREGA] = null then "In Progress"
    else "Dispatch")

    Using try-otherwise would be like this, but it is riskier since there could be other errors that are overstepped. 

    = Table.AddColumn(#"Colunas Removidas1", "Status",
    each try 
    if [DTENTREGA] < [DTPREVENT] then "Early"
    else if [DTENTREGA] > [DTPREVENT] then "Late"
    else if [DTENTREGA] = [DTPREVENT] then "On Time"
    else if [DTENTREGA] = null then "In Progress"
    else "Dispatch" otherwise null)