PowerBI - 使用 DAX 根据日期和时间维度计算每小时移动平均线

问题描述

我将自己描述为 PowerBI 的初学者。我有一个关于时间维度处理的问题。

我的目标是查看哪个帖子导致未来 48 小时内订单量增加。因此,我会根据日期和时间计算移动平均值。 对于每天和一天中的每个小时,应该计算接下来 48 小时的平均订单数。例如:如果 2021 年 1 月 1 日上午 8 点到 2021 年 1 月 3 日上午 8 点之间有 300 个订单,则 2021 年 1 月 1 日上午 8 点的计算值应为 number_of_orders_in_intervall/天数=300/2=150。对于上午 9 点,将使用 2021 年 1 月 3 日上午 9 点的上边界进行相同的计算......

在我的数据模型中,我区分了时间维度和日期维度。两者都通过外键链接到我的两个事实表。

Data Model

不幸的是,我直到现在才能做到。这是我仅针对天数移动平均线的 DAX 度量,它似乎运行良好。

Moving Average Order (N Days Interval) = 

VAR C = CALculaTE(AVERAGEX(DIM_DATE,[Total Orders]+0),ALL(Dim_Date),FILTER(ALL(Dim_Date[Date]),Dim_Date[Date]>=MAX(Dim_Date[Date])
    &&Dim_Date[Date]<MAX(Dim_Date[Date])+'Days for Moving Average'[Days for Moving Average-Wert]))
VAR B = ADDCOLUMNS(Dim_Date,"Moving Average",C)  
RETURN CALculaTE(AVERAGEX(B,[Moving Average]),ALL(Dim_Date[Date]))

现在我想根据日期和小时计算移动平均值。

// Since there is no datetime Table in my Model I try to use crossjoin to get a table with one row for each hour of each day (For two days there should be 48 rows)
var _table = CROSSJOIN(FILTER(Dim_Date,Dim_Date[Date]>=DATE(2021,01,01)),Dim_Time)


var _average = CALculaTE(
    AVERAGEX(_table,[Total Orders]),// After we change filters,do our calculation
    ALL(Dim_Date[Date]),ALL(Dim_Time[Hour of Day]),FILTER( 
      _table,(Dim_Date[Date]+ Dim_Time[Hour of Day]/24 >= MAX(Dim_Date[Date])+MAX(Dim_Time[Hour of Day])/24 && 
      Dim_Date[Date]+ Dim_Time[Hour of Day]/24 <= MAX(Dim_Date[Date])+MAX(Dim_Time[Hour of Day])/24 + 'Days for Moving Average'[Days for Moving Average-Wert] // Keep those rows which are in our time range
  )
))

RETURN _average //CALculaTE(MAXX(B,FILTER(ALL(Dim_Date),01)))

不幸的是,上面的代码不起作用。如果我将日期值和一天中的小时数放入表格并计算移动平均值,它会返回以下内容

Result

为什么只计算了 4 个值?

我将不胜感激任何建议。提前谢谢了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)