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

如何在Power Query M中生成含指定年份完整周数的日历表?

解决方案:在Power Query中生成完整的年份-周数日历表

方法1:硬编码指定年份生成周数表

如果已经明确要覆盖的年份(比如2022、2023),可以直接创建年份列表并生成对应周数:

  1. 在Power BI中新建空白查询
  2. 打开高级编辑器,替换默认代码为以下M语言脚本:
let
    // 定义需要生成的年份列表
    TargetYears = {2022, 2023},
    // 将年份列表转成表,为每个年份添加1-52周的列表
    YearWithWeeks = Table.AddColumn(
        Table.FromList(TargetYears, Splitter.SplitByNothing(), {"年份"}),
        "周数",
        each List.Numbers(1, 52)
    ),
    // 展开周数列,把每个年份的周数拆成单独行
    FinalCalendar = Table.ExpandListColumn(YearWithWeeks, "周数")
in
    FinalCalendar

方法2:基于现有数据集的年份自动生成

如果现有数据集包含需要覆盖的年份(即使周数不全),可以提取其中的唯一年份再生成对应周数:

假设你的原始数据集名为原始数据,且包含年份字段,使用以下代码:

let
    // 提取原始数据里的所有唯一年份
    UniqueYears = List.Distinct(原始数据[年份]),
    // 转成表并添加周数列
    YearTable = Table.FromList(UniqueYears, Splitter.SplitByNothing(), {"年份"}),
    YearWithWeeks = Table.AddColumn(
        YearTable,
        "周数",
        each List.Numbers(1, 52)
    ),
    // 展开周数得到完整日历表
    FinalCalendar = Table.ExpandListColumn(YearWithWeeks, "周数")
in
    FinalCalendar

进阶:适配实际年份的周数(含53周的情况)

部分年份会有53周(比如2020年),可以通过判断年份最后一天的周数来动态调整生成的周数数量:

let
    TargetYears = {2022, 2023},
    YearWithWeeks = Table.AddColumn(
        Table.FromList(TargetYears, Splitter.SplitByNothing(), {"年份"}),
        "周数",
        each 
            let
                LastDay = #date([年份], 12, 31),
                TotalWeeks = Date.WeekOfYear(LastDay)
            in
                List.Numbers(1, TotalWeeks)
    ),
    FinalCalendar = Table.ExpandListColumn(YearWithWeeks, "周数")
in
    FinalCalendar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:33:24