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

Power BI:按日期排序去空白,实现表格用户与日期合并为单行

解决DAX多行数据转单行合并问题

问题场景

现有两张表table1和table2,需要将table2中同一prov下的所有用户及其对应日期整合为单行结果,但使用逐行判断的DAX公式后,生成了多行带空白的表格,无法达到预期效果。

问题原因

之前的DAX公式是对table2的每一行进行判断,仅填充当前行xs匹配的日期列,其他列留空,因此会保留原表的所有行,导致结果出现多行空白。需要通过分组聚合的方式,将同一prov下的所有用户和日期提取到单行中。

解决方案

方案1:按xs固定匹配生成单行表

如果user和xs的对应关系固定(如user2对应x、user3对应xx等),可以直接使用LOOKUPVALUE结合SUMMARIZE生成目标表:

目标表 = 
SUMMARIZE(
    table2,
    table2[prov],
    "user1", LOOKUPVALUE(table2[user], table2[xs], "x"),
    "date1", LOOKUPVALUE(table2[date], table2[xs], "x"),
    "user2", LOOKUPVALUE(table2[user], table2[xs], "xx"),
    "date2", LOOKUPVALUE(table2[date], table2[xs], "xx"),
    "user3", LOOKUPVALUE(table2[user], table2[xs], "xxx"),
    "date3", LOOKUPVALUE(table2[date], table2[xs], "xxx"),
    "user4", LOOKUPVALUE(table2[user], table2[xs], "xxxx"),
    "date4", LOOKUPVALUE(table2[date], table2[xs], "xxxx")
)
  • SUMMARIZE按prov分组,每个prov生成一行结果
  • LOOKUPVALUE根据xs的固定值精准匹配对应的user和date,直接填充到对应列中,无空白行

方案2:按日期排序生成单行表

如果需要按日期从早到晚排列user1到user4,先给table2添加计算列生成排序序号:

日期排序序号 = RANKX(FILTER(table2, table2[prov] = EARLIER(table2[prov])), table2[date],, ASC, Dense)

再使用该序号生成目标表:

目标表(按日期排序) = 
SUMMARIZE(
    table2,
    table2[prov],
    "user1", LOOKUPVALUE(table2[user], table2[日期排序序号], 1),
    "date1", LOOKUPVALUE(table2[date], table2[日期排序序号], 1),
    "user2", LOOKUPVALUE(table2[user], table2[日期排序序号], 2),
    "date2", LOOKUPVALUE(table2[date], table2[日期排序序号], 2),
    "user3", LOOKUPVALUE(table2[user], table2[日期排序序号], 3),
    "date3", LOOKUPVALUE(table2[date], table2[日期排序序号], 3),
    "user4", LOOKUPVALUE(table2[user], table2[日期排序序号], 4),
    "date4", LOOKUPVALUE(table2[date], table2[日期排序序号], 4)
)
  • RANKX为每个prov下的行按日期升序生成1-4的连续序号
  • 后续通过序号匹配user和date,实现按日期排序的单行结果

效果验证

两种方案均可生成预期的单行表格,无空白行,所有用户和日期信息整合在同一行中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:24:55