2016-11-17 10 views
-2

私はデータセットを持っています。サンプルの行の下に参照してください。デリミタでカラムをハイブで一意の行に分割する

94654 6802D326-9F9B-4FC8-B2DD-F878EADE31F2 1460695483:440507; 1460777656:440515; 1460778054:440488; 1460778157:440481,440600。

各列はスペースで区切られています(合計3列)。列名はid(int)、unid(string)、time_stamp(string)です。

  • 94654 6802D326-9F9B-4FC8-B2DD-F878EADE31F2 1460695483:440507
  • 94654 6802D326-9F9B - :私はこのような、以下の行にそれぞれ固有の要素そのデータセットを分割したい

    -4FC8-B2DD-F878EADE31F2 1460777656:440515

  • 94654 6802D326-9F9B-4FC8-B2DD-F878EADE31F2 1460778054:440488
  • 94654 6802D326-9F9B-4FC8-B2DD-F878EADE31F2 1460778157:440481
  • 94654 6802D326-9 F9B-4FC8-B2DD-F878EADE31F2 1460778157:440600

各サブポイントは各行です。私は次のクエリを使用しましたが、それは私に上記のような出力を与えています。 time_dateとしてtime_date; 側面図は、()SPLIT(time_dateを、 '\')爆発テーブルから

。SELECT ID、UNID、time_date - を:私は、次のコードを使用している、それが動作していません

出力: - 94654 6802D326-9F9B-4FC8-B2DD-F878EADE31F2 1460695483:440507; 1460777656:440515; 1460778054:440488; 1460778157:440481,440600。 (次の行は5回繰り返されます)

助けてください!事前に感謝:)

答えて

1

まず、私はパイプでセミコロンを交換する必要がありました。だから、:

94654 6802D326-9F9B-4FC8-B2DD-F878EADE31F2 1460695483:440507 
94654 6802D326-9F9B-4FC8-B2DD-F878EADE31F2 1460777656:440515 
94654 6802D326-9F9B-4FC8-B2DD-F878EADE31F2 1460778054:440488 
94654 6802D326-9F9B-4FC8-B2DD-F878EADE31F2 1460778157:440481,440600 

をあなたは別々のステップで分割を行うと、爆発する必要があります:私たちを与える

CREATE temporary TABLE tbl 
(id int, 
unid string, 
time_stamp string); 

INSERT INTO tbl 
VALUES (
94654, '6802D326-9F9B-4FC8-B2DD-F878EADE31F2' , '1460695483:440507|1460777656:440515|1460778054:440488|1460778157:440481,440600'); 

SELECT 
id, 
unid, 
time_stamp 
FROM 
(
SELECT 
id, 
unid, 
split(time_stamp,'\\|') ts 
FROM 
tbl 
) t 
lateral VIEW explode(t.ts) bar AS time_stamp; 

。そこで、派生テーブルで分割を行い、外側のクエリで爆発/側方ビューを行います。

+0

ありがとうございました!Andrew!:) – zerxes

関連する問題