我有一个配置单元查询,它的格式是,
select . . . from table1 left join (select . . . from table2) on (some_condition)
根据环境的不同,表2可能不存在。所以如果只有table2存在,我想加入,否则就忽略子查询。
下面的查询返回表\u名称(如果存在),
show tables in {DB_NAME} like '{table_name}'
但我不知道如何将它集成到我的查询中,以便仅在它存在时进行选择。
在配置单元查询中是否有方法在选择之前检查表是否存在。
谢谢你的帮助
注意:如果表不存在,我不想创建它。
1条答案
按热度按时间dohp0rv51#
评论中已经提到hive不支持它
if-else
构造,因此如果您想拥有它,就必须从bash或hpl/sql等语言中借用它。我建议如下:
将查询的两个版本作为视图定义放置到单独的文件中:
如果存在,请查看\u ddl \u。hql:
如果不存在,则查看\u ddl\u。hql:
添加用于检测实际视图定义并复制到预定义位置的shell脚本:
放置\u正确的\u视图\u source.sh
将以下内容添加到脚本/init脚本中:
瞧!视图中的查询是正确的
target_view
可以在你的剧本中使用。