这是选择查询:
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 子句中允许的值/表达式的数量有限制吗?
有人可以提出任何建议吗?
考虑将这些
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;