我试图收集与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"