自最早发票日期起的12个月滚动数据-Hadoop

自最早发票日期起的12个月滚动数据-Hadoop,hadoop,hive,Hadoop,Hive,寻求以下问题陈述的帮助 I/p数据集: customer id invoice date item id invoice amount Comment 1 10-Jan-2014 1 10 Start of 12 month window - 10th Jan 2014 to 10th Jan 2015 1 20-Jan-2014 2 20

寻求以下问题陈述的帮助

I/p数据集:

customer id invoice date    item id invoice amount      Comment
1           10-Jan-2014     1       10                  Start of 12 month window - 10th Jan 2014 to 10th Jan 2015
1           20-Jan-2014     2       20                  Falls within 12 month window
1           21-Aug-2014     1       10                  Falls within 12 month window
1           31-Dec-2014     1       10                  Falls within 12 month window
1           20-Feb-2015     1       10                  Start of new 12 month window as this is post 10th Jan 2015
1           30-Mar-2016     1       10                  Start of new 12 month window as this is post 20th Feb 2016
所需o/p
客户id发票日期项目id发票金额窗口金额(项目id=1时的金额)

我尝试在Hive中使用下面的查询来实现上述输出,但挑战在于一旦我们超过12个月大关,就重置下一个窗口。(请参考输入数据集中的第5行和第6行)。需要将这些记录视为新窗口的开始

使用以下查询:

SELECT SUM(if(item_id = 1, invoice_amount, 0)) OVER (
    PARTITION BY customer_id 
    ORDER BY invoice_date ASC 
    RANGE BETWEEN 31556926 PRECEDING AND CURRENT ROW
) FROM INVOICE_DETAILS;`

(1) 第二个窗口是从2015年2月20日开始还是从2015年1月10日开始(2014年1月10日后一年)?(2) 无论如何,请使用
日期
类型或至少ISO格式的字符串YYYY MM DDHello Dudu(请原谅日期格式,它已在excel中重新格式化)。在上述情况下,第二个窗口应从2015年2月20日开始。因此,我需要计算2014年1月10日至2015年1月10日期间所有发票的金额,然后查看下一张发票(2015年1月10日之后),以确定下一个窗口的开始日期(我的情况是2015年2月20日)。请仅使用相关标签标记问题。
SELECT SUM(if(item_id = 1, invoice_amount, 0)) OVER (
    PARTITION BY customer_id 
    ORDER BY invoice_date ASC 
    RANGE BETWEEN 31556926 PRECEDING AND CURRENT ROW
) FROM INVOICE_DETAILS;`