2017-03-23 4 views
0

他のテーブルの指定された値だけをHiveのパーティションテーブルに挿入するのは苦労しています。同じ挿入文。私は、パーティションの列の値を読んでいるのは、selectステートメントの最後の2つである必要があります。しかし、クエリーは、選択から5つの結果がありますが、挿入するのは3つしかないという不満があります。Hive - selectステートメントから指定した値をテーブルとパーティションの値に挿入します。

大変お手伝いをいたします。

CREATE TABLE IF NOT EXISTS tableName (
code INT, 
value1 DECIMAL(12, 8), 
value2 DECIMAL(12, 8), 
) 
PARTITIONED BY(part1 DECIMAL(10, 3), part2 DECIMAL(10, 3)); 

INSERT INTO TABLE tableName 
PARTITION 
(
part1, 
part2 
) 
(
code, 
value1, 
value2, 
) 
SELECT 
code, 
value1, 
value2, 
ROUND(value1, 2), 
ROUND(value2, 2) 
FROM importData; 
+0

あなたは、あなたの作成したスキーマ文を投稿することができます。 –

答えて

0

あなたは二つの文(part1, part2)(code, value1, value2,)で5つのパーティションを持っている理由わかりません。分割された列が最後に記載されていることが正しいです。おそらくこの単純化された例は、あなたが正しいことを達成するために正しい道を歩むのに役立ちます。

INSERT INTO TABLE tblnm PARTITION (p1,p2) 
SELECT code, value1, value2, ROUND(value1, 2) as p1, ROUND(value2, 2) as p2 
FROM importData; 

から
UPDATED あなたのパーティションの後(code,value1,value2,)を持っている理由私が聞いてもいいですか?

これは動作するはずです:我々は先のTBL(tableNameのを)見ることができるように

CREATE TABLE IF NOT EXISTS tableName (
code INT, 
value1 DECIMAL(12, 8), 
value2 DECIMAL(12, 8), 
) 
PARTITIONED BY(part1 DECIMAL(10, 3), part2 DECIMAL(10, 3)); 

INSERT INTO TABLE tableName PARTITION (part1,part2) 
    SELECT 
    code, 
    value1, 
    value2, 
    ROUND(value1, 2), 
    ROUND(value2, 2) 
    FROM importData; 
+0

こんにちは、私はポストにテーブルを作成するコードを追加しました、ごめんなさい、最初にそれを含める必要があります。 –

関連する問題