在很多行业,尤其是零售业,其销售规律在一周内呈现一定的特点。
例如:平时有一种购买特点;周末有一种购买特点。
故而一周内的星期一到星期日呈现一定的权重分布。
1 到 12 表示月序号;1 到 7 表示周内日。
这个在 PowerBI 中构建就非常容易。
可以看出,星期五和星期六的指标值显著降低,其他日期类似,也许这就反应了一种规律。
如果结合 PowerBI 的筛选,还可以实现动态计算的效果,例如:
在 PowerBI 中进行这类分析的显著好处之一就是:动态性。在用户选择切片器的不同值后,整个计算重算,并根据用户的选择完成重算,这个选择在实际应用中,可以是门店,品牌,商品等各个维度,以在更加定制化的方面发现其规律。
注意
以往人们也会使用类似的机制,但是由于工具的限制,无法动态计算,例如,某个地区某个店的某类产品的销售规律与全局销售规律是有差异的,这里存在地域,店铺,产品导致的差异性,因此,我们需要动态计算机制。
不难想到,由于某些日期是节假日,它们会对常规日期造成干扰,为此,我们需要排除这些干扰。我们可以将特殊日期建立一个表格并做出说明,例如:
这个表格可以在 Excel 中维护,需要时加载进入 PowerBI 数据模型即可。
!>该表的日期列并不是完备的。而且,很可能出现重复的日期。例如:2019.9.22日既属于中秋节,也属于店庆日,我们应该如实记录。
从自然日中排除这些特别的日期,就可以得到实际可用日:
不难看出,对于2018年各月的周一来说,实际可用日比自然可用日有所减少,因为有的自然可用日落在了节假日等特殊日列表中,予以了排除。
因此,周内日权重指数应该在实际可用日中计算,为了计算的公平性,应该采用指标的平均值,而非累计。得到:
从趋势上来看,其规律是不变的,但从数值上来看,后者(按均值)计算显得更加合理。
该计算的 DAX 表达式为:
DWI.Value =
VAR vDatesInFC = VALUES( Model_Calender[Date] )
VAR vDatesValid = EXCEPT( vDatesInFC , VALUES( Ref_Specialday[Date] ) )
RETURN AVERAGEX( vDatesValid , [KPI.Auto] )
这是非常简单的,由于使用了 AVERAGEX ,这里的计算可以充分地兼顾那些没有销售的日期,它们并不会作为均值运算的分母。
现在的问题是,应该按照一个基准来描述这个周内日权重因子。我们按照以下方法处理:
选出权重最小的周内日,并将其权重置为1;
其他周内日则相应的按比例计算。
给出该 DAX 实现为:
DWI.Benchmark.Value = // DWI 周内日权重基准 按 指标
VAR vDaysInWeek = ALL( Model_Calender[DayInWeek] )
VAR vDWITable =
CALCULATETABLE(
ADDCOLUMNS( vDaysInWeek , "DWI.Value" , [DWI.Value] ) ,
REMOVEFILTERS( Model_Calender ) ,
VALUES( Model_Calender[Year] )
)
RETURN MINX( vDWITable , [DWI.Value] )
通过选择不同的类别,人员,城市,可以得到与之相匹配的周内日权重指数分布。
最终,我们可以得到:
这样,我们就可以选择:
年度数据
不同筛选维度
得到周内日的权重分布。
本文案例模板已共享至年度订阅会员专区,请尽情享用。
现已开启 PowerBI 学习中心:
进入学习中心和BI佐罗学习PBI
暗号:pbix
对于 PowerBI 新手,我们已经为初学者提供了完整的进阶通道,如下所示。
罗叔带你正确地系统化学习 PowerBI 路线图
免费体验 PowerBI:
正式开始从零正确地系统化学习 PowerBI
拖拽不能满足需求?系统化学习 DAX 来解决
需要复制粘贴成熟的 DAX 做法
按照国际可视化标准作图
从技巧到思想,为您揭示 BI 的本质
成为罗叔铁粉,关注 PowerBI 最前沿应用
关注罗叔,带你成为 PowerBI 专家