2

我有:

  1. 带有用户名的表

  2. 指示操作的表,其中包含用户名、操作时间、操作名称列。命名events unique_events

我从一月份开始收集数据。我想在我的用户名表中有一个列,它表明自从用户第一次使用我的应用程序和 1 月 1 日以来已经过了多长时间。

因此,如果用户在 1 月份首次登录,则该用户名所在行的值为 0。如果用户在 3 月份登录,则为 2。

我试过:

Column = DATEDIFF(01-01-2016, MIN(SELECTCOLUMNS(FILTER('events unique_events','events unique_events'[User Name] = Users[User Name]),"DatedTime", [DatedTime])),MONTH)

它返回一个错误,指出 Min 函数需要列引用。

我也尝试了 FirstDate 而不是 MIN ,它返回了一个错误,指出 FirstDate 不能与汇总函数一起使用。

关于如何实现这一目标或修复我尝试过的任何其他想法?

4

1 回答 1

0

(为简单起见,我将您的表称为“事件”,并将用户登录日期字段称为“用户登录日期”)。

首先,将您的应用开始日期定义为度量:

App_Start_Date:= DATE(2016, 1, 1)

然后,定义测量应用程序开始日期和用户登录日期之间的最小差异:

User_Start_Diff=:MINX(事件, DATEDIFF([App_Start_Date], Events[User_Login_Date], Month))

将此度量放入针对用户名的数据透视表中,您应该会得到所需的结果。

工作原理: 1) MINX 逐条记录并计算每个客户登录的日期差异。然后在结果中找到最小值;

2) 当您将度量放入数据透视表时,它会按客户拆分 MINX 结果,并分别重新计算每个结果的 min。您不需要进行分组。

创建 [Start_Date] 度量在技术上不是必需的,而是一个良好的风格问题 - 不要在公式中硬编码值,始终创建度量。稍后当你需要做出改变时,你会感谢自己。

于 2017-04-29T14:47:59.870 回答