私が豚でやりたいことは、SQLで非常に一般的なことです。yyy-mm-dd hh:mm:ss という形式の日付フィールドと、時間数を表す整数を含む別のフィールドがあります。整数を日時フィールドに簡単に追加して、時計の計算で期待する結果を得る方法はありますか?
例: 日付は 2013-06-01 : 23:12:12 です。
それから私は2時間を追加します
2013-06-02 01:12:12 になるはずです。
私が豚でやりたいことは、SQLで非常に一般的なことです。yyy-mm-dd hh:mm:ss という形式の日付フィールドと、時間数を表す整数を含む別のフィールドがあります。整数を日時フィールドに簡単に追加して、時計の計算で期待する結果を得る方法はありますか?
例: 日付は 2013-06-01 : 23:12:12 です。
それから私は2時間を追加します
2013-06-02 01:12:12 になるはずです。
Pig(0.11.0) の最新リリースでは、それが可能になるはずです。ただし、時間数 (時間) は に従ってくださいISO8601 Duration Format
。AddDuration
Duration オブジェクトに DateTime オブジェクトを追加できるクラスを提供します。AddDuration の詳細については、このページを参照してください。
編集 :
はい、マイナスの時間を追加できます。Ubuntuボックスでこれを試しました:
入力:
2009-01-07T01:07:01.000Z,PT1S
2008-02-06T02:06:02.000Z,PT1M
2007-03-05T03:05:03.000Z,PT-1H
クエリ:
grunt> a = LOAD '/pig.txt' USING PigStorage(',') AS (dt:datetime, dr:chararray);
grunt> b = FOREACH a GENERATE AddDuration(dt, dr) AS dt1;
grunt> dump b;
出力:
(2009-01-07T01:07:02.000Z)
(2008-02-06T02:07:02.000Z)
(2007-03-05T02:05:03.000Z)