统计时间与公用时间不一致的算法
身为数据从业者,从分析价值来讲,日期维度的分析价值不言而喻。DAX提供了多个日期时间函数与时间智能函数,满足了大部分情况下的分析需求。本文中我们探讨一种应用较为广泛而使用时间智能函数很难满足的分析场景。
场景描述如下,假如有一个制造工厂,生产每件产品时都会留下一条记录,该条记录中包含了生产时间以及产品编号等信息,数据如下表所示
以日期为单位统计相关指标时,我们的做法是建立日期维度表,然后将维度表与事实表建立关系,通过对日期表切片来计算相应日期的指标。
步骤如下:
首先建立日期表(有多种方法,此处不再赘述),观察日期表中的日期列,每个日期的时、分、秒都是零,类似”2018/1/1 00:00:00”这种形式,因此,要建立事实表与维度表的联系,需要将事实表的日期列进行处理,将其中的时、分、秒均化为零。
在事实表中新建列,
日期 = DATE(YEAR('Fact'[时间]) , MONTH('Fact'[时间]) , DAY('Fact'[时间]))
经过这样的处理之后,原时间列就被转化为了时分秒均为零的日期列。
之后维度表与事实表建立关系
产量 = COUNT('Fact'[ID])
根据该度量值做出的月度产量趋势图如下
按照这种思路统计的实际是0点对次日0点的产量,制造业一般有班次的安排,比如8点至次日8点为一个班次,也即统计周期为8点至次日8点。在这种情况下建议采用如下方案:
产量统计表达式写成如下形式
班次产量 = CALCULATE(
COUNT('Fact'[ID]),
FILTER(ALL('Fact'),
'Fact'[时间] > MIN('Calendar'[Date]) + TIME(8,0,0)
&&'Fact'[时间] < MAX('Calendar'[Date])+1+TIME(8,0,0)
))
如果统计月度产量,一般是按照统计月1号8点至次月1号8点的周期来统计,我们的表达式同样有效。季度产量,年度产量同理。
*PowerPivot工坊原创文章,转载请注明出处!
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。点击左下角“阅读原文”可直达云课堂。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”
长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯。欢迎小伙伴儿们转发分享~
阅读原文
Power Pivot工坊
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)