Страницы: 1
RSS
DAX | Создание столбца с NEXT_DATE на основе существующего столбца DATE, новый столбец на основе существующего, но без первой записи
 
Всем привет. Как-то давно видел здесь топик, связанный с DAX, дай думаю задам свой каверзный вопрос.

Ситуация следующая: у меня есть столбец с датами (DATE), я хочу создать новый столбец с датами, которые идут следующими по списку (NEXT_DATE). Пример прилагается. В MSSQL это можно легко провернуть при помощи LEAD (пример можно глянуть тут), в DAX есть аналогичная функция EARLIER, но она плохо отрабатывает, когда в датах есть дубли (в примере выделил жирным курсивом). Зачем это нужно на практике? Я хочу сделать меру, чтобы NEXT_DATE формировался динамично.

То есть задача сводиться к простому вопросу: как, средствами DAX, можно взять весь столбец (DATE), отрезав от него первую строку, и скопировать во второй столбец (NEXT_DATE)?

Формула DAX, по которой я считаю все это добро сейчас
Код
NEXT_EVENT_DATE = CALCULATE(
      MIN(RC[EVENT_DATE]),
      FILTER(
         RC,
         RC[EVENT_DATE] > EARLIER(RC[EVENT_DATE])
      )
)

Готов оказать посильную помощь каждому, кто возьмется мне помочь.
Премного благодарен!
Изменено: vikttur - 29.07.2021 18:59:42
 
Цитата
MythBuster написал:
но она плохо отрабатывает, когда в датах есть дубли
функция EARLIER() нужна в DAX, чтобы отработать контекст строки внутри меры. В данном случае попросту говоря Вы в мере просите вывести первую минимальную дату, отличную от текущей. То есть Вы задачу формулируете неверно: Вам нужно следующее значение в списке, а не следующая дата, отличная от текущей. В примере Вы указываете столбец с индексом REQUEST_ID, Вот по нему и Выводите следующее значение из списка.
Код
NEXT_EVENT_DATE = CALCULATE(
      MIN(RC[EVENT_DATE]),
      FILTER(
         RC,
         RC[REQUEST_ID] > EARLIER(RC[REQUEST_ID])
      )
)
Изменено: Vladimir Chebykin - 30.07.2021 07:18:08
 
Благодарю Вас, все отработало как мне нужно было)
 
Я бы все таки посоветовал уйти от EARLIER и, как добрые люди советуют, запилить то же самое через переменные:
Код
NEXT_EVENT_DATE = var d = RC[REQUEST_ID] return
CALCULATE(
      MIN(RC[EVENT_DATE]),
      FILTER(
         RC,
         RC[REQUEST_ID] > d)
      )
)
Изменено: PooHkrd - 30.07.2021 13:03:33
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх