Есть ли какой-нибудь подход к реализации следующей функции в DAX?
У меня есть таблица с 3 столбцами:
Я хочу создать:
Time slicer
в Power BI UI
, где пользователь может изменить значения Date1
и Date2
. - После изменения этих параметров
original table
выше следует отфильтровать по столбцу Refresh date
. Однако, если Date2
меньше 27.09.2019
, я должен увидеть таблицу, в которой все значения Refresh date
равны 27.09.2019
. Следовательно, я получаю stage1_table
- После этого
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
).