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)