查看来自 Snowflake 外部的查询

Posted

技术标签:

【中文标题】查看来自 Snowflake 外部的查询【英文标题】:Viewing queries coming from outside Snowflake 【发布时间】:2021-07-16 14:03:46 【问题描述】:

我知道与 account_usage 和 information_schema query_history 函数系列相关的 query_history 视图。但是,我找不到一种方法来监控从雪花外部发送到雪花的查询。例如,我有 Power BI 访问 Snowflake 数据库,但 PBI 发送到 Snowflake 的查询似乎没有出现在查询历史记录中。这个可以看吗?

【问题讨论】:

也许是个幼稚的问题,但您不是使用专用用户/仓库从 PBI 连接到 SF 吗? 是的,但这有什么不同? QUERY_HISTORY - 列 WAREHOUSE_ID/USER_NAME/ROLE_NAME 可用于确定源自 Power BI 的特定查询 我同意这应该可行,但 PBI 查询未显示在视图返回的结果集中。 我找到了我的 PBI 查询。问题是结果集中的数据库名称被设置为 NULL,而我正在寻找我知道正在被命中的特定数据库。如果您想输入您的 cmets 作为答案,我会投票并接受它以支持您的努力。 【参考方案1】:

可以在Query History view 中找到针对 Snowflake 运行的查询(ACCOUNT_USAGE 架构有 45 分钟的数据延迟)。

如果外部工具(此处为 Power BI)使用专用的虚拟仓库/用户/角色,则很容易按以下列之一过滤记录:WAREHOUSE_ID/USER_NAME/ROLE_NAME

另一种选择是使用专用的表值函数:

select * 
from table(information_schema.query_history_by_user(USER_NAME =>'<power_bi_user>')) 
order by start_time desc;

【讨论】:

阅读本文的人需要注意的一点。 PBI 对其发出查询的数据库的名称不会出现在结果集的 DATABASE_NAME 列中。它将为 NULL。

以上是关于查看来自 Snowflake 外部的查询的主要内容,如果未能解决你的问题,请参考以下文章

如何通过查询从Snowflake中创建特定视图的表

为啥 Snowflake 中这两个相似的查询具有非常不同的性能?

您可以将文件展平到 Snowflake 中的外部表吗?

外部表的用例?

Snowflake - 通过外部访问查看使用情况

子查询使用来自外部查询的未分组列“omt.actualendtime”