Thank you Cheolsoo, this worked, I really appreciate your time and help.

--
Richipal Singh



On Thu, Sep 27, 2012 at 5:11 PM, Cheolsoo Park <[email protected]>wrote:

> Hi Richipal,
>
> Please try this:
>
> a = LOAD '1.txt' USING PigStorage(',') AS
> (id:int,browser:chararray,type:chararray);
> b = FOREACH a GENERATE $0, $1;
> c = FILTER b by ($1 is not null);
> d = FOREACH a GENERATE $0, $2;
> e = JOIN c by id, d by id;
> f = FOREACH e GENERATE $0, $1, $3;
> dump f;
>
> This returns:
>
> (1,firefox,p)
> (1,firefox,q)
> (1,firefox,r)
> (1,firefox,s)
> (2,ie,p)
> (2,ie,s)
> (3,chrome,p)
> (3,chrome,r)
> (3,chrome,s)
> (4,netscape,p)
>
> Thanks,
> Cheolsoo
>
> On Thu, Sep 27, 2012 at 1:23 PM, Richipal Singh <[email protected]>
> wrote:
>
> > I have a requirement to propagate field values from one row to another
> > given type of record for example my raw input is
> >
> > 1,firefox,p
> > 1,,q
> > 1,,r
> > 1,,s
> > 2,ie,p
> > 2,,s
> > 3,chrome,p
> > 3,,r
> > 3,,s
> > 4,netscape,p
> >
> > the desired result
> >
> > 1,firefox,p
> > 1,firefox,q
> > 1,firefox,r
> > 1,firefox,s
> > 2,ie,p
> > 2,ie,s
> > 3,chrome,p
> > 3,chrome,r
> > 3,chrome,s
> > 4,netscape,p
> >
> > I tried
> >
> > A = LOAD 'file1.txt' using PigStorage(',') AS
> > (id:int,browser:chararray,type:chararray);
> > SPLIT A INTO B IF (type =='p'), C IF (type!='p' );
> > joined =  JOIN B BY id FULL, C BY id;
> > joinedFields = FOREACH joined GENERATE  B::id,  B::type, B::browser,
> > C::id, C::type;
> > dump joinedFields;
> >
> > the result I got was
> >
> > (,,,1,p  )
> > (,,,1,q)
> > (,,,1,r)
> > (,,,1,s)
> > (2,p,ie,2,s)
> > (3,p,chrome,3,r)
> > (3,p,chrome,3,s)
> > (4,p,netscape,,)
> >
> > Any help is appreciated, Thanks.
> >
> > --
> > Richipal Singh
> >
>

Reply via email to