Power BI 标志重复
Power BI Flag Duplicates
我们的源数据可能会产生意外的重复项。我想创建一个流程,当 tables.
中存在重复时提醒我们
我使用的方法是将 id 添加到 table,然后再次添加 id 并计算 id,然后过滤视觉对象以获得 count > 1,这可以很好地标记记录重复。但是,我想设置警报,所以我想设置一个可以固定到仪表板并设置和警报的计算。努力设置正确的计算。
我的数据是这样的:
所以我希望看到 ID 3 被计为重复项。试过了,但它出错了 "EARLIER/EARLIEST refers to an earlier row context which doesn't exist"。
Measure = IF(
CALCULATE(
COUNTA(Table1[ID]),
FILTER(Table1, Table1[ID] = EARLIER(Table1[ID]))
)>1,
0,
1
)
谢谢!
这是一个 PowerQuery("M" 语言)解决方案。鉴于要检查的值位于名为 "IdList" 的列表中,下面的代码 returns 是一个名为 "DupList" 的新列表,仅包含重复值。
let
IdList = {3,4,3,6,7,3,8,9,4,10,11},
DupList = List.Distinct(List.Difference(IdList,List.Distinct(IdList)))
in
DupList
在示例中,DupList 等于 {3,4},这是唯一重复的值。现在您可以随心所欲地使用这个新列表了。
您可能知道,但是在 "M" 中您可以创建一个仅引用 table 的列名的列表:new_list = table_name[column_name]
希望对您有所帮助
您的代码作为计算列工作,但 EARLIER
在度量中的工作方式并不完全相同,因为没有固有的行上下文。如果您想要一个度量,请尝试将 EARLIER
换成 MAX
或其他聚合函数。
Measure = IF(
CALCULATE(
COUNTA(Table1[ID]),
FILTER(Table1, Table1[ID] = MAX(Table1[ID]))
)>1,
0,
1
)
这里有一些使用 DAX 的想法。您可以添加一个计算列,以标记重复项。像这样:
DuplicateFlag =
IF (
COUNTROWS ( FILTER ( 'Table1', 'Table1'[ID] = EARLIER ( Table1[ID] ) ) )
> 1,
1,
BLANK ()
)
然后您可以使用以下度量来计算重复项的数量并将其放入卡片视觉对象中。
Number of Duplicates = CALCULATE(DISTINCTCOUNT('Table1'[Name]),'Table1'[DuplicateFlag] = 1)
和这样的度量来显示矩阵视觉对象中每个重复项的计数。
count per duplicate = SUM([DuplicateFlag])
我们的源数据可能会产生意外的重复项。我想创建一个流程,当 tables.
中存在重复时提醒我们我使用的方法是将 id 添加到 table,然后再次添加 id 并计算 id,然后过滤视觉对象以获得 count > 1,这可以很好地标记记录重复。但是,我想设置警报,所以我想设置一个可以固定到仪表板并设置和警报的计算。努力设置正确的计算。
我的数据是这样的:
所以我希望看到 ID 3 被计为重复项。试过了,但它出错了 "EARLIER/EARLIEST refers to an earlier row context which doesn't exist"。
Measure = IF(
CALCULATE(
COUNTA(Table1[ID]),
FILTER(Table1, Table1[ID] = EARLIER(Table1[ID]))
)>1,
0,
1
)
谢谢!
这是一个 PowerQuery("M" 语言)解决方案。鉴于要检查的值位于名为 "IdList" 的列表中,下面的代码 returns 是一个名为 "DupList" 的新列表,仅包含重复值。
let
IdList = {3,4,3,6,7,3,8,9,4,10,11},
DupList = List.Distinct(List.Difference(IdList,List.Distinct(IdList)))
in
DupList
在示例中,DupList 等于 {3,4},这是唯一重复的值。现在您可以随心所欲地使用这个新列表了。
您可能知道,但是在 "M" 中您可以创建一个仅引用 table 的列名的列表:new_list = table_name[column_name]
希望对您有所帮助
您的代码作为计算列工作,但 EARLIER
在度量中的工作方式并不完全相同,因为没有固有的行上下文。如果您想要一个度量,请尝试将 EARLIER
换成 MAX
或其他聚合函数。
Measure = IF(
CALCULATE(
COUNTA(Table1[ID]),
FILTER(Table1, Table1[ID] = MAX(Table1[ID]))
)>1,
0,
1
)
这里有一些使用 DAX 的想法。您可以添加一个计算列,以标记重复项。像这样:
DuplicateFlag =
IF (
COUNTROWS ( FILTER ( 'Table1', 'Table1'[ID] = EARLIER ( Table1[ID] ) ) )
> 1,
1,
BLANK ()
)
然后您可以使用以下度量来计算重复项的数量并将其放入卡片视觉对象中。
Number of Duplicates = CALCULATE(DISTINCTCOUNT('Table1'[Name]),'Table1'[DuplicateFlag] = 1)
和这样的度量来显示矩阵视觉对象中每个重复项的计数。
count per duplicate = SUM([DuplicateFlag])