You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Snowflake中避开ACCOUNT_USAGE延迟,关联查询对象与标签?

在Snowflake中通过INFORMATION_SCHEMA关联查询对象与标签(无需硬编码)

完全可行,核心思路是利用INFORMATION_SCHEMA的系统视图批量获取目标对象清单,再通过LATERAL JOIN结合TAG_REFERENCES表函数,实现对象信息与标签信息的关联查询,避免硬编码对象名称。

示例1:查询所有数据库的GT_OWNER标签

SELECT
    d.database_name,
    tr.tag_name,
    tr.tag_value
FROM
    INFORMATION_SCHEMA.DATABASES d,
    LATERAL TABLE(TAG_REFERENCES(CONCAT('"', d.database_name, '"'), 'DATABASE')) tr
WHERE
    tr.tag_name = 'GT_OWNER' -- 可选:过滤特定标签,去掉则返回所有标签
ORDER BY
    d.database_name;

代码说明

  • INFORMATION_SCHEMA.DATABASES:返回当前账户下所有可访问的数据库清单
  • CONCAT('"', d.database_name, '"'):拼接带引号的数据库标识符,兼容包含特殊字符或大小写敏感的对象名称
  • LATERAL TABLE(TAG_REFERENCES(...)):对每个数据库实例调用表函数,查询其关联的标签信息
  • 若需要查询所有标签,直接移除WHERE tr.tag_name = 'GT_OWNER'条件即可

扩展到其他对象类型

如果需要查询架构、表等其他对象的标签,只需替换对应的INFORMATION_SCHEMA视图和TAG_REFERENCES的对象类型参数:

查询所有架构的标签

SELECT
    s.catalog_name,
    s.schema_name,
    tr.tag_name,
    tr.tag_value
FROM
    INFORMATION_SCHEMA.SCHEMATA s,
    LATERAL TABLE(TAG_REFERENCES(CONCAT('"', s.catalog_name, '"."', s.schema_name, '"'), 'SCHEMA')) tr
ORDER BY
    s.catalog_name, s.schema_name;

查询所有表的标签

SELECT
    t.table_catalog,
    t.table_schema,
    t.table_name,
    tr.tag_name,
    tr.tag_value
FROM
    INFORMATION_SCHEMA.TABLES t,
    LATERAL TABLE(TAG_REFERENCES(CONCAT('"', t.table_catalog, '"."', t.table_schema, '"."', t.table_name, '"'), 'TABLE')) tr
ORDER BY
    t.table_catalog, t.table_schema, t.table_name;

权限要求

  • 对目标对象(数据库、架构、表等)拥有USAGE权限
  • 对标签所在的架构(如SF_UTILS/GLOBAL_TAGS)拥有USAGE权限

内容的提问来源于stack exchange,提问作者NickW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:42:53