Apache Pig - AddDuration ()

Cette fonction accepte un objet date-heure et un objet durée, ajoute la durée donnée à l'objet date-heure et renvoie un nouvel objet date-heure avec une durée supplémentaire.

Syntaxe

Voici la syntaxe de la fonction AddDuration ().

grunt> AddDuration(datetime, duration)

Note- La durée est représentée dans la norme ISO 8601. Selon la norme ISO 8601, P est placé au début, tout en représentant la durée et il est appelé comme indicateur de durée. Également,

  • Yest l'indicateur de l'année. Nous utilisons ceci après avoir déclaré l'année.

    Example - P1Y représente 1 an.

  • Mest l'indicateur du mois. Nous utilisons ceci après avoir déclaré le mois.

    Example - P1M représente 1 mois.

  • West l'indicateur de semaine. Nous utilisons ceci après avoir déclaré la semaine.

    Example - P1W représente 1 semaine.

  • Dest l'indicateur du jour. Nous utilisons ceci après avoir déclaré le jour.

    Example - P1D représente 1 jour.

  • Test l'indicateur de temps. Nous utilisons ceci avant de déclarer l'heure.

    Example - PT5H représente 5 heures.

  • Hest l'indicateur de l'heure. Nous utilisons ceci après avoir déclaré l'heure.

    Example - PT1H représente 1 heure.

  • Mest l'indicatif des minutes. Nous utilisons ceci après avoir déclaré la minute.

    Example - PT1M représente 1 minute.

  • Sest le deuxième désignateur. Nous utilisons ceci après avoir déclaré le second.

    Example - PT1S représente 1 seconde.

Exemple

Supposons qu'il existe un fichier nommé date.txt dans le HDFS annuaire /pig_data/. Ce fichier contient les détails de la date de naissance d'une personne en particulier, l'identifiant, la date et l'heure et une durée selon la norme 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

Et, nous avons chargé ce fichier dans Pig avec une relation nommée date_duration comme indiqué ci-dessous.

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

Voici un exemple de AddDuration()fonction. Vous pouvez ajouter une certaine durée à l'objet date-heure donné en utilisant cette méthode comme indiqué ci-dessous.

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

Le résultat de l'instruction sera stocké dans la relation nommée add_duration_data. Vérifiez le contenu de cette relation à l'aide de l'opérateur Dump comme indiqué ci-dessous.

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)