我有一张这样的表
col
-----
A,B
col
可以是逗号或数组的字符串。我对存储有灵活性。
如何检查col
是另一个字符串或数组变量的子集?例如:
B,A
- > TRUE
(顺序无关紧要)
A,D,B
- > TRUE
(中间的其他项目)
A,D,C
- > FALSE
(缺少B
)
我对这种类型有灵活性。变量是我无法存储在表格中的东西。
如果您对Impala有任何建议(没有Hive),请告诉我。
由于
答案 0 :(得分:1)
一个不太漂亮的方法,但也许是一个起点...
假设一个表具有唯一标识符列id
和array<string>
列col
,以及一个字符串变量','
作为分隔符(并且没有出现)转义'\,'
) ...
SELECT
yourTable.id
FROM
yourTable,
yourTable.col
GROUP BY
yourTable.id
HAVING
COUNT(DISTINCT CASE WHEN find_in_set(col.item, ${VAR:yourString}) > 0 THEN col.item END)
=
LENGTH(regexp_replace(${VAR:yourString},'[^,]',''))+1
基本上...
COUNT(DISTINCT <CASE>)
可以应对{'a', 'a', 'b', 'b'}
等数组。
不将字符串扩展为数组或表(我不知道该怎么做),你依赖于字符串中唯一的项目。 (因为我只是在字符串中计算逗号以找出有多少项...)