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
相关产品推荐
相关产品推荐

