ClickHouse-在嵌套字段中搜索

时间:2019-05-22 10:28:06

标签: nested clickhouse

我有一个名为items.productName的嵌套字段,我想在其中检查产品名称是否包含特定的字符串。

SELECT * FROM test WHERE hasAny(items.productName,['Samsung'])

这仅在产品名称为Samsung时有效。

我尝试了数组连接

SELECT 
    *
FROM test
ARRAY JOIN items
WHERE items.productName LIKE '%Samsung%' 

此方法有效,但速度很慢(500万条记录约1秒)

有没有一种方法可以像hasAny一样?

1 个答案:

答案 0 :(得分:1)

您可以使用arrayFilter函数来实现。 ClickHouse docs

查询

Select * from test where arrayFilter(x -> x LIKE '%Samsung%', items.productName) != []

如果不使用!= [],则会收到错误消息“ DB :: Exception:过滤器列的非法类型Array(String)。必须为UInt8或Nullable(UInt8)或它们的Const变体。”