Hive Windowing:分区上的不同结果

Hive Windowing : distinct results on partition

您好,我在学习 Hive 的 WINDOWING 功能时遇到了一个问题。

我试图找出一个月内的客户数量:

my_table:

我对 3 个变量进行了划分:收购的年份/月份和 rate_plan


SELECT (first_value(stock) OVER w + sum(incomers) OVER w) AS stock_monthly,
year(date_in_out) AS year_in,
month(date_in_out) AS month_in,
rate_plan_name
FROM my_table
WINDOW w AS (PARTITION BY rate_plan_name, year(date_in_out), month(date_in_out) ORDER BY date_in_out ASC);

我得到了结果

我得到不同的 monthly_stock 值,而 year_in / month_in 和 rate_plan_name 在我的数据集中是相同的。

我的问题是为什么这个值不同?我希望这里也一样。

使用 window 规范中的 order by date_in_outsum 会针对每一行进行计算。如果您需要按年月级别汇总,请使用

WINDOW w AS (PARTITION BY rate_plan_name, year(date_in_out), month(date_in_out))

但请注意 first_value 仍然需要一个 order by

我想你正在寻找,

SELECT first_value(stock) OVER(w ORDER BY date_in_out) + sum(incomers) OVER w AS stock_monthly,
year(date_in_out) AS year_in,
month(date_in_out) AS month_in,
rate_plan_name
FROM my_table
WINDOW w AS (PARTITION BY rate_plan_name, year(date_in_out), month(date_in_out))