Snowflake cloud data platform 获取流程中涉及的表的列表
我想运行一系列查询和几百条ETL语句,并获得从中选择表的列表。有没有办法在雪花中做到这一点?我想知道我是否可以设置与某个角色/仓库的连接,并以这种或类似的方式缩减信息,但不确定有什么聪明的方法可以获得这些信息 谢谢你 要从ETL中获取SELECT语句: 在ETL开始时,设置查询标记或保存会话ID:Snowflake cloud data platform 获取流程中涉及的表的列表,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我想运行一系列查询和几百条ETL语句,并获得从中选择表的列表。有没有办法在雪花中做到这一点?我想知道我是否可以设置与某个角色/仓库的连接,并以这种或类似的方式缩减信息,但不确定有什么聪明的方法可以获得这些信息 谢谢你 要从ETL中获取SELECT语句: 在ETL开始时,设置查询标记或保存会话ID: alter session set query_tag='MY_ETL'; -- Tag queries select current_session(); -- Or save this SESS
alter session set query_tag='MY_ETL'; -- Tag queries
select current_session(); -- Or save this SESSION_ID
select * from table(information_schema.query_history_by_session(session_id=>298348393433));
select query_text from table(result_scan(-1))
where query_type='SELECT'
order by start_time;
;
然后按查询标签筛选历史记录:
select * from table(information_schema.query_history());
select query_text from table(result_scan(-1))
where query_type='SELECT' and query_tag='MY_ETL'
order by start_time;
或按会话ID:
alter session set query_tag='MY_ETL'; -- Tag queries
select current_session(); -- Or save this SESSION_ID
select * from table(information_schema.query_history_by_session(session_id=>298348393433));
select query_text from table(result_scan(-1))
where query_type='SELECT'
order by start_time;
;
要获得表和其他对象的列表,可以对上面返回的每个SELECT语句执行EXPLAIN,并检查objects列。这有一些警告——例如,它基于逻辑计划,而不是实际执行
如果太重,一个技巧是将元数据(如表名)注入注释中:
select /* metadata here */ 1;
然后从查询文本中提取元数据:
select * from table(information_schema.query_history());
select regexp_substr(query_text, '/\\*(.*?)\\*/', 1, 1, 'e') metadata, *
from table(result_scan(-1))
where query_type='SELECT' and query_tag='MY_ETL'
order by start_time desc;
但这将丢失隐藏在视图和函数中的表
希望对你有帮助