Alteryx选择前N条记录,其中N =该组上的值

时间:2018-08-16 06:37:29

标签: partitioning alteryx

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

  

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

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

换句话说,选择:

<pseudocode>

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

</pseudocode>

或者实际上只是选择绿色记录

alteryx screenie

1 个答案:

答案 0 :(得分:1)

这是我的解决方法:

  • MultiRow公式:使用Int32创建新字段ComboCount(或其他内容)为Int32,对于不存在的行,按TicketID和Type分组,并使用表达式[Row-1:ComboCount]+1创建新字段{0或为空...计算每组;我们需要每个组的第一个 topN ,以确保该组实际有那么多,并且不会超出 TopN
  • [ComboCount] <= [TopN]的过滤器...排除了 TopN
  • 之外的不必要行
  • 汇总:按票证ID和类型分组,进行Max(ComboCount)...如果该值小于任何组的 TopN ,则应排除该组:
  • 将摘要加入到有关票证ID和类型的早期摘要数据中
  • [Max_ComboCount] = [TopN]上的筛选器... ...不包括任何ItemType小于 TopN
  • 的组

就是这样。从图形上来说,这是我的工作流程,以及基于类似于屏幕截图中数据的数据结果: enter image description here