用 Power Query 的 M 代码一键生成指定跨度期间的日期维度表(包含年度、半年、季度、月份、日等)

干财务分析,一个正规、全维度的“日历户口本”(日期维度表)是必备的基础设施,手动下拉太低效了。

我们直接用 Power Query 的 M 代码一键生成2024到 2028 年这个期间的日期维度表(包含年度、半年、季度、月份、日),如果你的分析时间跨度更大,可以直接在下面函数中调整期间。

👉 你的操作任务:

  1. 在 Excel 里点击顶部菜单栏的 “数据” -> “获取数据” -> “来自其他源” -> “空白查询”,这会帮你打开 Power Query 编辑器。
  2. 在弹出的窗口顶部点击 “高级编辑器”,把里面的代码全删掉,粘贴下面这段我写好的带注释的 M 代码,然后点击“完成”:
let
    // 1. 设定起始日期和结束日期 (这里以生成2024至2028年这个期间为例)
    StartDate = #date(2024, 1, 1),
    EndDate = #date(2028, 12, 31),
    
    // 2. 计算这两天之间总共有多少天
    Duration = Duration.Days(EndDate - StartDate) + 1,
    
    // 3. 生成一个连续的日期列表(从开始日期起,按1天递增)
    DateList = List.Dates(StartDate, Duration, #duration(1, 0, 0, 0)),
    
    // 4. 将纯粹的列表转换成可以加列的表格
    ConvertedToTable = Table.FromList(DateList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    
    // 5. 修改列名,并强制规定它的数据类型必须是"日期"
    RenamedColumns = Table.RenameColumns(ConvertedToTable,{{"Column1", "日期"}}),
    ChangedType = Table.TransformColumnTypes(RenamedColumns,{{"日期", type date}}),
    
    // 6. 添加各个时间维度的列 (年、月、日、季度、半年)
    AddYear = Table.AddColumn(ChangedType, "年度", each Date.Year([日期]), Int64.Type),
    AddMonth = Table.AddColumn(AddYear, "月份", each Date.Month([日期]), Int64.Type),
    AddDay = Table.AddColumn(AddMonth, "日", each Date.Day([日期]), Int64.Type),
    AddQuarter = Table.AddColumn(AddDay, "季度", each "Q" & Text.From(Date.QuarterOfYear([日期])), type text),
    AddHalfYear = Table.AddColumn(AddQuarter, "半年", each if Date.Month([日期]) <= 6 then "上半年" else "下半年", type text)
in
    AddHalfYear
图片[1]-用 Power Query 的 M 代码一键生成指定跨度期间的日期维度表(包含年度、半年、季度、月份、日等)-小微之家 | 汪斌带你开公司 | 老汪洞察

把这个查询命名为 t_Date,然后点击左上角的“关闭并上载至…”,勾选 “仅创建连接” 和 “将此数据添加到数据模型”,就可以在数据模型和其他带日期的事实表建立一对多的关系连接了。

生成这个包含 5年的全维度的日期表并装进模型后,来这里留言哦,搞定了吗?

© 版权声明
THE END
喜欢就支持一下吧
点赞685 分享
相关推荐
评论 抢沙发

请登录后发表评论

    暂无评论内容