根据日期和时间的条件创建包含值的新列

Create New Column containing value based on conditions on date and hour

我的 Power BI 中有一个 table,其中包含以下字段:

数据预览:

我添加了一个度量来计算 conversion_rate (orders/visits):

conversion_rate = DIVIDE(SUM(Table[orders]), SUM(Table[visits]))

然后我每天计算 conversion_rate 7 天前(以便能够比较它们):

conversion_rate_7_j = CALCULATE(Table[conversion_rate],
                         DATEADD(Table[day],-7,DAY)
                       )

现在我的数据是这样的:

我想做的是计算 7 天前同一小时的转化率。

但是,考虑到小时,我找不到减去 Date/Time 类型字段的函数。

我想到的一个解决方案是分别计算-7天同一小时的订单和访问量,然后将它们相除得到-7天同一小时的转化率:

orders_7_j_hourly = 
    VAR h = Table[hour] - 7
    VAR p = Table[platform]
    Return CALCULATE(
     MAX(Table[orders]),
     Table,
     Table[hour] = h,
     Table[platform] = p
    )

由于我的数据是按小时 (Date/Time) 和平台分组的,

并且因为有时在某个小时内我有平台的值=“应用程序”而不是“商店”,

我的功能不起作用,尤其是我使用的是 MAX,这将订单数量关联到错误的平台。

你能帮忙吗?

示例数据:https://ufile.io/y1blqgqn

您是否尝试使用 HOUR 功能??

conversion_rate_7_hour = CALCULATE( [conversion_rate],
FILTER( ALL(Table),
                         SELECTEDVALUE(Table[day]) - 7 = Table[day]
&&  HOUR(SELECTEDVALUE(Table[hour]) - 7) = HOUR( Table[hour])
                       ))

当我们将 Table[小时] 可视化时,它应该可以工作。

Ps。最佳实践 => 如果您在计算中引用度量值,请不要包含 table 前缀

您可以在数据集中创建一个名为 hour 的附加列

一旦你有了它,你就可以在可视化中输入时间,下面的度量可以满足你的要求

convRate-7 = CALCULATE([convRate],DATEADD('Table'[day],-7,DAY))

日期时间值以天为单位存储。因此,您可以简单地将 hour 移动 7。

conversion_rate prev_week =
VAR CurrHour = SELECTEDVALUE ( Table1[hour] )
RETURN
    CALCULATE (
        [conversion_rate],
        ALL ( Table1[day] ),
        Table1[hour] = CurrHour - 7
    )

示例结果: