Apache-pig-addduration

提供:Dev Guides
移動先:案内検索

Apache Pig-AddDuration()

この関数は、日時オブジェクトと期間オブジェクトを受け入れ、指定された期間を日時オブジェクトに追加し、期間が追加された新しい日時オブジェクトを返します。

構文

AddDuration()関数の構文は次のとおりです。

grunt> AddDuration(datetime, duration)

-DurationはISO 8601標準で表されます。 ISO 8601規格に従って、Pは先頭に配置され、期間を表し、期間指定子と呼ばれます。 同様に

  • Y は年の指定子です。 年を宣言した後、これを使用します。 + -P1Yは1年を表します。
  • M は月の指定子です。 これは、月を宣言した後に使用します。 + -P1Mは1か月を表します。
  • W は週指定子です。 これは、週を宣言した後に使用します。 + -P1Wは1週間を表します。
  • D は曜日指定子です。 これは、日を宣言してから使用します。 + -P1Dは1日を表します。
  • T は時間指定子です。 これを使用して、時間を宣言します。 + -PT5Hは5時間を表します。
  • H は時間指定子です。 これは、時間を宣言した後に使用します。 + -PT1Hは1時間を表します。
  • M は分指定子です。 これは、分を宣言してから使用します。 + -PT1Mは1分を表します。
  • S は2番目の指定子です。 2番目を宣言した後、これを使用します。 + -PT1Sは1秒を表します。

*HDFS* ディレクトリ */pig_data/* に *date.txt* という名前のファイルがあると仮定します。 このファイルには、特定の人の生年月日詳細、ID、日付と時刻、およびISO 8601標準に基づいた期間が含まれています。
*date.txt*
001,1989/09/26 09:00:00,PT1M
002,1980/06/20 10:22:00,P1Y
003,1990/12/19 03:11:44,P3M

そして、以下に示すように、このファイルを date_duration という名前の関係でPigにロードしました。

grunt> date_duration = LOAD 'hdfs://localhost:9000/pig_data/date.txt' USING PigStorage(',')
   as (id:int, date:chararray, duration:chararray)

以下は* AddDuration()*関数の例です。 以下に示すように、このメソッドを使用して、特定の期間を特定の日時オブジェクトに追加できます。

grunt> Add_duration_data = foreach date_duration generate(date,duration),
   AddDuration(ToDate(date,'yyyy/MM/dd HH:mm:ss'), duration);

ステートメントの結果は、 add_duration_data という名前のリレーションに保存されます。 以下に示すように、ダンプ演算子を使用してこの関係の内容を確認します。

grunt> Dump add_duration_data;

((1989/09/26 09:00:00,PT1M),1989-09-26 T09:01:00.000+05:30)
((1980/06/20 10:22:00,P1Y),1981-06-20 T10:22:00.000+05:30)
((1990/12/19 03:11:44,P3M),1991-03-19 T03:11:44.000+05:30)