The reason it's needed is that ambiguities would result otherwise.

A = load 'foo' as (x, y, z);
B = load 'bar' as (w, x, y, z);
C = join A by x, B by x;
D = filter C by z > 0;  -- which z?

As long as the name is not ambiguous, the :: is not required. So in the above example it would be perfectly legal to say

D = filter C by w > 0;

Out of curiosity, why do you want to remove the :: names?

Alan.

On Dec 6, 2010, at 1:05 PM, Jonathan Coveney wrote:

Hijack away. I would be curious as to the reason we need this as well.

2010/12/6 Anze <[email protected]>


Sorry to hijack your question, Jonathan, but while we are at it... :)

Is there a way to tell Pig NOT to add "base_alias::"? Almost half my code
consists of FOREACH... GENERATE that just remove these prefixes.

Thanks,

Anze

On Monday 06 December 2010, Daniel Dai wrote:
After join, cross, foreach flatten, Pig will automatically add
"base_alias::" prefix. All other cases use "."

Daniel

Jonathan Coveney wrote:
It's very hard to search for this among the docs because it's so
generic,
so I thought I'd ask... I'm sure the answer is painfully easy.

Taking a look at this code that I found online, for example

--
-- Read in a bag of tuples (timeseries for this example) and divide the
-- numeric column by its maximum.
--
%default DATABAG 'data/timeseries.tsv'

data       = LOAD '$DATABAG' AS (month:chararray, count:int);
accumulate = GROUP data ALL;
calc_max   = FOREACH accumulate GENERATE FLATTEN(data),
MAX(data.count) AS max_count;
normalize  = FOREACH calc_max GENERATE data::month AS month,
data::count AS count, (float)data::count / (float)max_count AS
normed_count;
DUMP normalize;

What purpose does data::month serve versus data.count?

Thanks



Reply via email to