以前バカっぽいHiveクエリーを実行したんですがちょっとだけスマートにCTE(common table expression)を書けることを知りました。

with tempcte as (select 1 union all select 2 union all select 3) select count(*) from tempcte a,tempcte b


下の Hue UIの右側にTable Generating(テーブル生成、行生成)関数一覧とヘルプがありその中の stack() がそれです。

with temp as (select stack(3,1,2,3))
select count(*) from temp t1,temp t2

中の “select stack(3,1,2,3)” で3行1列の一時的なテーブルを生成してます。


青の矢印で3行生成して直積して(cartesian product)行数えたら緑矢印の箇所のように 3*3=9 を確認できました!

ちなみに赤の下線のところに Tez とありますが Hive on Tez が実行されたかどうかは未確認です。

One thought on “Hive行生成関数stack()

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s