Power BI:查找365天的最后一个非活动时间

时间:2019-12-06 15:02:35

标签: powerbi dax

我想找到某人上一次不活动365天后的重新激活日期。

有两个表:

  • 包含不明用户及其多个登录日期的登录表。
  • 具有不同用户及其最后登录日期的用户表。我也希望将此重新激活日期放在此处。

enter image description here

我使用以下Dax公式获取“上次登录日期”

Last Login Date = MAXX(RELATEDTABLE('Login Table'), 'Login Table'[Login Date])

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是使用多个度量和列。

  1. 对于您的登录表,添加具有以下定义的新计算列:

    Previous Login = CALCULATE(MAX(LoginTable[Login]), FILTER(LoginTable, LoginTable[User] = EARLIER(LoginTable[User]) && LoginTable[Login] < EARLIER(LoginTable[Login])))

这将在“登录表”中创建一个新的计算列,该列会将上次登录的日期添加到表中。 (“我的登录日期”列称为“登录”,因此您可能需要更改它)

  1. 现在,只需计算登录日期和上一个登录日期之间的DAY差:

Day Difference = DATEDIFF(LoginTable[Previous Login], LoginTable[Login], DAY)

  1. 使用一个简单的IF语句,现在您可以添加一个新的计算列,如果此登录名是重新激活的话,则返回1:

Is Reactivated = IF(DATEDIFF(LoginTable[Previous Login],LoginTable[Login], DAY) > 360, 1, 0)

  1. 为了使事情变得容易,如果重新激活,还创建一个计算所得的列来返回登录日期:

Reactivate = IF(LoginTable[Is Reactivated] == 1, LoginTable[Login], BLANK())

  1. 现在,您只需要创建一个计算表即可按用户分组,并获得最大登录日期和最大重新激活日期,如下所示:

Table = GROUPBY(LoginTable, LoginTable[User], "Last Login", MAXX(CURRENTGROUP(), LoginTable[Login]), "Last Reactivation", MAXX(CURRENTGROUP(), LoginTable[Reactivate]))

很多步骤可以放入一个步骤中,但是通过这种方式,它更易于理解和排除故障。

希望这会有所帮助!