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只是绿色记录

这是我的解决方案:

  • Mu​​ltiRow 公式:创建新字段 ComboCount(或其他)作为 Int32,对于不存在的行为 0 或为空,按 TicketID 和类型分组,使用表达式 [Row-1:ComboCount]+1 .. . 这对每个组进行计数;我们需要每个组的第一个 topN,确保该组实际有那么多,并且不会超出 TopN.
  • [ComboCount] <= [TopN] 上过滤...排除超出 TopN
  • 之外的不必要的行
  • 总结:按 TicketID 和类型分组,执行 Max(ComboCount) ...如果任何组的此值小于 TopN,则应排除该组:
  • 将摘要加入到之前关于 TicketID 和类型的预摘要数据
  • 过滤 [Max_ComboCount] = [TopN] ...这将排除任何 ItemType 不符合 TopN
  • 的组

就是这样。从图片上看,这就是我的工作流程,以及基于类似于您的屏幕截图中的数据的数据结果: