Sql 使用多重分区的清管器

Sql 使用多重分区的清管器,sql,hive,apache-pig,Sql,Hive,Apache Pig,如何将下面的SQL语句翻译成拉丁语 select userid, siteid, eventdate, count(*) over(partition by userid, siteid order by eventdate) as c, rank() over (partition by userid, siteid order by eventdate) as rank from views 我看到pig在这里支持windows功能: 我可以计算出第一个分区投影(我想)如下 我不

如何将下面的SQL语句翻译成拉丁语

select userid, siteid, eventdate, 
 count(*) over(partition by userid, siteid order by eventdate) as c, 
 rank() over (partition by userid, siteid order by eventdate) as rank
from views 
我看到pig在这里支持windows功能:

我可以计算出第一个分区投影(我想)如下

我不清楚如何使用两个multiple-over子句,也不清楚如何从DataFu中投射出最后一步,它将索引添加到包中的每个元组中

在我看来,您的代码可能如下所示:

define Enumerate datafu.pig.bags.Enumerate('1');
A = load views as (userid, siteid, eventdate); 
B = group views by (userid, siteid); 
C = foreach B { 
  C1 = order A by eventdate; 
  generate FLATTEN(group) as (userid, siteid), 
           FLATTEN(Enumerate(C1.eventdate)) as (eventdate, rank),
           COUNT(C1) as count;
} 
dump C;

define Enumerate datafu.pig.bags.Enumerate('1');
A = load views as (userid, siteid, eventdate); 
B = group views by (userid, siteid); 
C = foreach B { 
  C1 = order A by eventdate; 
  generate FLATTEN(group) as (userid, siteid), 
           FLATTEN(Enumerate(C1.eventdate)) as (eventdate, rank),
           COUNT(C1) as count;
} 
dump C;
define Enumerate datafu.pig.bags.Enumerate('1');
A = load views as (userid, siteid, eventdate); 
B = group views by (userid, siteid); 
C = foreach B { 
  C1 = order A by eventdate; 
  generate FLATTEN(Enumerate(C1)) as (userid, siteid, eventdate, rank),
           COUNT(C1) as count;
} 
dump C;