前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >项目实战案例:将时间段按月拆分并计算各月时长,这个有点儿难,但很有用!

项目实战案例:将时间段按月拆分并计算各月时长,这个有点儿难,但很有用!

作者头像
大海Power
发布2021-08-31 10:38:15
6530
发布2021-08-31 10:38:15
举报
文章被收录于专栏:用户8950297的专栏

今年下半年开始,一直在一个数据分析的项目上,所以实在是比较忙,不过,在项目中总是能接触到最前线业务人员的想法和需求,而去满足这些需求的过程,也许是最好的锻炼机会,等项目上线了,得好好抽空做个总结,与大家分享。

下面就是项目中碰到的一个小问题中的一个关键点,独立摘出来做成案例:将一个时间段(可能跨年、跨月等)按月份进行拆分,算出其在每个月里的时长(最终用于计算某个指标的各月的平均作业效率)。

核心步骤添加自定义列通过List.Generate函数来完成,核心思想其实很简单:

从开始时间起,碰到月底就截断,然后用月底的时间点加上1秒得到下月的起点作为新的开始时间,直到结束时间为止。

——对于其中每个参数的赋值要仔细地琢磨一下。

具体代码如下:

代码语言:javascript
复制
= Table.AddColumn(更改的类型, "自定义", 
(t)=> List.Generate(
   ()=>[x=t[开始时间],y=Date.EndOfMonth(t[开始时间])],
   each [x]
   each [x=[y], y = Date.EndOfMonth([y]+#duration(0,0,0,1))],
   each [开始= [x], 结束 = if [y] >t[结束时间] 
                          then t[结束时间] else [y],
                    间隔 =Duration.TotalDays( 结束 - 开始)]
))

关于List.Generate函数的用法,前面有文章讲到了,比如:

List.Generate强大到看不懂?把这几个例子练一练就行!》,可以再回去看一下,那里面的例子也是非常的经典,对于理解List.Generate函数,乃至Power Query M语言及函数都非常有帮助!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档