Почему Hive SQL возвращает значения NULL для определенного столбца в операторе Select, если в этом столбце есть все значения типа double? - PullRequest
0 голосов
/ 28 мая 2020

Я использую Hive SQL. Версия - Hive 1.1.0-cdh5.14.0. В моем примере ниже sp.close - это столбец со значениями типа double. Я проверил sp.column и определенно нет значений NULL. Тем не менее, в этом операторе выбора ниже sp.close показывает все значения NULL. Почему?

select
    step1.*,
    sp.close

from
    step1 left join stockprices2 sp on (
        step1.symbol = sp.symbol and
        step1.year = sp.year and
        step1.startmonth = sp.month and
        step1.startday = sp.day and
        step1.sector = sp.sector
    )

;

1 Ответ

1 голос
/ 28 мая 2020

Скорее всего, ваш left join не нашел подходящей строки в stockprices2. В этом случае строка из step1 сохраняется, но все столбцы из stockprices2 будут иметь null в наборе результатов. Таким образом база данных сигнализирует о том, что left join оказался пустым.

Вы можете легко убедиться в этом, просто заменив left join на inner join: вы должны вернуть меньше строк (где есть не соответствует в stockprices2, строка из step1 удаляется из набора результатов), и нет значений null в sp.close.

Или вы можете добавить один из столбцов, используемых в left join в предложении select, и вы увидите, что это тоже null.

select
    st.*,
    sp.close,
    sp.symbol   -- null too
from step1 st 
left join stockprices2 sp 
    on  st.symbol = sp.symbol 
    and st.year = sp.year 
    and st.startmonth = sp.month 
    and st.startday = sp.day 
    and st.sector = sp.sector

Боковое примечание: круглые скобки вокруг условий соединения излишни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...