PowerBI用DAX/M query实现去重并判断SOID多VDM访问权限
EmpDetailsail表需求实现方案
以下分别提供Power Query M语言和DAX两种实现方式:
方法一:Power Query M语言实现(推荐用于ETL清洗阶段)
步骤1:删除完全重复条目
导入原始表后直接调用去重方法即可删除AA002的重复行,M代码如下:
// 替换Source为你实际的数据源引用 let Source = Excel.CurrentWorkbook(){[Name="EmpDetailsail"]}[Content], // 移除完全重复的行,仅保留唯一行 RemoveDuplicates = Table.Distinct(Source) in RemoveDuplicates
步骤2:新增Access计算列
在上一步的基础上添加自定义列,统计每个SOID对应的VDM数量并输出判断结果,完整M代码如下:
let Source = Excel.CurrentWorkbook(){[Name="EmpDetailsail"]}[Content], RemoveDuplicates = Table.Distinct(Source), // 新增Access列 AddAccessColumn = Table.AddColumn(RemoveDuplicates, "Access", (current) => let SOIDMatchCount = Table.RowCount(Table.SelectRows(RemoveDuplicates, each [SOID] = current[SOID])) in if SOIDMatchCount > 1 then "YES" else "NO" ) in AddAccessColumn
方法二:DAX实现(适用于数据模型层处理)
步骤1:生成去重后的计算表
在Power BI/Excel数据模型中新建计算表,代码如下:
去重后表 = DISTINCT('EmpDetailsail')
步骤2:新增Access计算列
在刚生成的去重后表中新建计算列,代码如下:
Access = VAR VDMCount = CALCULATE(COUNTROWS('去重后表'), ALLEXCEPT('去重后表', '去重后表'[SOID])) RETURN IF(VDMCount > 1, "YES", "NO")
内容的提问来源于stack exchange,提问作者Roger_123
相关产品推荐
相关产品推荐

