LoginSignup
5
1

More than 1 year has passed since last update.

Tips: Hive, Prestoで配列に値が含まれているかを判定する方法

Posted at

これは何

の参加記事です。

はじめに

データとして配列を持っているテーブルを考えます。

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)

参考文献

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1