Создать временную таблицу с выбором и значениями - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь создать временную таблицу в Hive следующим образом:

CREATE TEMPORARY TABLE mydb.tmp2 
AS SELECT * FROM (VALUES (0, 'abc')) 
AS T (id , mystr);

Но это дает мне следующую ошибку:

SemanticException [Error 10296]: Values clause with table constructor not yet supported

Есть ли другой способ создатьвременная таблица с явным и прямым предоставлением значений в той же команде?

Моя конечная цель - выполнить команду MERGE, и временная таблица будет вставлена ​​после команды USING.Так что-то вроде этого:

MERGE INTO mydb.mytbl
USING <temporary table>
...

Ответы [ 2 ]

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

Использовать подзапрос вместо временной таблицы:

MERGE INTO mydb.mytbl t
USING  (SELECT 0 as id, 'abc' as mystr) tmp on tmp.id = t.id
0 голосов
/ 16 февраля 2019

Hive пока не поддерживает конструктор values.Вы можете добиться этого, используя следующий запрос:

CREATE TEMPORARY TABLE mydb.tmp2 
AS SELECT 0 as id, 'abc' as mystr;

Для объединения вы можете использовать временную таблицу, как показано ниже:

merge into target_table
using ( select * from mydb.tmp2) temp
on temp.id = target_table.id
when matched then update set ...
when not matched then insert values (...);
...