Power BI 中计算最后一天的定式

PowerBI战友联盟

共 1774字,需浏览 4分钟

 · 2021-04-20

PowerBI 的体系已经基本完善,我们将重新思考和拆解其中的固定规律给到大家。我们将这些组合成为:定式,模式,模板。

对于一个点问题的固定求解过程,将形成定式

有人也可能成为技巧,我们将用定式一词。

日期明确规则

【规则】任何一个有意义的图表或表格,都必须给出明确的日期范围。

这个规则非常好理解:

  • 桌子的销售额是 10000;

  • 椅子的销售额是 2000;

  • 电脑的销售额是 20000。

以上说法全部错误。

在一个表述中,如果不包括日期范围,都是一个错误的表述,如果没有日期范围的限定,那就失去了有效的必要信息。

所以,每个 Power BI 报表的每一页,每一个图都必然在一个预先限定的日期范围内。

日期区间定式

我们此前讲过关于日期方面的理解,这里可以再简单强调:

任何日期区间都可以被理解为:日期线段。由左右日期端点加持的连续日期序列。

那么,对于某一天的日期点来说,它是左端点和右端点重合的线段。

时间智能函数,其作用就在于将这里所描述的日期区间线段,变换到一个目标所期望的状态。可以参考此前文章。

业务问题

在业务实操中,我们往往需要得到这样的效果:

  • 不做任何日期区间的指定,有一个默认日期区间。

  • 做了日期区间的选择,可以得到一个日期区间。

不论用户如何操作,默认日期区间与自行设置日期区间的综合效果必须符合直觉结果。

最后一天定式

若上下文环境有选择,要获得所选日期区间的最后一天,如下:

MAX( 'Calendar'[Date] )

若上下文环境无选择,考虑到一个重要规则:

对于日期表,若包含某日期,则应包括这一日期所在的全年日期。

那么,以上计算永远会返回日期表的最后一日,是不正确的。

则获得最后一天的默认计算,如下:

MAXX( ALL( 'Order'[OrderDate] ) , [OrderDate] )

其中,'Order'[OrderDate] 为表征业务中可反应最后一日的字段。

综合上述情况,若同时兼顾用户选择以及业务实际发生的最后一日,则有:

MIN( 
MAX( 'Calendar'[Date] ) ,
MAXX( ALL( 'Order'[OrderDate] ) , [OrderDate] )
)

它表示从两个日期中获取比较小的那个,以满足:

  • 在尚未发生业务的日期中,总会得到发生业务的最后日期点;

  • 在已经发生业务的日期中,总会得到日期区间的右端点日期,该日期一定是小于发生业务的最后日期点的。

将日期区间线段赋给计算

以最后日期的指标计算为例,如下:

Case.KPI.PreviousDay = 

VAR vDatePoint =
MIN(
MAX( 'Calendar'[Date] ) ,
MAXX( ALL( 'Order'[OrderDate] ) , [OrderDate] )
)

RETURN

CALCULATE( [KPI] , TREATAS( { vDatePoint } , 'Calendar'[Date] ) )

可以体会这个思路中所有的思想和定式:

  • 日期表的线段思维

  • 最后一日定式

    • 尚未发生业务的日期

    • 已经发生业务的日期

  • 形成日期区间线段

  • 赋给指标计算

总结

本文正式提出定式思维,并展示了整个思维过程以及提取定式的过程,未来给大家带来更多固定套路的定式。

另外,如果可以通过纯文字表述讲清楚以及读者可以理解清楚,表示您已经可以在脑中构建整个业务逻辑,这是熟练操控 Power BI 建立模型的重要标志。

让数据真正成为你的力量

Create value through simple and easy with fun by PowerBI

Excel BI | DAX Pro | DAX 权威指南 | 线下VIP学习

扫码与PBI精英一起学习,验证码:data2021

PowerBI MVP 带你正确而高效地学习 PowerBI
点击“阅读原文”,即刻开始

浏览 81
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报