Чтобы проверить, является ли элемент массива в разобранном виде пустым, используйте это:
select * from(
select explode( array("OTC","POS","CCC","")) as explo
) s where explo=''
Результатом является одна пустая строка: http://demo.gethue.com/hue/editor?editor=289227&type=hive
Если вы хотите идентифицировать массив, содержащий пустой элемент, используйте array_contains
:
select * from(
select array("OTC","POS","CCC","") as a
) s where array_contains(a,'')
Результат:
["OTC","POS","CCC",""]
См. Тест здесь: http://demo.gethue.com/hue/editor?editor=289234
Если вы хотите найти массив, содержащий только один элемент - используйте пустую строкуsize(array)=1 and array_contains(array,'')
, см. Здесь: http://demo.gethue.com/hue/editor?editor=289236
Но есть также такая вещь, как пустой массив : http://demo.gethue.com/hue/editor?editor=289239&type=hive Отображается так же, как массив, содержащий пустой элемент, ноне то же самое: http://demo.gethue.com/hue/editor?editor=289240&type=hive
А чтобы найти пустой массив, используйте size()=0
Пример: http://demo.gethue.com/hue/editor?editor=289241:
select * from(
select array() as a
) s where size(a)=0
Возвращает []
Выполнить всеэти запросы на ваши данные, и вы станете просветленным.Я думаю, что это пустые массивы, а не пустой элемент в вашем случае
Пустой массив не равен NULL, потому что это все еще объект массива нулевого размера: http://demo.gethue.com/hue/editor?editor=289242
select * from(
select array() as a
) s where a is null
Возвращает нетСтроки
Улучшенный массив запросов только без разнесения и используйте array_contains
и size
для поиска пустых массивов и пустых элементов.Используйте LATERAL VIEW OUTER для генерации строк, даже если LATERAL VIEW обычно не генерирует строки.Боковой обзор без внешнего слова работает как ВНУТРЕННЕЕ СОЕДИНЕНИЕ, см. Документы о Боковой обзор внешний