Forum Discussion

v_rome's avatar
v_rome
Frequent Visitor
4 years ago
Solved

How to return a Tableobject using IF DAX-Function

Hello I'm trying to get a Tableobject back from an IF-Function, to use it in a Slicer Visual.

I have created a DateTable with one Column of Dates. Now I want to get only specifiy Date Ranges based on my IF-Function. 

If I'm going to provide only the DATESINPERIOD Function without IF it works, but I want to have a logic based on todays date. 

 

Can somebody say what I'm missing? 

I get always this Error:  The expression specified in the query is not a valid table expression.

 

Thanks in advance to the community 🙂 

 

  • Yep. IF won't return tables, unfortunately.

     

    v_rome Here's one way to work around that limitation for your specific case:

    Check1 =
    VAR lastDayOfMonth = EOMONTH ( TODAY (), 0 )
    VAR shift = IF ( lastDayOfMonth - 7 <= TODAY (), 0, -1 )
    VAR filter1 =
        DATESINPERIOD ( DateTable[Date], EOMONTH ( TODAY (), shift ), -1, YEAR )
    RETURN
        filter1

4 Replies

  • v_rome amitchandak you cannot return the table using the IF Function. The best approach would be to calculate the start and end date based on your if condition and then in the return using these variables.

     

    Follow us on LinkedIn

     

    Learn about conditional formatting at Microsoft Reactor

    My latest blog post The Power of Using Calculation Groups with Inactive Relationships (Part 1) (perytus.com) I would  Kudos if my solution helped. 👉 If you can spend time posting the question, you can also make efforts to give Kudos to whoever helped to solve your problem. It is a token of appreciation!

     

    Visit us at https://perytus.com, your one-stop-shop for Power BI-related projects/training/consultancy.

    • AlexisOlson's avatar
      AlexisOlson
      Super User

      Yep. IF won't return tables, unfortunately.

       

      v_rome Here's one way to work around that limitation for your specific case:

      Check1 =
      VAR lastDayOfMonth = EOMONTH ( TODAY (), 0 )
      VAR shift = IF ( lastDayOfMonth - 7 <= TODAY (), 0, -1 )
      VAR filter1 =
          DATESINPERIOD ( DateTable[Date], EOMONTH ( TODAY (), shift ), -1, YEAR )
      RETURN
          filter1
  • v_rome , I tried the same and got same error, seem like it is not allowing to return table using if

     

    parry2k , any thoughts on this.

  • v_rome that's exactly what I recommended. Just in the future, please paste the code instead of pasting the images that way it is easy to provide the solution. Just my 2 cents.