Powerpivot DAX 时间 - 当时间戳落在一小时的第一个 30 分钟或第二个 30 分钟内时计数

Powerpivot DAX time- counting when a timestamp falls within 1st 30 mins or 2nd 30 mins of an hour

假设我有一个用户列表和时间戳。

User Time
Tim  6:15PM
Tim  6:17PM
Tim  6:44PM
Tim  3:33PM
Bort 8:00PM
Bort 9:04PM
Bort 9:05PM

我想为每个用户计算他们有时间戳的 30 分钟增量的数量,在下午 5 点到早上 8 点 30 点之间的每个小时内

结果:

Tim 2
Bort 2

请注意,Tim 在 6:15 和 6:17 有时间,这在下午 6 点的前 30 分钟内,因此只计为 1。他有时间在 6:44PM,在6:30PM之后,所以也算1,他总共有2

Bort 在晚上 8 点上半场有时间,但下半场没有。所以他得到 1。然后他在晚上 9 点内有两次。他总共有2个。

在 Powerpivot/dax 中这样做是否过于激烈?

我假设你指的是最后两行 Bort 的 PM,因为那是你稍后提到它的方式。

我通过执行以下操作实现了这一目标:

  1. 创建计算列HalfHour = ROUNDUP(48*TimeStamps[Time],0)
  2. 创建一个度量 CountTimeStamps,如下所示。
  3. 将它们放入矩阵视觉对象中,行 User,值 CountTimeStamps

CountTimeStamps =
    CALCULATE(
        DISTINCTCOUNT(TimeStamps[HalfHour]),
            TimeStamps[Time] <= TIMEVALUE("8:30AM") ||
            TimeStamps[Time] >= TIMEVALUE("5PM")
             )