0

私が豚でやりたいことは、SQLで非常に一般的なことです。yyy-mm-dd hh:mm:ss という形式の日付フィールドと、時間数を表す整数を含む別のフィールドがあります。整数を日時フィールドに簡単に追加して、時計の計算で期待する結果を得る方法はありますか?

例: 日付は 2013-06-01 : 23:12:12 です。

それから私は2時間を追加します

2013-06-02 01:12:12 になるはずです。

4

1 に答える 1

6

Pig(0.11.0) の最新リリースでは、それが可能になるはずです。ただし、時間数 (時間) は に従ってくださいISO8601 Duration FormatAddDurationDuration オブジェクトに 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)
于 2013-06-25T21:06:17.417 に答える