2017-08-18 10 views
1

のようなパーティションを2017-01-02'のように作成することはできますか?01は月ですか? 私は毎日の売上高があり、select * from sales where month = '01'のようなクエリを実行する必要があります。だから、もし私が毎月の売上を分割することができれば良いでしょう。しかし、私のデータのフォーマットは2017-01-01で、 create table tl (columns ......) partitioned by (date <datatype>)は、私が望む最後のものです。 パーティションを動的に作成する必要があります。日ごとのタイムスタンプから月ごとにハイブパーティションテーブル?

答えて

2

注意: - create文で日付列を(つまり、列名の前後にバックティックを使用して)エスケープする必要があります。 dateはハイブのデータ型です。

動的にパーティションを作成することができます。 - クエリで以下のパラメータを設定します。それとともに

set hive.exec.dynamic.partition.mode=nonstrict;

あなたはソース表からのみ月の部分を選択する必要があります -

insert into table sales partition(date) select columns...,SUBSTR(date,5,2) from source_table

このinsert文は以下のようにパーティションを作成します。

ショーパーティションの販売

date=01 date=02 date=03 date=04