You can cast the single-tuple relation "avg_score" to a scalar using the
following syntax:

above_avg = filter data by score > avg_score.avg_score;


On Mon, Jul 29, 2013 at 3:49 PM, Tim Chan <[email protected]> wrote:

> I would like to know if there is a better way to do the following.
>
> GIVEN:
>
> (name:chararray, score:float)
>
> I would like to filter out all records that are below the average score.
>
>
> This is what I came up with:
>
> data = load 'input.dat' using PigStorage('\t') as (name:chararray,
> score:float);
>
> data_all = group data all;
>
> avg_score = foreach data_all generate AVG(data.score) as avg_score;
>
> data_avg = cross data, avg_score;
>
> describe data_avg;
>
> above_avg = filter data_avg by score > avg_score;
>
>
> Is there a better or more acceptable way to make avg_score accessible
> during the filter step, other than doing a cross?
>

Reply via email to