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:分组处理
- 进入Power Query编辑器,选中你的数据表
- 点击转换选项卡 → 分组依据,选择分组列(如
ItemID),操作选"所有行",新列命名为GroupedRows - 添加自定义列,输入以下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 )
- 展开自定义列,删除临时的
GroupedRows列
方法2:透视+逆透视(更简洁)
- 进入Power Query编辑器,选中数据表
- 点击转换选项卡 → 透视列,选择
Version Number作为透视列,Date作为值列,聚合方式选"不要聚合" - 添加自定义列:
= if [Version_1] = null then [Version_2] else [Version_1]
- 选中
Version_1、Version_2列,点击转换 → 逆透视列 → 逆透视其他列,调整列名后加载回Power BI
内容的提问来源于stack exchange,提问作者Vishal Dubey
相关产品推荐
相关产品推荐

