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

Power BI中用DAX/Power Query填充Version_1空白日期需求

解决方案:Power BI 版本日期补全

DAX 计算列方案

假设你的数据表名为DataTable,且存在用于关联同一项目不同版本的分组列(如ItemID),添加以下DAX计算列:

Corrected Date = 
VAR Version2Date = CALCULATE(
    MAX(DataTable[Date]),
    ALLEXCEPT(DataTable, DataTable[ItemID]),
    DataTable[Version Number] = "Version_2"
)
RETURN
IF(
    DataTable[Version Number] = "Version_1" && ISBLANK(DataTable[Date]),
    Version2Date,
    DataTable[Date]
)

逻辑说明

  • 用CALCULATE结合ALLEXCEPT,获取同一分组下Version_2的日期值
  • 判断当前行是否为Version_1且日期为空,满足则替换为Version_2的日期,否则保留原日期

Power Query 方案

方法1:分组处理

  1. 进入Power Query编辑器,选中你的数据表
  2. 点击转换选项卡 → 分组依据,选择分组列(如ItemID),操作选"所有行",新列命名为GroupedRows
  3. 添加自定义列,输入以下M代码:
= Table.TransformRows([GroupedRows], (row) => 
    if row[Version Number] = "Version_1" and row[Date] = null then
        let
            Version2Date = List.First(List.Select([GroupedRows][Date], (d, idx) => [GroupedRows][Version Number]{idx} = "Version_2" and d <> null))
        in
            Record.ReplaceFields(row, {"Date", Version2Date})
    else
        row
)
  1. 展开自定义列,删除临时的GroupedRows列

方法2:透视+逆透视(更简洁)

  1. 进入Power Query编辑器,选中数据表
  2. 点击转换选项卡 → 透视列,选择Version Number作为透视列,Date作为值列,聚合方式选"不要聚合"
  3. 添加自定义列:
= if [Version_1] = null then [Version_2] else [Version_1]
  1. 选中Version_1、Version_2列,点击转换 → 逆透视列 → 逆透视其他列,调整列名后加载回Power BI

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:27:40