Hive 如何在(被其他列划分的)上求和(列)?

Hive 如何在(被其他列划分的)上求和(列)?,hive,Hive,我正在尝试转换下面编写的Teradata代码 Select A.col1, sum(A.metric1) over (partition by A.col1, B.col1 order by A.col2 asc) as Cust_col, B.col1 from A JOIN B on (A.join_key=B.join_key) where A.col3='X' QUALIFY ROW_NUMBER () OVER (PARTITION BY A.col1,B.COL1

我正在尝试转换下面编写的Teradata代码

Select A.col1, sum(A.metric1) over (partition by A.col1, B.col1 order by   
  A.col2 asc) as Cust_col, B.col1 from A JOIN B on (A.join_key=B.join_key) 
  where A.col3='X' QUALIFY ROW_NUMBER () OVER (PARTITION BY A.col1,B.COL1
  ORDER BY A.col3 DESC) = 1
在蜂箱中:

Select C.col1,C.cust_col,C.col1,ROW_NUMBER () OVER (PARTITION BY A.col1,C.COL1 
  ORDER BY C.col3 DESC) as Row_num from (Select A.col1, sum(A.metric1) over 
  (partition by A.col1, B.col1 order by A.col2 asc) as Cust_col,B.col1 from A 
  JOIN B on (A.join_key=B.join_key) where A.col3='X') C where C.Row_num =1
但是,我得到了这样的错误

SemanticException无法将窗口调用拆分为组。 至少有1个组必须仅依赖于输入列。还要检查 循环依赖关系。基本错误:Primitve类型日期不正确 在值边界表达式中支持


我知道这是因为
Sum(A.metric1)
分区在这里产生了一个问题,但如何解决这个问题呢?

我不知道Hive,但我认为它也有类似于模式的东西。我想至少看看这些栏目的类型会有帮助。我不明白。。抱歉。错误的引用:其中C.ROW_NUM=1。C.row_num不存在。使用子查询按行过滤\u numHello leftjoin,实际上我正在查询中执行row\u num操作,并使用C.row\u num=1过滤重复项。。。我不确定我是否清楚我的要求。哪栏是日期?现在还不清楚。它是col3吗?它是order by使用的吗?我不知道Hive,但我认为它也有类似于模式的东西。我想至少看看这些栏目的类型会有帮助。我不明白。。抱歉。错误的引用:其中C.ROW_NUM=1。C.row_num不存在。使用子查询按行过滤\u numHello leftjoin,实际上我正在查询中执行row\u num操作,并使用C.row\u num=1过滤重复项。。。我不确定我是否清楚我的要求。哪栏是日期?现在还不清楚。是按顺序使用的col3吗?
select a_col1,
       sum(metric1) over (partition by a_col1, b_col1 order by a_col2 asc) as Cust_col, 
       b_col1
from
(
Select A.metric1, A.col1 a_col1, B.COL1 b_col1, A.col2 a_col2
       ROW_NUMBER () OVER (PARTITION BY A.col1,B.COL1 ORDER BY A.col3 DESC ) as rn
from A JOIN B on (A.join_key=B.join_key) 
  where A.col3='X' 

) s 
where rn=1