Разница между несколькими датами в одном столбце в зависимости от категории - PullRequest
0 голосов
/ 04 января 2019

У меня следующая проблема ..

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

enter image description here

Я хочу создать вычисляемый столбец, в котором будет указываться разница дней между двумя датами одного и того же кода ( ХПК ), разница должна рассчитываться на основе даты перед строкой.

Например:

Использование ХПК B

ХПК | ДАТА | days_diff

B | 05/01/2018 |

B | 01.09.2008 | 4

B | 01.12.2008 | 3

В примере изображения коды / даты отсортированы по порядку, но в действительности они не в порядке.

Я пытался использовать следующее предложение в DAX:

 DATEDIFF(Testing[DATE]; FIRSTDATE(FILTER( ALL(Testing[DATE]) ;Testing[DATE] > EARLIER(Testing[DATE])));DAY)

Объяснение того, что я пробовал:

Сделайте разницу между датой в строке и использованием функции EARLIER , чтобы получить самую последнюю дату из текущей.

Однако я получил следующий результат:

enter image description here

Я не могу отфильтровать ХПК , поэтому анализ «РАННЕГО» выполняется только в той же «группе», поэтому я понимаю, что PowerBI рассматривает все даты.

Есть идеи?

1 Ответ

0 голосов
/ 04 января 2019

Вы довольно близки к идее, но это требует некоторой настройки. Попробуйте это:

Days_diff =
VAR StartDate =
    CALCULATE (
        LASTDATE ( Testing[DATE] ),
        FILTER (
            ALLEXCEPT ( Testing, Testing[COD] ),
            Testing[DATE] < EARLIER ( Testing[DATE] )
        )
    )
RETURN
    DATEDIFF ( StartDate, Testing[DATE], DAY )

Переменная StartDate вычисляет последнюю дату перед текущей датой строки. Я использую CALCULATE для удаления всего контекста строки, кроме COD, так как это то, что мы группируем.

Примечание. Функция EARLIER - это не функция даты / времени, а скорее ссылка на более ранний контекст строки (до перехода внутрь функции FILTER). Это позволяет нам возвращаться к уровню, когда мы вкладываем функции.

Тогда вы просто берете DATEDIFF.

Days_diff

...