BAGGROUP函数中的子组

时间:2019-07-28 15:14:49

标签: apache apache-pig databags

我正在尝试采用类似以下格式:

{Bill,{2017-08-09,{纽约到旧金山,(123,456,789)}}}}

我一直在使用BAGGROUP datafu函数来实现这一点:

(Adam Diaz,     {     (2016-05-28-11,         {(孟菲斯到小石城)}),     (2016-05-27-22,         {(乔普林到堪萨斯城2号公路)}),     (2016-05-28-09,         {(得梅因至芝加哥2号线)}),     (2016-06-02-20,        {(孟菲斯至小石城2号路线),         (从圣路易斯到孟菲斯),         (孟菲斯到小石城)        }       )      }     )

在此,我已使用GROUP函数按驱动程序名称分组,然后使用BAGGROUP函数按日期分组。但是我确实需要一个低于该级别的子级别,以便在驾驶员上路等每一天提供该时间。

我认为我需要以某种方式嵌套BAGGROUP,但不确定如何执行此操作。按名称分组>按日期分组>按路线分组>时间段。

我的代码的当前位:

  fields = FOREACH fil GENERATE                                                                                                                                                            
      routeName,                                                                                                                                                                           
      driverName,                                                                                                                                                                          
      eventDate,                                                                                                                                                                           
      eventTime;                                                                                                                                                                           

  dis = DISTINCT fields;                                                                                                                                                                   

  data  = FOREACH (GROUP dis BY driverName) {                                                                                                                                              
              GENERATE FLATTEN(group) AS driverName,                                                                                                                                       
              BAGGROUP(dis.(eventDate, eventTime, routeName), dis.(routeName)) AS grouped;                                                                                                 
              }                                                                                                                                                                            

  DESCRIBE data; 

0 个答案:

没有答案