欢迎光临散文网 会员登陆 & 注册

Power BI之DAX神功:答网友问11 使用期初和期末余额

2021-11-08 11:41 作者:孙兴华zz  | 我要投稿

一、网友问题

二、个人想法

遇到问题时,建议你化繁为简,利用自己能听懂的知识去测试。

我们可以使用通用语言来讲清楚这件事,例如卖土豆。一年365天,每个月都有第1天和最后1天,以每个月为例,每月第1天就是月初库存,每月最后1天就是月末库存。

三、只有一张表时计算期末库存

《DAX神功》第2卷第14回已经做出详解

表名:Sheet1

【度量值】平均值 = AVERAGE('Sheet1'[库存]) 

// 依据个人业务需求,使用Sum或Avearage函数,前者求和,后者求平均

【度量值】期末库存 = CALCULATE([平均值],LASTDATE('Sheet1'[日期]))

四、使用日期表时计算期末库存

《DAX神功》第2卷第14回已经做了证明,并不只有书中提到的方法,我们有更简单的方法,如无必要,不用LASTNONBLANK

表名:Sheet2

第1步:新建动态日期表

日期表 = ADDCOLUMNS( 

CALENDAR(FIRSTDATE('Sheet2'[日期]),LASTDATE('Sheet2'[日期])),

"年", YEAR ( [Date] ),

"季度", ROUNDUP(MONTH([Date])/3,0),

"月", MONTH([Date]),

"周", weeknum([Date]),

"年季度", year([date]) & "Q" & ROUNDUP(MONTH([Date])/3,0),

"年月", year([Date]) * 100 + MONTH([Date]),

"年周", year([Date]) * 100 + weeknum([Date]),

"星期几", WEEKDAY([Date]) 

)

第2步:建立关系

第3步:使用更简单的方法,避开LASTNONBLANK

因为1月31日在Sheet2中不存在,但是日期表是连续日期它有1月31日

所以:LASTDATE直接使用Sheet2表中的日期列

【度量值】平均值 = AVERAGE('Sheet2'[库存]) 

【度量值】期末库存 = CALCULATE([平均值],LASTDATE('Sheet2'[日期]))

我们使用一端日期表Date列筛选度量值,根据一端可以筛选多端的特性,不影响结果。

五、计算期初库存

既然我们期末库存使用了LastDate,期初库存同样可以使用FIRSTDATE

方法同上。

但是,在《火力全开》27.03我们讲了END与START系列函数,例如:

ENDOFMONTH(日期列)          // 返回当月最后一天

STARTOFMONTH(日期列)      // 返回当月第一天

其实,END与START系列和FIRSTDATE与LastDate系列都要注意使用日期表时,您月初那一天在多端表中是否存在的问题。

但是这两个系列最大的区别是:前者返回一天的,而后者返回每一天的。书中故意这样使用,目的就是让你看到二者区别。

表名:Sheet3

第1步:新建日期表(略),并建立关系

第2步:度量值如下,使用多端表日期列,避开复杂原理,一端日期表仍然可以筛选多端表生成的度量值

【度量值】平均值 = AVERAGE('Sheet3'[库存])

【度量值】期初库存 = CALCULATE([平均值],STARTOFMONTH('Sheet3'[日期]) )

【度量值】期末库存 = CALCULATE([平均值],LASTDATE('Sheet3'[日期]))

【度量值】增长 = DIVIDE([期末库存]-[期初库存],[期初库存])

解读:以1月份为例,1月1日无库存,1月2日就是1月份的月初库存50,月末是31,所以下降了38%。同时,你也看到了END与START系列和FIRSTDATE与LastDate系列的区别。

怎么用?根据自己的需求来选择,您只想显示那一天,END与START系列,所有日期都需要显示FIRSTDATE与LastDate系列。

其实方法也不只这些,《火力全开》笔记27.05 OPENINGBALANCE系列 计算月初库存,所谓的月初库存就是上月底最后一天的库存。

《孙兴华讲PowerBI火力全开》PowerBI必学课程

https://www.bilibili.com/video/BV1qa4y1H7wp

《DAX神功》文字版合集:

https://www.bilibili.com/read/readlist/rl442274

《DAX神功》视频版合集:

https://www.bilibili.com/video/BV1YE411E7p3

PowerBI(DAX函数)、PowerQuery(M函数)、Python办公自动化、Python爬虫、Python数据分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等

https://www.bilibili.com/read/cv10222110 

Power BI之DAX神功:答网友问11 使用期初和期末余额的评论 (共 条)

分享到微博请遵守国家法律