自最早发票日期起的12个月滚动数据-Hadoop
寻求以下问题陈述的帮助 I/p数据集:自最早发票日期起的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
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;`