蜂巢/色相视图返回最新分区中的所有行(年/月/日)

时间:2019-05-20 06:49:42

标签: sql hive bigdata hue

我想创建一个仅选择最新分区行的视图。我可以通过加入对值进行最大值的子查询来做到这一点,但这需要很长时间。我希望可以将show patition的结果加载到一个表中,然后以某种方式在where子句中使用它,但这变得一团糟。

有什么优雅的方法吗?

样本表(customer_usage)如下:

customer_id
event_id
load_year
load_month
load_day
total_usage

所有整数。

show partition customer_usage返回:

>     2 load_year=2018/load_month=10/load_day=10
>     3 load_year=2018/load_month=10/load_day=11
>     4 load_year=2018/load_month=10/load_day=12
>     5 load_year=2018/load_month=10/load_day=13
>     6 load_year=2018/load_month=10/load_day=14
>     7 load_year=2018/load_month=10/load_day=15
>     8 load_year=2018/load_month=10/load_day=16
>     9 load_year=2018/load_month=10/load_day=17

表格式是hadoop上的镶木地板。

2 个答案:

答案 0 :(得分:0)

create or replace view vw_customer_usage
as select * from customer_usage
where load_day >= current_date - 7

如果您需要最近7天的数据。同样,为月份和年份添加where子句。

答案 1 :(得分:0)

您可以尝试使用shell脚本来排序并获取最后一个分区,该分区将成为您的最后一个分区。

hive -e "show partitions <table_name>" | sort -V | tail -1

我尝试使用具有3个分区(年,月,日)的表,并将字符串作为数据类型。上面的命令为我获取了最新的分区。

希望这会有所帮助:)