LoginSignup
5
5

More than 5 years have passed since last update.

Hiveで型がarrayのカラムを展開して条件に使う方法

Last updated at Posted at 2016-09-13

はじめに

TDを業務でつかっているのですが、テーブルのカラムにarrayが入っている場合にwhereでどのように使うかわからなかったので調べた時のメモ

使用データ

例として下記のようなデータをつかいます

table_name: user_values

user_id(Int) values(Array)
1 ["123","abc"]
2 ["123", "bcd"]
3 ["789", "cde"]

このuser_valuesはそのままだとwhereで使えないので、arrayを展開する

select count(user_id) AS user_cnt from user_fruits
LATERAL VIEW explode(values) exploded_values AS data
 WHERE data = '123'

とすると

user_id data
1 123
1 abc
2 123
2 bcd
3 789
3 cde

というように結合されるので

↑のクエリの結果は

user_cnt
2

とかなるらしい

へー

arrayが連想配列だった場合

user_id(Int) values(Array)
1 {"key1":"val1"}
2 {"key2":"val2"}
3 {"key3":"val3"}

valuesの値が連想配列

select key, val from user_values
LATERAL VIEW explode(values) exploded_values AS key, val

ってやると

key val
key1 val1
key2 val2
key3 val3

とかって返ってくるらしい
ふうん?

まとめる

頭に描きづらくてなかなか覚えられなそう
とりあえず「ふうん?」くらいしかわからなかったのでメモしておく

5
5
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
5