如何用DAX语言按日期去重生成租户记录的Distinct Key?
DAX实现租户记录重复日期标记需求
要实现同一Unit Number下首次出现的Defect Date标记为1、重复日期标记为0的需求,可以使用以下DAX表达式创建计算列:
Distinct Key = VAR CurrentUnit = '你的表名'[Unit Number] VAR CurrentDate = '你的表名'[Defect Date] VAR CurrentRowIndex = ROWINDEX('你的表名') VAR FirstMatchingRow = MINX( FILTER('你的表名', '你的表名'[Unit Number] = CurrentUnit && '你的表名'[Defect Date] = CurrentDate), ROWINDEX('你的表名') ) RETURN IF(CurrentRowIndex = FirstMatchingRow, 1, 0)
说明:
- 替换表达式中的
你的表名为实际的表格名称 ROWINDEX函数返回表格中每行的索引位置,能准确定位同一Unit Number+Defect Date组合的首次出现行- 通过
MINX筛选出当前单元+日期组合的最小行索引,将当前行索引与之对比,相等则标记为1,否则为0
如果你的环境不支持ROWINDEX函数(比如旧版本Power BI),可以改用基于唯一标识列的写法(假设表格有唯一ID列RecordID):
Distinct Key = VAR CurrentUnit = '你的表名'[Unit Number] VAR CurrentDate = '你的表名'[Defect Date] VAR CurrentID = '你的表名'[RecordID] VAR MinMatchingID = MINX( FILTER('你的表名', '你的表名'[Unit Number] = CurrentUnit && '你的表名'[Defect Date] = CurrentDate), '你的表名'[RecordID] ) RETURN IF(CurrentID = MinMatchingID, 1, 0)
为什么之前的方法没生效?
COUNTIF是Excel函数,DAX中没有直接对应的函数,单纯用CALCULATE+COUNTROWS计数无法定位首次出现的行DISTINCT函数仅返回唯一值集合,不能直接标记每行是否为首次出现
内容的提问来源于stack exchange,提问作者Jorine Yeoh
相关产品推荐
相关产品推荐

