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

PowerBI技术问询:如何将两表ID列生成含独立列的新表

解决方法:创建两列对比表以展示重复/非重复ID

你之前用UNION的问题在于,这个函数是合并行,要求两个表的列结构(列名、数量)完全一致,所以当你传入列名不同的SELECTCOLUMNS结果时,它会把所有值堆叠到同一列中,不符合你的需求。

要生成包含两列ID的对比表,同时满足对比重复值、高亮重复项的需求,推荐以下两种方案:

方案1:生成带标记的唯一ID对比表(推荐)

这个方案先收集两个表的所有唯一ID,再分别标记每个ID是否存在于对应源表中,能清晰区分重复项(两列均有值)和非重复项(仅一列有值):

ID对比表 = 
VAR 所有唯一ID = DISTINCT(
    UNION(
        SELECTCOLUMNS(FAACD, "ID", [best_assignment]),
        SELECTCOLUMNS(FAACD_All, "ID", [doc_id])
    )
)
RETURN
ADDCOLUMNS(
    所有唯一ID,
    "FAACD的best_assignment", IF(COUNTROWS(FILTER(FAACD, [best_assignment] = [ID])) > 0, [ID], BLANK()),
    "FAACD_All的doc_id", IF(COUNTROWS(FILTER(FAACD_All, [doc_id] = [ID])) > 0, [ID], BLANK())
)

方案2:直接并排两列ID(不考虑行数匹配)

如果你只是单纯想把两个表的ID列直接并排显示,不处理行数差异(行数较少的表后续行留空),可以使用以下DAX:

并排ID表 = 
VAR 最大行数 = MAX(COUNTROWS(FAACD), COUNTROWS(FAACD_All))
VAR 索引表 = GENERATESERIES(1, 最大行数)
RETURN
SELECTCOLUMNS(
    索引表,
    "FAACD_ID", MAXX(TOPN([Value], FAACD, [best_assignment]), [best_assignment]),
    "FAACD_All_ID", MAXX(TOPN([Value], FAACD_All, [doc_id]), [doc_id])
)

注意事项

  • 方案1更贴合你的核心需求,它通过汇总所有ID并标记存在情况,能直观展示重复和非重复项。
  • 方案2的行数由两个源表中较大的行数决定,ID顺序取决于源表的默认排序规则,若源表存在重复ID,结果可能出现重复值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:01:45