我想创建一个仅选择最新分区行的视图。我可以通过加入对值进行最大值的子查询来做到这一点,但这需要很长时间。我希望可以将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上的镶木地板。
答案 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个分区(年,月,日)的表,并将字符串作为数据类型。上面的命令为我获取了最新的分区。
希望这会有所帮助:)