Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago

Direct Query SQL: Load data if slicer has one selection

Hello everyone,

 

I have a table which should only show data from a Direct Query SQL table when a slicer with the column "UserId" contains one selection.

After researching, there was no solution to be found. However, I realized something: I could change the SQL statement which was currently: "SELECT UserId, Name, Age FROM Datatable" to something like (note: It's psuedoCode): "IF( DISTINCTCOUNT(UserId) is 1) THEN SELECT UserId, Name, Age FROM Datatable ELSE SELECT nothing". Normally, this would cause nothing to be shown in the visual. However, this is Direct Query and not Import. Because PowerBI queries efficiently and considers slicer selection and filter in their SQL queries, BI would (hopefully) include something like "WHERE UserId = '0004'" (If the value "0004" is selected).

 

Can anyone tell me:

- if this could work

- how the pseudo-code has to be formullated in SQL

 

Thanks in advance!

2 Replies

  • v-frfei-msft's avatar
    v-frfei-msft
    Icon for Community Support rankCommunity Support

    Hi Anonymous ,

     

    We can create a measure as below and make the visual filtered by it like that to work around.

    Me = var als =CALCULATE(DISTINCTCOUNT('Product'[Category]),ALLSELECTED('Product'))
    var al = CALCULATE(DISTINCTCOUNT('Product'[Category]),ALL('Product'))
    return
    IF(al=als,BLANK(),1)

     

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hello v-frfei-msft ,

       

      I have to avoid using measures because with them, my visuals won't load fast anymore. Also, while this causes the visual not to show anything, data will still be loaded in the background, which makes other queries to the database slow.