Разное количество строк при создании таблицы или представления в Impala - PullRequest
0 голосов
/ 23 января 2019

Разное количество строк при попытке создать таблицу и представление в Impala

Я пытаюсь выполнить запрос в Impala, имеющий внешнее левое соединение с другой таблицей. Структура таблицы следующая:

SELECT COUNT (*)
FROM (
SELECT A.*,
    B.ORDERED_DATE,
    B.PROMISE_DATE,
    B.REQUEST_DATE,
    B.SCHEDULE_SHIP_DATE,
    A.SCHEDULED_START_DATE,
    A.SCHEDULED_COMPLETION_DATE,
               A.DATE_RELEASED,
               A.DATE_COMPLETED,
               B.ORDERED_DATE_DT,
               B.PROMISE_DATE_DT,
               B.REQUEST_DATE_DT,
               B.ORDERED_QUANTITY,
               a.DEMAND_SOURCE_LINE_NUMBER,
               B.FLOW_STATUS_CODE,
               A.ORDER_NUMBER
          FROM TABLE A
LEFT OUTER JOIN TABLE B
ON (A.DEMAND_SOURCE_LINE_ID) = (B.LINE_ID)
) AAAAA

Здесь Demand_source_line_id может быть нулевым.

Количество строк всегда отличается, если я выбираю count (*), count (1). Также внутренний выбор дает мне количество строк, отличное от внешнего. Также, если я пытаюсь создать представление из этого запроса, количество записей отличается от того, если я создаю таблицу из того же запроса.

Может ли кто-нибудь мне помочь?

Ожидается 3585 записей. Я получаю только 299 на счет (*) и 662 на счет (1) - идентификатор строки запроса по требованию не равен нулю для 662 записей.

1 Ответ

0 голосов
/ 24 января 2019

Как вы упомянули, Demand_source_line_id может быть нулевым, и вы используете условие on, поэтому определенно вы не получите ожидаемый результат, и это также повлияет на счетчик.Можете ли вы использовать функцию объединения в состоянии, например, coalesce (A.DEMAND_SOURCE_LINE_ID, -1) = coalesce (B.LINE_ID, -1).

...