如何使配置单元查询中的 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-012021-022021-032021-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__的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Django 中的 __unicode__() 函数中查询数据差异

如何使dango url忽略urls.py中的查询字符串

Excel中如何使用函数调用单元格数据

在EXCEL中,如何使用MAX和MIN函数

Python:如何在单元(鼻子)测试期间忽略装饰器?

如何使 Python 中的 json.dumps 忽略不可序列化的字段