PQ-日期区间生成序列?试试这两种方法。

2021-08-30 16:09:20 浏览数 (2)

小勤:Power Query里按日期区间生成序列怎么会出错啊?

大海:简单的列表构造方法是不支持生成日期序列的。

小勤:那要怎么办?

大海:其实方法很多,比较常见的一种是可以先将日期转为数字,生成列表后,再转回日期,公式如下:

代码语言:javascript复制
= List.Transform(
    {Number.From([开始日期])..Number.From([结束日期])},
    Date.From
 )

如下图所示:

小勤:这几个函数结合倒不复杂,比较复杂一点儿的List.Transform函数你也在文章《PQ-M及函数:批量处理的利器——列表转换函数(List.Transform)及A股数据批量抓取方法》里讲过。那还有其他方法?

大海:对的。还有一个函数是List.Dates可以生成日期列表,但要配合Duration相关的时间区间函数来使用,因为List.Dates需要提供开始日期、天数以及时间间隔,而不是直接的开始时间和结束时间,公式如下:

代码语言:javascript复制
= List.Dates(
    [开始日期],
    Duration.TotalDays([结束日期]-[开始日期]) 1,
    #duration(1,0,0,0)
  )

如下图所示:

小勤:理解了,实际就是先用开始和结束日期求出时间间隔,然后用Duration.TotalDays得到天数(当然还要加1)交给List.Dates去用。

大海:对的。PQ里的函数虽然多,但通常并不需要太多很难的技巧性运用。

0 人点赞