首页 > 解决方案 > 如何使配置单元查询中的 max 函数忽略 _HIVE_DEFAULT_PARTITION__

问题描述

我有一个视图,它使用 max 来显示最新的分区(格式为2021-01, 2021-02, 2021-03, 2021-04)。蜂巢表也有_HIVE_DEFAULT_PARTITION__

当我们在 Impala 中运行查询时,分区上的 max 给出了正确的2021-04忽略值,_HIVE_DEFAULT_PARTITION__但是当我们在 Hive 中运行查询时同样不起作用,因为它返回_HIVE_DEFAULT_PARTITION__

有没有办法让 Hive 查询在返回该列的最大值时忽略默认分区(如果存在)?

标签: hadoophivemaximpalahive-partitions

解决方案


你可以过滤它:

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__');

如果您想聚合其他内容并且不想排除分区,则转换__HIVE_DEFAULT_PARTITION__为 NULL 可能是一种解决方案:max(partition_col)__HIVE_DEFAULT_PARTITION__

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

推荐阅读