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

如何在Power BI DAX中生成日期列表并存储用于后续公式

在Power BI中用DAX生成指定年份偏移的日期列表

要实现你描述的需求——根据日期列(Column1)和年份偏移数(Column2)生成对应日期列表并存储为表/列表,可以使用DAX的GENERATE、GENERATESERIES和SELECTCOLUMNS函数组合完成,以下是具体实现方案:

方案1:生成展开式日期表(推荐用于后续关联分析)

这个方案会将原表的每一行与生成的日期一一对应,生成一个扁平化的表,方便后续在报表或其他DAX公式中直接使用:

Generated Dates = 
GENERATE(
    '你的表名', -- 替换为实际表名
    VAR BaseDate = '你的表名'[Column1]
    VAR YearOffset = '你的表名'[Column2]
    RETURN
    ADDCOLUMNS(
        -- 根据偏移数生成序列:偏移为0时只生成0,否则生成1到偏移数的序列
        IF(YearOffset = 0, ROW("Offset", 0), GENERATESERIES(1, YearOffset, 1)),
        "Generated Date",
        -- 计算对应日期:偏移为0时保留原日期,否则年份减去序列值
        IF(
            YearOffset = 0,
            BaseDate,
            DATE(YEAR(BaseDate) - [Offset], MONTH(BaseDate), DAY(BaseDate))
        )
    )
)

效果验证

  • 当Column1=10/04/2024,Column2=1时,表中会新增一行Generated Date=10/04/2023
  • 当Column1=10/04/2023,Column2=0时,表中会新增一行Generated Date=10/04/2023
  • 当Column1=10/04/2026,Column2=3时,表中会新增三行,对应日期为10/04/2025、10/04/2024、10/04/2023

方案2:生成带日期列表的表(单行列存储多个日期)

如果需要在原表的每一行中存储对应的日期列表(表值列),可以使用以下公式:

Date List per Row = 
ADDCOLUMNS(
    '你的表名', -- 替换为实际表名
    "Date List",
    VAR BaseDate = '你的表名'[Column1]
    VAR YearOffset = '你的表名'[Column2]
    RETURN
    IF(
        YearOffset = 0,
        {BaseDate}, -- 偏移为0时返回单元素列表
        -- 偏移大于0时,生成对应年份偏移的日期列表
        SELECTCOLUMNS(
            GENERATESERIES(1, YearOffset, 1),
            "Date", DATE(YEAR(BaseDate) - [Value], MONTH(BaseDate), DAY(BaseDate))
        )
    )
)

使用方式

生成的Date List列是表值类型,你可以在其他DAX公式中通过RELATEDTABLE('Date List per Row'[Date List])引用该列表,或用CONCATENATEX('Date List per Row'[Date List], [Date], ", ")将列表转为逗号分隔的字符串查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:30:38