Вы можете лучше определить это как макрос:
DEFINE DISTINCT_COUNT(A, c) RETURNS dist {
temp = FOREACH $A GENERATE $c;
dist = DISTINCT temp;
groupAll = GROUP dist ALL;
$dist = FOREACH groupAll GENERATE COUNT(dist);
}
Использование:
X = LOAD 'data' AS (x: int);
Y = DISTINCT_COUNT(X, x);
Если вам нужно вместо этого использовать FOREACH
, то самый простой способ это что-то вроде:
...GENERATE COUNT(Distinct(x))...
Проверено на Свинье 12.