项目实战案例:将时间段按月拆分并计算各月时长,这个有点儿难,但很有用!
今年下半年开始,一直在一个数据分析的项目上,所以实在是比较忙,不过,在项目中总是能接触到最前线业务人员的想法和需求,而去满足这些需求的过程,也许是最好的锻炼机会,等项目上线了,得好好抽空做个总结,与大家分享。
下面就是项目中碰到的一个小问题中的一个关键点,独立摘出来做成案例:将一个时间段(可能跨年、跨月等)按月份进行拆分,算出其在每个月里的时长(最终用于计算某个指标的各月的平均作业效率)。
核心步骤添加自定义列通过List.Generate函数来完成,核心思想其实很简单:
从开始时间起,碰到月底就截断,然后用月底的时间点加上1秒得到下月的起点作为新的开始时间,直到结束时间为止。
——对于其中每个参数的赋值要仔细地琢磨一下。
具体代码如下:
= 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语言及函数都非常有帮助!
赞 (0)