Hive 具有UNION ALL的配置单元CTE正在引发表未找到异常
我的意图是使用Hive 具有UNION ALL的配置单元CTE正在引发表未找到异常,hive,Hive,我的意图是使用CTE只加载一次表,并重用CTE表,以避免在配置单元中加载多个表和阶段。 但是下面的配置单元查询正在运行,在运行cloudera 5.11版本时,会抛出未找到的表案例异常。 查询使用中有错误吗 WITH cases AS ( SELECT nbr ,id ,date_l2 ,date_l3 ,date_l4 ,date_l5 ,level_2 ,level_3
CTE
只加载一次表,并重用CTE
表,以避免在配置单元中加载多个表和阶段。
但是下面的配置单元查询正在运行,在运行cloudera 5.11版本时,会抛出未找到的表案例
异常。
查询使用中有错误吗
WITH cases
AS (
SELECT nbr
,id
,date_l2
,date_l3
,date_l4
,date_l5
,level_2
,level_3
,level_4
,level_5
FROM volume
)
SELECT nbr
,id
,CONCAT (
nbr
,'-L2'
) AS enbr
,'L2' AS level_nm
,date_l2 AS dt
FROM cases
WHERE level_2 = true
UNION ALL
SELECT nbr
,id
,CONCAT (
nbr
,'-L3'
) AS enbr
,'L3' AS level_nm
,date_l3 AS dt
FROM cases
WHERE level_3 = true
UNION ALL
SELECT nbr
,id
,CONCAT (
nbr
,'-L4'
) AS enbr
,'L4' AS level_nm
,date_l4 AS dt
FROM cases
WHERE level_4 = true
UNION ALL
SELECT nbr
,id
,CONCAT (
nbr
,'-L5'
) AS enbr
,'L5' AS level_nm
,date_l5 AS dt
FROM cases
WHERE level_5 = true
输出:
nbr id enbr等级\u nm dt
00193092 84575 00193092-L2 2016-10-19
00193092 84575 00193092-L3 L3 2016-10-20
00193092 84575 00193092-L4 L4 2016-10-20考虑在问题主体中使用适当的格式,并提供一个最小的工作示例。不确定您的错误,但仍将对其中提到的每个选择执行CTE。它的行为与您所希望的不一样。对它所做的事情进行一些解释会很有帮助。@Andrew,OP会尽快提供样本数据。谢谢Dudu Markovitz。成功了。下面是示例输出。nbr id enbr等级:nm dt 00193092 84575 00193092-L2 L2 2016-10-19 00193092 84575 00193092-L3 L3 2016-10-20 00193092 84575 00193092-L4 L4 2016-10-20请将其添加到原始帖子中
select t.nbr
,t.id
,concat(t.nbr,'-L',s.nm) as enbr
,concat('L',s.nm) as level_nm
,s.dt
from volume t
lateral view stack
(
4
,'2',t.level_2,t.date_l2
,'3',t.level_3,t.date_l3
,'4',t.level_4,t.date_l4
,'5',t.level_5,t.date_l5
) s as nm,lvl,dt
where s.lvl = true
;