Tips: Hive, Prestoで配列に値が含まれているかを判定する方法
これは何
の参加記事です。
はじめに
データとして配列を持っているテーブルを考えます。
id | ids |
---|---|
1 | [2, 3] |
2 | [1, 3] |
3 | [1, 2] |
このようなテーブルがあった時、配列データに値が含まれているかどうかで絞り込みや結合などを行いたい場合もあると思います。
その方法を紹介します。
Presto
PrestoにはCONTAINS(array, value)
という関数があります。これが第一引数に渡した配列に第二引数に渡した値が含まれているかどうかを判定する関数になります。これを用いてこのようなことができます。
例(WHERE)
SELECT *
FROM data
WHERE CONTAINS(ids, 1)
例(JOIN)
SELECT *
FROM data d1
INNER JOIN data d2 ON CONTAINS(d1.ids, d2.id)
Hive
HiveにもARRAY_CONTAINS
という関数があるのでPrestoと同様にかけます。
例(WHERE)
SELECT *
FROM data
WHERE ARRAY_CONTAINS(ids, 1)
例(JOIN)
SELECT *
FROM data d1
INNER JOIN data d2 ON ARRAY_CONTAINS(d1.ids, d2.id)
参考文献
Author And Source
この問題について(Tips: Hive, Prestoで配列に値が含まれているかを判定する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/getty104/items/9078040aa1e3a7057790著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .