问题描述
(寻找用 external table
或 insert overwrite table
创造的每一种可能性)。
所以我必须像在蜂巢中的 oracle 一样制作双表。 它将用作连接表,查询如下:
...
LEFT OUTER JOIN
(SELECT 'Y' flag FROM dual
UNION
SELECT 'N' flag FROM dual
)rwrw
WHERE 1=1
...
当数据存储在“/user/hive/warehouse/temp.db/”时,最好的方法是什么?
谢谢
解决方法
Hive 没有像 oracle 那样的 dual
表,但实现它的最佳方法如下:
...
LEFT OUTER JOIN
(SELECT 'Y' as flag
UNION
SELECT 'N' as flag
)rwrw
WHERE 1=1
...
,
最有效的方式是使用栈,它会生成你可以在查询中使用的表,它不会读取hdfs,它是内存表:
with temp_table as (
select stack(2,--the number of tuples
'Y','N'
) as flag
)
select
...
LEFT OUTER JOIN temp_table
...
再看一个使用堆栈的例子:https://stackoverflow.com/a/57363924/2700344