pig脚本循环计算平均值

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

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

chevy     1900     1000    49
chevy     1901     73      92
chevy     1902     45      65
chevy     1903     300     75
ford      1900     35      12
ford      1901     777     32
ford      1902     932     484
ford      1903     33      15

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

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

在我的剧本里

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

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

chevy    5.04
ford     3.27
fdbelqdn

fdbelqdn1#

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

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

相关问题