2016-06-22 3 views
0

Я пытаюсь определить, сколько возвратных встреч каждого клиента было в установленный таймфрейм с момента их последнего назначения. Мне нужно определить каждую строку, является ли это конкретное назначение назначением «возвращения» в течение 48 часов после их последнего назначения (т. Е. Было ли время начала их назначения в течение 48 часов с момента окончания их предыдущего назначения)?Powerpivot dax filtering rows на основе сопоставления даты строки строки

example data

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

=CALCULATE(max([End Time]),ALLEXCEPT(Table,Table[Customer ID])) 

Что я борюсь с как включить дополнительный фильтр, чтобы только посмотреть на предыдущие назначения (по отношению к каждой строке). Я предполагаю, что если бы я мог вернуть таблицу, которая была отфильтрована, чтобы показывать только эти предыдущие записи, я мог бы получить максимальный и сравнить это, но не уверен, как писать о том, что в dax.

Большое спасибо за помощь.

Cheers, Chris.

ответ

0

Думаю, я взломал его, хотя я не совсем уверен, как эта формула работает, поэтому, если кто-то может сломать ее и объяснить мне, что было бы очень полезно!

1-й шаг: Расчет (на уровне контекста строки) самое последнее время до конечного назначения

=CALCULATE(Max([end time]),ALLEXCEPT(Table1,Table1[customer ID]),EARLIER(Table1[start time])>Table1[start time]) 

2-й шаг: Вычислить разницу во времени между текущим назначением и самое последнее время конца

=IF(NOT(ISBLANK([Most Recent Prior End Time])),1.*[end time]-[Most Recent Prior End Time],BLANK()) 

Я знаю, как работает разность во времени, но на самом деле не так, как работает более ранняя функция при вычислении конечного времени последней встречи.

final table result

Смежные вопросы