7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HIveでWITH句

Last updated at Posted at 2017-06-02

#概要
HiveでのWITH句についての解釈が曖昧だったので残しておきます。

##WITH句を用いた例

.sql
WITH number_list as (
--番号テーブルからnumberを抽出
SELECT
    number
FROM
    number_table
WHERE
    partition='aa'
)

SELECT
    number
FROM
    --先ほど定義したnumber_listから
    number_list

##間違ったWITH句の解釈
WITH のあとに定義した名前に、WITH句内の処理結果を格納し、
一つのテンポラリテーブルのように使用できる便利な機能です。
(sqlからこっちのイメージが強かったのです...)

##実際のWITH句
WITH のあとに定義した名前で、WITH句内の処理を呼び出すことができる機能です。

##まとめ
WITHを使用したとき、WITH句内の処理内容を格納しているわけではなく、
毎回呼び出して処理を行っています。

そのため、
毎回処理結果が変わる処理
(・リアルタイムに更新される来客者テーブルから、現在の来客者を抽出
・毎回値が変化するサンプリング結果 など)や、
重い処理をWITH句に書くとき(毎回処理を実行するので時間がかかる)などは
一旦テーブルを作成してしまうことを推奨します。

##参考
https://cwiki.apache.org/confluence/display/Hive/Common+Table+Expression

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?