我使用的是apachedatafu(http://datafu.incubator.apache.org/docs/datafu/1.3.0/datafu/pig/stats/quantile.html)
计算数据中几个变量的分位数。
我的理解是,数据需要在调用之前进行排序 quantile
.
但是,如果我需要按序列计算同一组中几个变量的分位数呢?假设分位数变量的创建发生在generate之后,那么将只考虑一个排序(最后一个排序),如下简单示例所示:
-- input: 9,10,2,3,5,8,1,4,6,7
input = LOAD 'input' AS (val:int);
grouped = GROUP input ALL;
-- produces: (1,5.5,10)
quantiles = FOREACH grouped {
sorted = ORDER input BY val;
GENERATE Quantile(sorted);
}
适用于一个变量,但是如果我想要每个groupby中两个不同变量的分位数,如何修改此代码?
如果数据看起来像
group col1 col2
A 1 2
A 3 1
B 1 0
B 9 -2
对于每一组,我想要col1和col2的分位数?
1条答案
按热度按时间inkz8wg91#
你可以有多个
ORDER
嵌套语句中的语句FOREACH
,例如: