DAX в PowerBI: динамически фильтруемая таблица по вводу пользователя с дедупликацией с использованием первого значения над разделением - PullRequest
0 голосов
/ 06 октября 2019

Есть ли какой-нибудь подход к реализации следующей функции в DAX?

У меня есть таблица с 3 столбцами:

Original table

Я хочу создать:

  1. Time slicer в Power BI UI, где пользователь может изменить значения Date1 и Date2.
  2. После изменения этих параметров original table выше следует отфильтровать по столбцу Refresh date. Однако, если Date2 меньше 27.09.2019, я должен увидеть таблицу, в которой все значения Refresh date равны 27.09.2019. Следовательно, я получаю stage1_table
  3. После этого stage1_table должно быть дедуплицировано ID. В SQL логиках я хочу иметь таблицу после следующего скрипта:
Select
    ID,
    FIRST_VALUE(STATUS) OVER (PARTITION BY ID ORDER BY REFRESH_DATE DESC) as FINAL_STATUS
FROM 
    stage1_table
GROUP BY ...

Наконец, я должен получить DAX measure, который вычисляет число distinct IDs с status = Closed

Я написал следующий measure скрипт в DAX:

Test = 

//tData is an Original table
//tDates is a table with dates generated by tDates = CALENDAR(DATE(2019, 1, 1), TODAY() )

VAR MinRefreshDate = MIN(tData[refresh_date])
VAR MaxDate = MAX(tDates[Date]) //UI filter dates table

VAR FilteredTable = CALCULATETABLE(tData, FILTER(tData, tData[refresh_date] <= MAX(MaxDate, MinRefreshDate) ) )

VAR tbl =
    ADDCOLUMNS(FilteredTable, 
    "rank", RANKX( FILTER(FilteredTable, tData[ID] = SELECTEDVALUE(tData[ID]) ), tData[refresh_date], , DESC) )

VAR tbl2 = CALCULATETABLE( tbl, FILTER( tbl, [rank]=1) )

RETURN CALCULATE( DISTINCTCOUNT([ID]), FILTER(tbl2, [Status] = "Closed"))


Тем не менее, он не работает должным образом, потому что когда я изменяю UI Date2 на 05.10.2019, он возвращает 1, но желаемый результат равен 0 (так как ID = 1 статус равен Opened после04.10.2019).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...