Apache Pig - SOMME ()

Vous pouvez utiliser le SUM()fonction de Pig Latin pour obtenir le total des valeurs numériques d'une colonne dans un sac à une seule colonne. Lors du calcul du total, leSUM() La fonction ignore les valeurs NULL.

Note -

  • Pour obtenir la valeur de la somme globale, nous devons effectuer un Group All et calculez la valeur de la somme à l'aide de la fonction SOMME ().

  • Pour obtenir la valeur totale d'un groupe, nous devons le regrouper en utilisant le Group By opérateur et procédez à la fonction de somme.

Syntaxe

Ci-dessous, la syntaxe du SUM() fonction.

grunt> SUM(expression)

Exemple

Supposons que nous ayons un fichier nommé employee.txt dans le répertoire HDFS /pig_data/ comme indiqué ci-dessous.

employee.txt

1,John,2007-01-24,250  
2,Ram,2007-05-27,220  
3,Jack,2007-05-06,170  
3,Jack,2007-04-06,100 
4,Jill,2007-04-06,220 
5,Zara,2007-06-06,300
5,Zara,2007-02-06,350

Et nous avons chargé ce fichier dans Pig avec le nom de la relation employee_data comme indiqué ci-dessous.

grunt> employee_data = LOAD 'hdfs://localhost:9000/pig_data/ employee.txt' USING PigStorage(',')
   as (id:int, name:chararray, workdate:chararray, daily_typing_pages:int);

Calcul de la somme de tous les GPA

Pour démontrer le SUM(), essayons de calculer le nombre total de pages tapées quotidiennement de tous les employés. Nous pouvons utiliser la fonction intégrée d'Apache PigSUM()(sensible à la casse) pour calculer la somme des valeurs numériques. Regroupons la relation employee_data en utilisant leGroup All et stockez le résultat dans la relation nommée employee_group comme indiqué ci-dessous.

grunt> employee_group = Group employee_data all;

Cela produira une relation comme indiqué ci-dessous.

grunt> Dump employee_group;
  
(all,{(5,Zara,2007-02-06,350),
(5,Zara,2007-06-06,300),
(4,Jill,2007-0406,220),
(3,Jack,2007-04-06,100),
(3,Jack,2007-05-06,170),
(2,Ram,2007-0527,220),
(1,John,2007-01-24,250)})

Calculons maintenant la somme globale des pages tapées quotidiennement.

grunt> student_workpages_sum = foreach employee_group Generate 
   (employee_data.name,employee_data.daily_typing_pages),SUM(employee_data.daily_typing_pages);

Vérification

Vérifier la relation student_workpages_sum en utilisant le DUMP opérateur comme indiqué ci-dessous.

grunt> Dump student_workpages_sum;

Production

Il produira la sortie suivante, affichant le contenu de la relation student_workpages_sum comme suit.

(({ (Zara), (Zara), (Jill) ,(Jack) , (Jack) , (Ram) , (John) }, 
{ (350) , (300) , (220) ,(100) , (170)  ,  (220)  , (250)  }),1610)