这是视图定义(运行良好)。视图(已创建)
CREATE OR REPLACE VIEW my_view
AS WITH Q1
AS (SELECT MAX(LOAD_DT) AS LOAD_DT FROM load_table WHERE UCASE(TBL_NM) = 'FACT_TABLE')
SELECT F.COLUMN1
, F.COLUMN2
FROM Q1, FACT_TABLE F
WHERE Q1.LOAD_DT = F.TRAN_DT
;
但是,运行时
SELECT * from my_view;
获取以下错误消息:失败:semanticexception行n:m在视图my\u view….的定义中找不到表“q1”。。
看来Hive试图把q1(即cte)当作一个物理表。有什么办法解决这个问题吗?
谢谢你,娜塔莉亚
1条答案
按热度按时间rslzwgfq1#
在我们的环境中,我们也遇到过类似的问题。回答你的问题,这是Hive里的虫子。幸运的是,我们有一个解决办法使它工作。如果您使用的是 Impala 和Hive,并且两者都使用相同的元存储。在 Impala 中创建视图,它将在Hive和 Impala 上工作。
原因:配置单元正在将您的数据库名称附加到所创建的cte引用中,这是导致问题的原因。
谢谢,尼奥