You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Presto SQL中Unnest操作如何限制仅展开100条e_id数据?

如何在Presto的UNNEST操作中限制仅展开100个e_id值

当然可以限制,这里提供两种实用的实现方式:

方法一:截断数组后再执行UNNEST

直接使用Presto的slice函数截取数组e的前100个元素,再进行UNNEST,这样展开的元素数量最多为100(数组长度不足100时则保留全部)。修改后的final部分SQL如下:

final as
(
SELECT
    f_id,
    e_id
FROM req f
CROSS JOIN UNNEST(slice(e, 1, 100)) AS t(e_id)
)

slice(e, 1, 100)的参数含义:第一个参数是目标数组,第二个是起始位置(Presto数组索引从1开始),第三个是截取的最大元素数。

方法二:UNNEST后通过窗口函数过滤

先正常执行UNNEST展开所有元素,再用row_number()窗口函数按f_id分组编号,最后筛选出编号≤100的记录。这种方式适合需要先对展开元素排序再截取的场景,修改后的SQL如下:

final as
(
SELECT
    f_id,
    e_id
FROM (
    SELECT
        f_id,
        e_id,
        row_number() over(partition by f_id order by e_id) as rn
    FROM req f
    CROSS JOIN UNNEST(e) AS t(e_id)
) sub
WHERE rn <= 100
)

你可以根据需求调整order by e_id的排序逻辑,如果不需要特定顺序,也可以改为order by 1或者省略(不同Presto版本对无排序的窗口函数支持可能有差异,建议显式指定排序规则)。

内容的提问来源于stack exchange,提问作者Pratibha UR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:12:09