【问题标题】:Alteryx to select top N records where N=a value on that groupAlteryx 选择前 N 条记录,其中 N=该组的值
【发布时间】:2019-01-23 01:18:39
【问题描述】:

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

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

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

换句话说,这样选择:

<pseudocode>

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

</pseudocode>

或者确实只选择绿色记录

【问题讨论】:

    标签: partitioning alteryx


    【解决方案1】:

    这是我的解决方案:

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

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

    【讨论】:

    • 如果您链接到 Alteryx 社区中的问题,我也可以在那里回复此处显示的解决方案副本。
    • 运行良好。一次很棒的学习经历。我欠你的。我只需要完成第二步即可获得所需的结果。请求的链接https://community.alteryx.com/t5/Alteryx-Designer-Discussions/Partitioning-by-Once-column-over-potential-multiple-row/m-p/197356#M50310
    猜你喜欢
    • 2015-03-23
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2020-06-14
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多