Hive hadoop与以前的没有udf的比较

Hive hadoop与以前的没有udf的比较,hive,Hive,我的输入文件是 2014-08-23 30000 2014-09-24 20000 2014-10-23 50000 2014-11-24 7000 我想要这样的输出 2014-08-23 30000 2014-09-24 -10000 2014-10-25 30000 2014-11-24 -47000 我想在没有udf的情况下实现这一点。 我试过这个密码 SELECT C.ID ,C.DATE,C.VA

我的输入文件是

2014-08-23       30000
2014-09-24       20000
2014-10-23       50000
2014-11-24       7000
我想要这样的输出

2014-08-23      30000
2014-09-24     -10000
2014-10-25      30000
2014-11-24      -47000
我想在没有udf的情况下实现这一点。
我试过这个密码

SELECT C.ID ,C.DATE,C.VALUE AS CURRENT_DATE_VALUE,COALESCE(CAST(O.VALUE AS INT),0) AS PREV_DATE_VALUE,(C.VALUE-COALESCE(CAST(O.VALUE as INT),0)) AS DIFF_VALUE 
FROM ITEM O 
LEFT OUTER JOIN 
( SELECT T.ID ,C.DATE,C.VALUE,MAX(UNIX_TIMESTAMP(T.DATE,'dd-MM-yyyy')) AS PREV_DATE 
  FROM ITEM C 
  LEFT OUTER JOIN ITEM T ON(C.ID = T.ID) WHERE   
  UNIX_TIMESTAMP (C.DATE,'dd-MM-yyyy') > UNIX_TIMESTAMP(T.DATE,'dd-MM-yyyy') GROUP BY
  T.ID ,C.DATE,C.VALUE) C 
ON (O.ID = C.ID AND UNIX_TIMESTAMP (O.DATE,'dd-MM-yyyy') = C.PREV_DATE)

如果您有权访问Hive0.13(它有函数),那么您可以用最少的代码完成这项工作

查询:

select date
    ,(value - prev) as diff
from (
    select date
        ,value
        ,LAG(value, 1, 0) OVER (ORDER BY date) as prev
    from some_database.some_table
    ) x
2014-08-23    30000
2014-09-24    -10000
2014-10-23    30000
2014-11-24    -43000
输出:

select date
    ,(value - prev) as diff
from (
    select date
        ,value
        ,LAG(value, 1, 0) OVER (ORDER BY date) as prev
    from some_database.some_table
    ) x
2014-08-23    30000
2014-09-24    -10000
2014-10-23    30000
2014-11-24    -43000

您如何获得最后一行的
-47000