我希望能够使用正则表达式提取查询的源表。这将帮助我构建一个脚本来测试依赖关系,而不必访问集群。
示例:
use datalab2;
select
*
from hello as table1
left join (
select
*
from ${hiveconf:varable_db}.events
where test=1
) as table2 on
table2.test = table1.test
inner join datalab3.table3 as table3 on
table3.test = table1.test;
将返回:
<br>
hello <br>
${hiveconf:varable_db}.events <br>
datalab3.table3 <br>
答案 0 :(得分:0)
使用以下两个正则表达式来解决
1:“(with \ s + |,\ s *)([a-zA-Z0-9 _] +)\ s + as \ s * \(“
2:“(?<= [^ a-zA-Z0-9 \ _] FROM | [^ a-zA-Z0-9 \ _] JOIN)(\ s + | \ s + [^ \(]) ([a-zA-Z0-9 \。\ _ \ {\} \ $ \:] +)“
第一个收集所有带有语句名称的列表
示例:https://regex101.com/r/sX5hZ2/25
第二个获取查询中使用的所有表的列表,并带有语句
示例:https://regex101.com/r/sX5hZ2/26
第二个列表中的不同项将是查询使用的所有表