Snowflake cloud data platform 获取流程中涉及的表的列表

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

我想运行一系列查询和几百条ETL语句,并获得从中选择表的列表。有没有办法在雪花中做到这一点?我想知道我是否可以设置与某个角色/仓库的连接,并以这种或类似的方式缩减信息,但不确定有什么聪明的方法可以获得这些信息

谢谢你

要从ETL中获取SELECT语句:

在ETL开始时,设置查询标记或保存会话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 * 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;
但这将丢失隐藏在视图和函数中的表

希望对你有帮助