在查询编辑器 Power BI 中删除基于具有条件的多列的重复值
Remove duplicates values based on multiple column with a condition in query editor Power BI
我是 power bi 的新手,需要您的帮助来解决我面临的以下问题。
基本上我考虑了以下三列:
问题:我想根据条件删除上面table的重复值“
"Time" 、"ID" 的相等值和 "Time spent" 的绝对差小于或等于 1"
正如您在图像中看到的那样,突出显示的行属于此类。
我想根据条件删除以下行。
问题:我想根据条件删除上面 table 中的重复值“
"Time" 、"ID" 的相等值和 "Time spent" 的绝对差小于或等于 1"
正如您在图像中看到的那样,突出显示的行属于此类。
我想根据条件删除以下行。
我可以在 excel 中执行此操作,方法是使用公式 =IF(AND(A3=A2,B3=B2,ABS(F3-F2)<1),"problem",0)
创建第四列,然后过滤掉标记为 problem 的行。请帮忙!!
此致
鲯鳅鱼
您可以通过在 "duplicate" 值列表中取最大值或最小值,从每组唯一的行中选择一个具有代表性的 [Time Spent]
值。这是此类自定义列的公式,我将其称为 [Min Time]
:
= List.Min(
Table.SelectRows(#"Previous Step",
(C) => (C[Time] = [Time] and
C[ID] = [ID] and
Number.Abs(C[Time Spent] - [Time Spent]) < 1)
)[Time Spent])
拥有此自定义列后,您可以按 [Time]
、[ID]
和 [Min Time]
分组以汇总重复项,然后将 [Min Time]
列重命名为[Time Spent]
.
我敢打赌@Alexis Olson 的建议很管用,但既然你特别提到了 Query Editor
,我会这样做:
- 像下面这样加载你的数据,并接受在
Changed Type
: 下所做的更改
不用担心 Query Settings
下的其他步骤。我们最终会解决这个问题。
- Select
Add Column
然后点击Index Column
,这样你就得到了这个:
- Select
Add Column
,点击Custom Column
,在出现的对话框中插入这个小公式Table.AddColumn(#"Added Index", "Custom", each #"Added Index"[Time Spent]{[Index]}-#"Added Index"[Time Spent]{[Index]-1})
:
- 单击
OK
,并确保您收到以下内容:
- 我认为这一步有点奇怪,但您必须在列中单击 'Table':
- 您将在第一行收到一条错误消息,但您可以通过右键单击该列并单击
Remove Errors
: 将其删除
- 现在您可以单击自定义列中的下拉菜单,select 数字过滤器和
Does Not Equal
- 并从对话框的下拉菜单中插入 0,或 select0:
- 就是这样,现在应该过滤掉您需要的号码:
但是请注意,此过程是有代价的,因为您在索引的第一步中丢失了第一个值。如果其余部分是您可以使用的,我可以看看我们是否也可以修复最后一小部分。
我是 power bi 的新手,需要您的帮助来解决我面临的以下问题。
基本上我考虑了以下三列:
问题:我想根据条件删除上面table的重复值“ "Time" 、"ID" 的相等值和 "Time spent" 的绝对差小于或等于 1" 正如您在图像中看到的那样,突出显示的行属于此类。
我想根据条件删除以下行。
问题:我想根据条件删除上面 table 中的重复值“ "Time" 、"ID" 的相等值和 "Time spent" 的绝对差小于或等于 1" 正如您在图像中看到的那样,突出显示的行属于此类。
我想根据条件删除以下行。
我可以在 excel 中执行此操作,方法是使用公式 =IF(AND(A3=A2,B3=B2,ABS(F3-F2)<1),"problem",0)
创建第四列,然后过滤掉标记为 problem 的行。请帮忙!!
此致
鲯鳅鱼
您可以通过在 "duplicate" 值列表中取最大值或最小值,从每组唯一的行中选择一个具有代表性的 [Time Spent]
值。这是此类自定义列的公式,我将其称为 [Min Time]
:
= List.Min(
Table.SelectRows(#"Previous Step",
(C) => (C[Time] = [Time] and
C[ID] = [ID] and
Number.Abs(C[Time Spent] - [Time Spent]) < 1)
)[Time Spent])
拥有此自定义列后,您可以按 [Time]
、[ID]
和 [Min Time]
分组以汇总重复项,然后将 [Min Time]
列重命名为[Time Spent]
.
我敢打赌@Alexis Olson 的建议很管用,但既然你特别提到了 Query Editor
,我会这样做:
- 像下面这样加载你的数据,并接受在
Changed Type
: 下所做的更改
不用担心 Query Settings
下的其他步骤。我们最终会解决这个问题。
- Select
Add Column
然后点击Index Column
,这样你就得到了这个:
- Select
Add Column
,点击Custom Column
,在出现的对话框中插入这个小公式Table.AddColumn(#"Added Index", "Custom", each #"Added Index"[Time Spent]{[Index]}-#"Added Index"[Time Spent]{[Index]-1})
:
- 单击
OK
,并确保您收到以下内容:
- 我认为这一步有点奇怪,但您必须在列中单击 'Table':
- 您将在第一行收到一条错误消息,但您可以通过右键单击该列并单击
Remove Errors
: 将其删除
- 现在您可以单击自定义列中的下拉菜单,select 数字过滤器和
Does Not Equal
- 并从对话框的下拉菜单中插入 0,或 select0:
- 就是这样,现在应该过滤掉您需要的号码:
但是请注意,此过程是有代价的,因为您在索引的第一步中丢失了第一个值。如果其余部分是您可以使用的,我可以看看我们是否也可以修复最后一小部分。