Hive中具有多个维度的滚动7天总和

Hive中具有多个维度的滚动7天总和,hive,hiveql,Hive,Hiveql,我有如下数据,希望通过以下维度获得(1)今天的用户编号和(2)过去7天的用户编号。我的查询没有返回我想要的结果。有人能修复我的配置单元SQL代码吗 e、 g.)今天=2018年8月9日 过去7天=2018年8月2日-2018年8月8日 维度:日期、网站、国家/地区id、产品id 指标:用户 原始数据: >t_date |website |country_id|product_id|users >8/1/2018 Whatev.com 2 EFG

我有如下数据,希望通过以下维度获得(1)今天的用户编号和(2)过去7天的用户编号。我的查询没有返回我想要的结果。有人能修复我的配置单元SQL代码吗

e、 g.)今天=2018年8月9日

过去7天=2018年8月2日-2018年8月8日

维度:日期、网站、国家/地区id、产品id

指标:用户

原始数据:

    >t_date  |website |country_id|product_id|users
    >8/1/2018   Whatev.com  2     EFG        12 
    >8/2/2018   Whatev.com  2     EFG        23
    >8/3/2018   Whatev.com  2     EFG        34 
    >8/4/2018   Whatev.com  2     EFG        13
    >8/5/2018   Whatev.com  2     EFG        47 
    >8/6/2018   Whatev.com  2     EFG        39
    >8/7/2018   Whatev.com  2     EFG        17 
    >8/8/2018   Whatev.com  2     EFG        34
    >8/1/2018   Google.com  1     ABC        10 
    >8/2/2018   Google.com  1     ABC        20
    >8/3/2018   Google.com  1     ABC        30 
    >8/4/2018   Google.com  1     ABC        14
    >8/5/2018   Google.com  1     ABC        40 
    >8/6/2018   Google.com  1     ABC        35
    >8/7/2018   Google.com  1     ABC        15 
    >8/8/2018   Google.com  1     ABC        32
预期成果:

date      | website  |country_id|product_id|today_users|past_7D_users|
2018-08-08|Google.com|   1      | ABC      | 32        |164          |
2018-08-09|Whatev.com|   2      | EFG      | 34        |185          |

好的。。自我回答我的问题很奇怪,但我找到了解决办法。如果有人知道一个更好的,简化的查询,请分享

SELECT x.date
,x.website
,x.country_id
,x.product_id
,x.today_users
,SUM(x.today_users) OVER (PARTITION BY x.website, x.country_id, x.product_id
                          ORDER BY x.date ASC ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING) AS Past_7D_Users

FROM (SELECT 
             date, 
             website,
             country_id,
             product_id,
             SUM(user) AS today_users

    FROM  Table
    GROUP BY 
    date, website, country_id, product_id
)x
GROUP BY x.date
,x.website
,x.country_id
,x.product_id
,x.today_users
;

请发布当前输出和一些示例数据..我猜windowing子句应该是介于前面7行和前面1行之间的
谢谢!我添加了示例数据。对于此示例数据,我的查询工作正常(固定为前面的7),但我的实际数据非常大,无法以这种方式工作..:(
SELECT x.date
,x.website
,x.country_id
,x.product_id
,x.today_users
,SUM(x.today_users) OVER (PARTITION BY x.website, x.country_id, x.product_id
                          ORDER BY x.date ASC ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING) AS Past_7D_Users

FROM (SELECT 
             date, 
             website,
             country_id,
             product_id,
             SUM(user) AS today_users

    FROM  Table
    GROUP BY 
    date, website, country_id, product_id
)x
GROUP BY x.date
,x.website
,x.country_id
,x.product_id
,x.today_users
;