Hive Windowing:分区上的不同结果
Hive Windowing : distinct results on partition
您好,我在学习 Hive 的 WINDOWING 功能时遇到了一个问题。
我试图找出一个月内的客户数量:
my_table:
- date_in_out: 获取日期
- rate_plan_name : 字符串
- 库存:整数
- 收入者:int
我对 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_out
,sum
会针对每一行进行计算。如果您需要按年月级别汇总,请使用
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))
您好,我在学习 Hive 的 WINDOWING 功能时遇到了一个问题。
我试图找出一个月内的客户数量:
my_table:
- date_in_out: 获取日期
- rate_plan_name : 字符串
- 库存:整数
- 收入者:int
我对 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_out
,sum
会针对每一行进行计算。如果您需要按年月级别汇总,请使用
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))