在配置单元中创建只有 Y 和 N 值的表创建外部表或插入覆盖

问题描述

(寻找用 external tableinsert 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

多列示例:https://stackoverflow.com/a/55157055/2700344