首页 > 解决方案 > Alteryx 选择前 N 条记录,其中 N=该组的值

问题描述

我正在修复 Alteryx。我正在尝试选择前 N 行,其中 N=该分区的单元格值。业务问题是:

“我们需要知道,在我们的订单 (TicketIDs) 中,那些至少有 1 种折扣商品类型和饮料和面的组合。”

SQL 查询会将这个表连接到自身并分区以获取该TopNtoIncludeInItems行,但是,我似乎无法在 Alteryx 中找到执行此操作的方法。我已经尝试过社区,但问题已经得到解答。

换句话说,这样选择:

<pseudocode>

for each (TicketID)
    for each(Type)
        select top(TopNtoIncludeInItems for this.TicketID) 
    next
next

</pseudocode>

或者确实只选择绿色记录

alteryx 屏风

标签: partitioningalteryx

解决方案


这是我的解决方案:

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

就是这样。从图片上看,这就是我的工作流程的样子,以及基于与屏幕截图中类似的数据的数据结果: 在此处输入图像描述


推荐阅读