解决此问题的一种方法是使用多个度量和列。
-
对于您的登录表,添加一个具有以下定义的新计算列:
Previous Login = CALCULATE(MAX(LoginTable[Login]), FILTER(LoginTable, LoginTable[User] = EARLIER(LoginTable[User]) && LoginTable[Login] < EARLIER(LoginTable[Login])))
这将在您的登录表中创建一个新的计算列,它将上次登录的日期添加到您的表中。 (我的登录日期列称为登录,因此您可能需要更改它)
- 现在,只需计算登录日期与上次登录日期之间的 DAY 差:
Day Difference = DATEDIFF(LoginTable[Previous Login], LoginTable[Login], DAY)
- 使用简单的 IF 语句,您现在可以添加一个新的计算列,如果此登录是否重新激活,则返回 1:
Is Reactivated = IF(DATEDIFF(LoginTable[Previous Login],LoginTable[Login], DAY) > 360, 1, 0)
- 为方便起见,如果这是重新激活,还可以创建一个返回登录日期的计算列:
Reactivate = IF(LoginTable[Is Reactivated] == 1, LoginTable[Login], BLANK())
- 现在您只需创建一个按用户分组并获取最大登录日期和最大重新激活日期的计算表,如下所示:
Table = GROUPBY(LoginTable, LoginTable[User], "Last Login", MAXX(CURRENTGROUP(), LoginTable[Login]), "Last Reactivation", MAXX(CURRENTGROUP(), LoginTable[Reactivate]))
很多步骤可以放在一个步骤中,但这样更容易理解和排除故障。
希望这会有所帮助!