Импала - CREATE TABLE после предложения WITH - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть запрос с несколькими предложениями WITH, затем CREATE TABLE:

    WITH TABLE_1 AS (
        SELECT * FROM SOMEWHERE_1
    ), TABLE_2 AS (
        SELECT * FROM SOMEWHERE_2

    (
        CREATE TABLE TABLE_3 AS
        (
            SELECT TABLE_1.*, TABLE_2.*
            FROM TABLE_1 
            INNER JOIN TABLE_2 ON TABLE_2.key = TABLE_1.key
        )
    )

Однако у меня возникает следующая ошибка:

Обнаружено: CREATE Ожидается: SELECT,ЗНАЧЕНИЯ, С CAUSED BY: Исключение: Синтаксическая ошибка

Поэтому я попытался сначала поместить оператор CREATE:

    CREATE TABLE_3 AS
    (
        WITH TABLE_1 AS (
            SELECT * FROM SOMEWHERE_1
        ), TABLE_2 AS (
            SELECT * FROM SOMEWHERE_2

        (
            SELECT TABLE_1.*, TABLE_2.*
            FROM TABLE_1 
            INNER JOIN TABLE_2 ON TABLE_2.key = TABLE_1.key
        )
    )

Но теперь у меня появляется следующая ошибка:

AnalysisException: не удалось разрешить ссылку на таблицу: 'TABLE_1'

Обратите внимание, что:

  • Вышеуказанный запрос работает без оператора "CREATE"
  • Моя нынешняя ситуация более сложна, чем этот простой пример, и я хотел бы для ясности оставить операторы WITH.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Кроме того, вы также можете сделать ...

WITH TABLE_1 AS (
      SELECT * FROM SOMEWHERE_1
     ),
     TABLE_2 AS (
      SELECT * FROM SOMEWHERE_2
     )
SELECT TABLE_1.*, TABLE_2.* INTO TABLE_3
FROM TABLE_1 INNER JOIN
     TABLE_2
     ON TABLE_2.key = TABLE_1.key

Настоятельно рекомендуется всегда иметь под рукой DDL и запускать INSERT INTO TABLE SELECT * FROM CTE

0 голосов
/ 15 февраля 2019

Хммм.Я думаю, что это будет работать:

CREATE TABLE TABLE_3 AS
    WITH TABLE_1 AS (
          SELECT * FROM SOMEWHERE_1
         ),
         TABLE_2 AS (
          SELECT * FROM SOMEWHERE_2
         )
    SELECT TABLE_1.*, TABLE_2.*
    FROM TABLE_1 INNER JOIN
         TABLE_2
         ON TABLE_2.key = TABLE_1.key;

Конечно, у вас будут другие проблемы, такие как дублирование столбца key в результатах - и это должно вызвать еще одну ошибку.На практике вы должны выбрать именно те столбцы, которые вам нужны.

...