Alteryx 到 select 前 N 条记录,其中 N=该组的值
Alteryx to select top N records where N=a value on that group
我正在修复 Alteryx。我正在尝试 select 前 N 行,其中 N= 该分区的单元格值。业务问题是:
"We need to know, out of our orders (TicketIDs), those that have
least 1 combination of Type of discount item AND drink AND side."
SQL 查询会将此 table 加入自身并分区以获得该行的 TopNtoIncludeInItems
,但是,我似乎无法找到一种方法来做这在 Alteryx 中。我试过社区,但问题已经得到解答。
换句话说,select因此:
<pseudocode>
for each (TicketID)
for each(Type)
select top(TopNtoIncludeInItems for this.TicketID)
next
next
</pseudocode>
或者确实select只是绿色记录
这是我的解决方案:
- MultiRow 公式:创建新字段
ComboCount
(或其他)作为 Int32,对于不存在的行为 0 或为空,按 TicketID 和类型分组,使用表达式 [Row-1:ComboCount]+1
.. . 这对每个组进行计数;我们需要每个组的第一个 topN,确保该组实际有那么多,并且不会超出 TopN.
- 在
[ComboCount] <= [TopN]
上过滤...排除超出 TopN 之外的不必要的行
- 总结:按 TicketID 和类型分组,执行 Max(ComboCount) ...如果任何组的此值小于 TopN,则应排除该组:
- 将摘要加入到之前关于 TicketID 和类型的预摘要数据
- 过滤
[Max_ComboCount] = [TopN]
...这将排除任何 ItemType 不符合 TopN 的组
就是这样。从图片上看,这就是我的工作流程,以及基于类似于您的屏幕截图中的数据的数据结果:
我正在修复 Alteryx。我正在尝试 select 前 N 行,其中 N= 该分区的单元格值。业务问题是:
"We need to know, out of our orders (TicketIDs), those that have least 1 combination of Type of discount item AND drink AND side."
SQL 查询会将此 table 加入自身并分区以获得该行的 TopNtoIncludeInItems
,但是,我似乎无法找到一种方法来做这在 Alteryx 中。我试过社区,但问题已经得到解答。
换句话说,select因此:
<pseudocode>
for each (TicketID)
for each(Type)
select top(TopNtoIncludeInItems for this.TicketID)
next
next
</pseudocode>
或者确实select只是绿色记录
这是我的解决方案:
- MultiRow 公式:创建新字段
ComboCount
(或其他)作为 Int32,对于不存在的行为 0 或为空,按 TicketID 和类型分组,使用表达式[Row-1:ComboCount]+1
.. . 这对每个组进行计数;我们需要每个组的第一个 topN,确保该组实际有那么多,并且不会超出 TopN. - 在
[ComboCount] <= [TopN]
上过滤...排除超出 TopN 之外的不必要的行
- 总结:按 TicketID 和类型分组,执行 Max(ComboCount) ...如果任何组的此值小于 TopN,则应排除该组:
- 将摘要加入到之前关于 TicketID 和类型的预摘要数据
- 过滤
[Max_ComboCount] = [TopN]
...这将排除任何 ItemType 不符合 TopN 的组
就是这样。从图片上看,这就是我的工作流程,以及基于类似于您的屏幕截图中的数据的数据结果: