You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power Query中生成两日期间每月首日的列表

在Power Query中高效生成日期区间内每月首日并展开行

直接生成每月首日序列而非全日期列表,能大幅减少计算量,适合大数据量场景。以下是具体实现步骤:

步骤1:添加自定义列生成每月首日列表

在Power Query编辑器中,点击「添加列」→「自定义列」,输入以下M语言公式:

List.Generate(
    () => Date.StartOfMonth([StartOfDate]),
    each _ <= Date.StartOfMonth([EndOfDate]),
    each Date.AddMonths(_, 1)
)

这个公式的逻辑:

  • 从StartOfDate所在月份的首日开始生成序列
  • 每次迭代生成下一个月的首日,直到不超过EndOfDate所在月份的首日
  • 直接按月份粒度生成数据,完全避免遍历区间内的每一天

步骤2:过滤不在区间内的首日(可选)

如果你的需求是仅保留首日落在StartOfDate和EndOfDate之间的日期(比如StartOfDate是2023-03-15时,过滤掉早于该日期的2023-03-01),可以在公式中加入过滤逻辑:

List.Select(
    List.Generate(
        () => Date.StartOfMonth([StartOfDate]),
        each _ <= Date.StartOfMonth([EndOfDate]),
        each Date.AddMonths(_, 1)
    ),
    each _ >= [StartOfDate] and _ <= [EndOfDate]
)

步骤3:展开列表列

点击自定义列右侧的展开按钮,选择「展开到新行」即可完成行展开。

性能优势对比

  • 原全日期列表方法:跨1年的区间会生成365条数据
  • 新月度序列方法:仅生成12条数据,数据量压缩97%,大数据量下性能提升非常显著

内容的提问来源于stack exchange,提问作者Apple

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:42:41