前28天和前1天之间的天数->使用什么数据范围

b1uwtaje  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(280)

我正在创建一个代码来检查表的最后28天。
我遇到了这个密码

WINDOW w AS (PARTITION BY abs_wd.abs_wd_employee_id ORDER BY abs_wd.date_diff RANGE BETWEEN 28 PRECEDING AND 1 PRECEDING)

我的问题是:这是从昨天到28日从昨天?换言之,如果我只用“previous”,这是从昨天算起的还是我必须加上“1”
谢谢!:)

ldfqzlk8

ldfqzlk81#

在hive window子句中 PRECEDING 指当前行之前的行数。类似的词 FOLLOWING 请告诉我当前行后面的行。
例如,在您的查询中 BETWEEN 28 PRECEDING 基本上是指在当前行后面28行。
因此,请回答您的问题,默认情况下,窗口在当前行上工作,但如果您要从上一个窗口开始,则需要有一个从前一行开始的范围(正如您在问题中正确完成的那样),如下所示:

WINDOW w AS (PARTITION BY abs_wd.abs_wd_employee_id ORDER BY abs_wd.date_diff ROWS BETWEEN 28 PRECEDING AND 1 PRECEDING)

例子:
基于示例cloudera客户数据集,我在orders表上运行了一个sum聚合,窗口为2个previous和1个previous。如果查看第4行,window函数将返回一个窗口中从昨天日期到昨天日期前一天的订单总数。

示例中使用的查询:

sum(total_orders) over(order by order_date rows between 2 preceding and 1 preceding) as window_result

更多关于配置单元文档中的窗口函数。

相关问题