From 0.11 release onwards Pig natively supports CUBE operator. Here is the documentation for CUBE operator http://pig.apache.org/docs/r0.11.1/basic.html#cube
For your case the query can be represented as cubed = CUBE input BY CUBE(group_a,group_b,group_c); output = FOREACH cubed GENERATE FLATTEN(group) as (group_a,group_b,group_c), FLATTEN(cube.value) as value; More examples can be found in documentation. Thanks -- Prasanth On Apr 2, 2013, at 11:34 PM, Haitao Yao <[email protected]> wrote: > Hi, all > I have a tuple like this: > (group_a,group_b,group_c,value) > > and I want to calculate the values in a data cube way, which means I want to > generate new tuples from the original one : > > (all,all,all,value) > (group_a,all,all,value) > (all,group_b,all,value) > (group_a,group_b,all,value) > (all,all,group_c,value) > (group_a,all,group_c,value) > (all,group_b,group_c,value) > > and then group by ($0, $1, $2) . > How can I do this? I've wrote a Eval function, but it can not generate more > tuples from one tuple. > > > thanks. > > > Haitao Yao > [email protected] > weibo: @haitao_yao > Skype: haitao.yao.final >
