pig脚本循环计算平均值

sy5wg1nm  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(308)

我有数据,将运行在Pig使用aws电子病历看起来像。这些列称为型号、年份、销售单位、客户总数。

  1. chevy 1900 1000 49
  2. chevy 1901 73 92
  3. chevy 1902 45 65
  4. chevy 1903 300 75
  5. ford 1900 35 12
  6. ford 1901 777 32
  7. ford 1902 932 484
  8. ford 1903 33 15

我要做的是计算每种车型的平均值。平均值的计算方法是将售出的单位总数除以总客户总数。所以期望的结果是

  1. chevy (1000+73+45+300) / (49+92+65+75) = 5.04
  2. ford (35+777+932+33) / (12+32+484+15) = 3.27

在我的剧本里

  1. A = *Step to load data*;
  2. B = GROUP A by year;
  3. C = results = FOREACH B GENERATE SUM(units_sold)/SUM(total_customers);
  4. dump C;

这将返回一个不正确的结果。如何获得类似于

  1. chevy 5.04
  2. ford 3.27
fdbelqdn

fdbelqdn1#

看来你需要按车型分组,而不是按年份。另外,如果需要,您可能需要强制转换为浮动 units_sold 以及 total_customers 如果不希望得到舍入结果,则为整数。尝试:

  1. B = GROUP A by model;
  2. C = FOREACH B GENERATE (float)SUM(units_sold)/(float)SUM(total_customers);

相关问题