Apache Pig - AddDuration ()

Esta função aceita um objeto de data e hora e objetos de duração e adiciona a duração fornecida ao objeto de data e hora e retorna um novo objeto de data e hora com duração adicionada.

Sintaxe

Aqui está a sintaxe da função AddDuration ().

grunt> AddDuration(datetime, duration)

Note- A duração é representada no padrão ISO 8601. De acordo com a ISO 8601, o padrão P é colocado no início, enquanto representa a duração e é chamado de designador de duração. Da mesma forma,

  • Yé o designador do ano. Usamos isso depois de declarar o ano.

    Example - P1Y representa 1 ano.

  • Mé o designador do mês. Usamos isso depois de declarar o mês.

    Example - P1M representa 1 mês.

  • Wé o designador da semana. Usamos isso depois de declarar a semana.

    Example - P1W representa 1 semana.

  • Dé o designador do dia. Usamos isso depois de declarar o dia.

    Example - P1D representa 1 dia.

  • Té o designador de tempo. Usamos isso antes de declarar o tempo.

    Example - PT5H representa 5 horas.

  • Hé o designador da hora. Usamos isso depois de declarar a hora.

    Example - PT1H representa 1 hora.

  • Mé o designador minuto. Usamos isso depois de declarar o minuto.

    Example - PT1M representa 1 minuto.

  • Sé o segundo designador. Usamos isso depois de declarar o segundo.

    Example - PT1S representa 1 segundo.

Exemplo

Suponha que haja um arquivo chamado date.txt no HDFS diretório /pig_data/. Este arquivo contém os detalhes da data de nascimento de uma pessoa em particular, id, data e hora e alguma duração de acordo com o padrão 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

E, carregamos este arquivo no Pig com uma relação chamada date_duration como mostrado abaixo.

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

A seguir está um exemplo do AddDuration()função. Você pode adicionar certa duração ao objeto de data e hora determinado usando este método conforme mostrado abaixo.

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

O resultado da declaração será armazenado na relação chamada add_duration_data. Verifique o conteúdo desta relação usando o operador Dump conforme mostrado abaixo.

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)