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

如何用Power BI DAX生成工具历史检测日期行(含循环逻辑)

工具检测历史记录生成的DAX实现

需求说明

原始工具检测表(每年检测一次,日期格式:日-月-年):

ToolNumber  InspectionDate  PurchaseDate
1           10-1-2024       10-3-2024
2           8-3-2024        12-11-2023
3           12-1-2024       1-7-2019

需生成包含历史检测记录的表格,规则如下:

  • 历史检测日期从2018年开始生成
  • 基于当前检测日期逐年往前推算,若推算后的日期不早于采购日期,则新增该行历史记录;若早于采购日期则停止生成

最终目标表格:

ToolNumber  InspectionDate  PurchaseDate
1           10-1-2024       10-3-2024
2           8-3-2024        12-11-2023
3           12-1-2024       1-7-2019
3           12-1-2023       1-7-2019
3           12-1-2022       1-7-2019
3           12-1-2021       1-7-2019
3           12-1-2020       1-7-2019

DAX实现代码

创建计算表,将代码中的'原始工具检测表'替换为你的真实表名即可:

工具检测历史表 = 
VAR BaseTable = '原始工具检测表'
VAR MinYear = 2018
RETURN
GENERATE(
    BaseTable,
    VAR CurrentInspectDate = [InspectionDate]
    VAR CurrentPurchaseDate = [PurchaseDate]
    VAR StartYear = YEAR(CurrentInspectDate)
    // 生成有效年份序列:从当前检测年份倒推至2018,且对应检测日期不早于采购日期
    VAR ValidYears = 
        FILTER(
            GENERATESERIES(StartYear, MinYear, -1),
            DATE([Value], MONTH(CurrentInspectDate), DAY(CurrentInspectDate)) >= CurrentPurchaseDate
        )
    RETURN
    // 转换为目标表结构
    SELECTCOLUMNS(
        ValidYears,
        "ToolNumber", [ToolNumber],
        "InspectionDate", DATE([Value], MONTH(CurrentInspectDate), DAY(CurrentInspectDate)),
        "PurchaseDate", CurrentPurchaseDate
    )
)

代码逻辑说明

  • GENERATE:遍历原始表的每一行,为每个工具生成对应的历史记录集合,模拟循环遍历逻辑
  • GENERATESERIES:生成从当前检测年份到2018年的倒序年份序列,替代传统循环的“逐年往前推”操作
  • FILTER:筛选出符合条件的年份——确保生成的历史检测日期(月日与当前检测日期一致,年份替换为序列值)不早于采购日期
  • SELECTCOLUMNS:将筛选后的年份序列转换为目标表结构,保留工具编号和采购日期,生成对应的历史检测日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:27:16