Hive collect_list()不收集NULL值



我试图收集与NULL s的列以及该列中的一些值…但collect_list忽略了NULL s,只收集其中有值的。是否有一种方法可以检索NULL s以及其他值?

SELECT col1, col2, collect_list(col3) as col3
FROM (SELECT * FROM table_1 ORDER BY col1, col2, col3)
GROUP BY col1, col2;

实际col3值

0.9
NULL
NULL
0.7
0.6 

结果col3值

[0.9, 0.7, 0.6]

我希望有一个hive解决方案,看起来像这个[0.9, NULL, NULL, 0.7, 0.6]应用collect_list后。

这个函数是这样工作的,但是我找到了下面的解决方法。在语句中添加大小写来检查和保留null。

SELECT col1, 
    col2, 
    collect_list(CASE WHEN col3 IS NULL THEN 'NULL' ELSE col3 END) as col3
FROM (SELECT * FROM table_1 ORDER BY col1, col2, col3)
GROUP BY col1, col2

现在,因为您有一个字符串元素('NULL'),所以整个结果集是一个字符串数组。最后,只需将字符串数组转换为双精度值数组。

注意:如果你的列是STRING,它不会有一个NULL值,即使你的外部文件没有任何数据的列

您可以使用验证检查,如"col3是NULL和。col3不是NULL"

相关内容

  • 没有找到相关文章

最新更新