获取 SnowflakeSQLException 列表中表达式的最大数量超出,预计最多 200,000,在 Snowflake 的 IN 子句查询中得到 265,633

问题描述 投票:0回答:1

这是选择查询:

select count(id) AS count,attributes['abc'] from test_schema.transactions_test  where ( id  IN  ('324', '35462', '33546' , .........,'265633') ORDER BY count DESC limit 5000 offset 0

注意:假设 IN 子句中的 id 是动态的,并且生成查询,即 IN 子句中有 265633 个不同的 id。

以上查询出现此错误:

net.snowflake.client.jdbc.SnowflakeSQLException:SQL 编译错误:位置 76 处的错误行 1 超出列表中表达式的最大数量,预计最多 200,000 个,实际为 265,633

Snowflake 在以下方面有任何问题吗: IN 子句中允许的值/表达式数量限制? IN 子句中允许有多少个值/表达式 雪花查询语句的大小有限?

我假设上面的雪花查询应该返回计数,但得到了列表中表达式的最大数量超出异常。 从错误日志来看,它可能超出了 IN 子句中的值/表达式的数量。 雪花对 IN 子句中允许的值/表达式的数量有限制吗?

有人可以提出任何建议吗?

snowflake-cloud-data-platform
1个回答
0
投票

考虑将这些

id
值放入一个单独的真实表中,然后加入到该表中:

CREATE TABLE test_schema.ids (id varchar(55));
INSERT INTO test_schema.ids (id)
VALUES
    ('324'),
    ('35462'),
    ...
    ('265633');

SELECT COUNT(id) AS count, attributes['abc']
FROM test_schema.transactions_test t1
INNER JOIN test_schema.ids t2
    ON t2.id = t1.id
ORDER BY count DESC
LIMIT 5000 OFFSET 0;
© www.soinside.com 2019 - 2024. All rights reserved.