hadoop - MAX 中的 NULL,HIVE 中的 MIN 函数

标签 hadoop hive hdfs bigdata

在 Hive 中计算 MAXMIN 函数时,我需要包含 NULL 值。例如,如果我有表:

id    values
A     1
B     3
C     NULL

然后 MAX(values) 应该返回 NULL

最佳答案

您可以创建一个标志,表明在您的 key 组中有 NULL。然后您可以聚合新创建的列并查找您的标志是否存在,表明该组中至少有一个 NULL

数据:

key     val
-----------
A       1
A       NULL
B       3  
B       2
C       NULL
C       10
C       4

查询 0:

SELECT key
  , CASE WHEN ARRAY_CONTAINS(cs, 1) THEN NULL ELSE m END AS col_max
FROM (
  SELECT key
    , MAX(val) AS m
    , COLLECT_SET(CASE WHEN val IS NULL THEN 1 ELSE 0 END) AS cs
  FROM database.table
  GROUP BY key ) x;

您也可以使用 SUM()(或 MAX())代替 COLLECT_SET()

查询 1:

SELECT key
  , CASE WHEN cs > 0 THEN NULL ELSE m END AS col_max
FROM (
  SELECT key
    , MAX(val) AS m
    , SUM(CASE WHEN val IS NULL THEN 1 ELSE 0 END) AS cs
  FROM database.table
  GROUP BY key ) x;

输出:

key    col_max
--------------
A      NULL 
B      3 
C      NULL

关于hadoop - MAX 中的 NULL,HIVE 中的 MIN 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38077733/

相关文章:

hadoop - 无法找到或加载主类 org.apache.hadoop.hdfs.server.namenode.Namenode

hadoop - 哪个更适合做日志分析

scala - ClassNotFoundException : com. 数据 block .spark.csv.DefaultSource

hadoop - 配置单元,请求特定范围内的文件

date - 如何计算 hive 中的星期日期?

amazon-web-services - 使用 Scala 读取 .aws/credentials 文件以获取来自 spark 的 hadoop conf 设置

r - 安装 RHive : ant not building

python - 如何在 bash 中将值插入到 hive 表中?

java - Hadoop 将数据附加到 hdfs 文件并忽略重复条目

java - Hadoop命令错误中FSIMAGE和EDIT文件的内容