Power BI中基于拼接列筛选去重并标记重复/非重复记录的DAX需求
解决方案
一、一步生成重复标记列
不用先计算重复次数再判断,直接写DAX计算列就能完成标记:
Duplicate_Flag = IF( CALCULATE( COUNT('SK-RAW'[Concat_UserName_UserInvoice]), ALLEXCEPT('SK-RAW','SK-RAW'[Concat_UserName_UserInvoice]) ) = 1, "Non-duplicates", "duplicates" )
这个公式用ALLEXCEPT锁定当前行的Concat_UserName_UserInvoice值上下文,统计该值的出现次数,等于1就标记为唯一,否则标记为重复,比你之前的两步写法更简洁高效。
二、实现唯一记录的切片器筛选
有两种简单方式:
- 直接用上面生成的
Duplicate_Flag列创建切片器,选择Non-duplicates就能筛选出仅出现一次的记录 - 如果需要单独生成唯一值列表做切片器,创建一张计算表:
Unique_Concat_List = SUMMARIZE( FILTER( 'SK-RAW', CALCULATE( COUNT('SK-RAW'[Concat_UserName_UserInvoice]), ALLEXCEPT('SK-RAW','SK-RAW'[Concat_UserName_UserInvoice]) ) = 1 ), 'SK-RAW'[Concat_UserName_UserInvoice] )
用这个计算表的列做切片器,筛选后就能只显示对应唯一值的记录行。
补充:基于现有重复次数列的替代写法
如果你想保留之前的Count_duplicates列,也可以直接用它来生成标记列:
Duplicate_Flag = IF([Count_duplicates] = 1, "Non-duplicates", "duplicates")
内容的提问来源于stack exchange,提问作者Ishaq khan
相关产品推荐
相关产品推荐

