类别:

系统函数 (系统信息)

SYSTEM$GET_DBT_LOG

返回 dbt Projects on Snowflake 指定运行的日志。

将此函数与 DBT_PROJECT_EXECUTION_HISTORY 函数结合使用,以编程方式访问 dbt 工件和日志。

语法

SYSTEM$GET_DBT_LOG ( '<query_id>' )
Copy

实参

query_id

要为其记录日志的运行的查询 ID。

返回

该函数返回 dbt.log 文件的最后 1,000 行。有关完整日志,请下载存档 ZIP 文件。

有关详细信息和示例,请参阅 以编程方式访问 dbt 工件和日志

访问控制要求

此函数仅包括来自您具有以下权限的工作区和 dbt 项目的运行:

  • 工作区上的 OWNERSHIP 或 USAGE

  • dbt 项目上的 OWNERSHIP、USAGE 或 MONITOR

要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 此系统函数仅适用于 dbt 项目对象;它不适用于工作区。

  • 此系统函数不支持根据 CREATE DBT PROJECT 或 ALTER DBT PROJECT ... ADD VERSION 生成的查询 IDs。

  • 不支持直接查询文件内容(例如,查询示例)。

  • 如果 query_id 为 NULL,或者不是 dbt 执行,则会出现错误。

  • dbt 项目结果最多可保留 14 天。

  • 如果在上传文件之前运行超时、被取消或出现故障,则日志可能不可用。在这种情况下,运行在 dbt 历史记录中显示为 UNHANDLED ERROR,这些条目可能不包括日志。

  • 您不能使用此函数获取正在进行的运行的日志,因为日志文件仅在运行完成后可用。

示例

以下示例使用 DBT_PROJECT_EXECUTION_HISTORY 查找 MY_DBT_PROJECT 最近的 dbt 项目执行,再使用 SYSTEM$GET_DBT_LOG 提取该执行的 dbt 运行日志,方便您检查运行时的具体情况。

--Look up the most recent dbt Project execution
SET latest_query_id = (SELECT query_id
  FROM TABLE(INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY())
  WHERE OBJECT_NAME = 'MY_DBT_PROJECT'
  ORDER BY query_end_time DESC LIMIT 1);

--Get the dbt run logs for the most recent dbt Project execution
SELECT SYSTEM$GET_DBT_LOG($latest_query_id);
Copy
============================== 15:14:53.100781 | 46d19186-61b8-4442-8339-53c771083f16 ==============================
[0m15:14:53.100781 [info ] [Dummy-1   ]: Running with dbt=1.9.4
...
[0m15:14:58.198545 [debug] [Dummy-1   ]: Command `cli run` succeeded at 15:14:58.198121 after 5.19 seconds

有关更多信息,请参阅 以编程方式访问 dbt 工件和日志

语言: 中文