【问题标题】:how to make max function in hive query to ignore _HIVE_DEFAULT_PARTITION__如何使配置单元查询中的 max 函数忽略 _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 查询忽略默认分区(如果存在)同时返回该列的最大值?

【问题讨论】:

    标签: hadoop hive max impala hive-partitions


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 2020-05-26
      • 1970-01-01
      相关资源
      最近更新 更多