如何使配置单元查询中的 max 函数忽略 _HIVE_DEFAULT_PARTITION__
Posted
技术标签:
【中文标题】如何使配置单元查询中的 max 函数忽略 _HIVE_DEFAULT_PARTITION__【英文标题】:how to make max function in hive query to ignore _HIVE_DEFAULT_PARTITION__ 【发布时间】:2021-05-13 02:19:47 【问题描述】:我有一个视图,它使用 max 来显示最新的分区(格式为 2021-01
、2021-02
、2021-03
、2021-04
)。蜂巢表也有_HIVE_DEFAULT_PARTITION__
。
当我们在 Impala 中运行查询时,分区上的 max 给出正确的值 2021-04
忽略 _HIVE_DEFAULT_PARTITION__
但当我们在 Hive 中运行查询时同样不起作用,因为它返回 _HIVE_DEFAULT_PARTITION__
有没有办法让 Hive 查询忽略默认分区(如果存在)同时返回该列的最大值?
【问题讨论】:
【参考方案1】:你可以过滤它:
select max(partition_col) from your_table where partition_col != "__HIVE_DEFAULT_PARTITION__"
如果您不需要__HIVE_DEFAULT_PARTITION__
中的数据,可以将其删除:
ALTER TABLE your_table DROP PARTITION (partition_col='__HIVE_DEFAULT_PARTITION__');
如果使用max(partition_col)
,您想聚合其他内容并且不想排除__HIVE_DEFAULT_PARTITION__
分区,则将__HIVE_DEFAULT_PARTITION__
转换为NULL 可能是一种解决方案:
select max(case when partition_col = "__HIVE_DEFAULT_PARTITION__" then NULL else partition_col end) as max_partition_col,
--aggregate something else including HIVE_DEFAULT_PARTITION
from your_table
【讨论】:
以上是关于如何使配置单元查询中的 max 函数忽略 _HIVE_DEFAULT_PARTITION__的主要内容,如果未能解决你的问题,请参考以下文章