根据日期和时间的条件创建包含值的新列
Create New Column containing value based on conditions on date and hour
我的 Power BI 中有一个 table,其中包含以下字段:
数据预览:
- “平台”列有 3 个可能的值:应用程序、商店、网站
- “天”是日期类型
- “小时”的类型为“Date/Time”(与“天”相同的信息 + 具有小时)
我添加了一个度量来计算 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,这将订单数量关联到错误的平台。
你能帮忙吗?
您是否尝试使用 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
)
示例结果:
我的 Power BI 中有一个 table,其中包含以下字段:
数据预览:
- “平台”列有 3 个可能的值:应用程序、商店、网站
- “天”是日期类型
- “小时”的类型为“Date/Time”(与“天”相同的信息 + 具有小时)
我添加了一个度量来计算 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,这将订单数量关联到错误的平台。
你能帮忙吗?
您是否尝试使用 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
)
示例结果: