均线,不包括周末和节假日

时间:2018-12-07 18:05:28

标签: excel powerbi dax powerpivot

我目前在PowerPivot中有一个表,该表通过我们的销售渠道跟踪客户数量。从(按销售地点)首次互动到收费销售。到目前为止,我已经创建了一个为期5天的移动平均值,用于平均每个任务。以下是我到目前为止创建的DAX公式和示例表格。

=
CALCULATE (
    SUM ( [Daily Count] ),
    DATESINPERIOD ( Table1[Date], LASTDATE ( Table1[Date] ), -7, DAY ),
    ALLEXCEPT ( Table1, Table1[Sales Location], Table1[Group] )
)
    / 5

enter image description here

在我苦苦挣扎的地方,我想出了一种排除周末和公司假期的方法。此外,如果假日是平日,我想将其从平均值中删除,然后再返回一天(以平滑趋势)。

例如,在11/26/18(感恩节后的星期一和黑色星期五),我想对之前五个工作日(11/26 / 18、11 / 21-11 / 19和11/16)进行平均)。在上面的示例中,前5天的移动总数和平均值应为Intake = 41(总数),8.2(平均值),约会= 30(总数),6(平均值)和Sale = 13(总数)和2.6(平均值) )。

根据当前公式,这些数字中的每一个都不准确。有什么简单的方法可以排除这些天?

旁注:我创建了一个辅助表,其中包含与我的销售数据相关的所有假期。

谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

为此,我建议您在Table1列上使用与Date相关的日历表,如果当天是工作日,否则为IsWorkday

设置完成后,您可以编写如下度量:

1

此处的0函数返回Moving Avg = VAR Last5Workdays = SELECTCOLUMNS ( TOPN ( 5, FILTER ( DateTable, DateTable[Date] <= EARLIER ( Table1[Date] ) && DateTable[IsWorkday] = 1 ), DateTable[Date], DESC ), "Workday", DateTable[Date] ) RETURN CALCULATE ( SUM ( Table1[Daily Count] ), Table1[Date] IN Last5Workdays ALLEXCEPT ( Table1, Table1[Sales Location], Table1[Group] ), ) / 5 的前5行,其中每行必须是一个工作日,该工作日小于或等于当前TOPN行中的日期( DateTable函数引用定义当前行的较早的行上下文。

然后我使用Table1通过选择单列(我将其命名为EARLIER)将此表转换为列表。从那里开始,基本上是您对日期过滤器进行了一些更改的度量。

答案 1 :(得分:0)

@alexisolson谢谢您的答复。我实际上能够在周末解决这个问题,但忘了关闭线程(很抱歉!无论如何都要感谢您的帮助)。但是我所做的事情与您上面提到的非常相似。

我创建了一个仅包含工作日的日期表(CorpCalendar)。然后,我在CorpCalendar表中创建了一个索引列,以给每一行一个升序的唯一编号。从那里,我按相关日期将CorpCalendar表链接到我的SalesData表,并使用LOOKUPVALUE函数将索引值从CorpCalendar表移到SalesData表。在单独的列中,我从日期索引值中减去4得到一个索引调整列(从实际日期索引和调整起5天的范围内……如果有意义)。然后,我添加了一个额外的LOOKUPVALUE帮助器列,以将调整后的日期索引列与相应的工作日进行匹配。最后,我使用以下函数获取5天的滚动平均值。

=CALCULATE(sum(Combined[Daily Count]),DATESBETWEEN(Combined[Date - Adjusted],Combined[Date - Adjusted (-5)],Combined[Date - Adjusted]),ALLEXCEPT(Combined,Combined[Group]))/5

这可能比需要的要复杂得多,但是,它使我得到了我一直在寻找的答案。让我知道这是否有意义,以及您是否对此类未来情况有任何建议。

再次感谢!