ACCESS_HISTORY 视图:新增 parent_query_idroot_query_id

注意

此行为变更在 2023_08 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

Account Usage ACCESS_HISTORY 视图的行为如下:

变更前

对视图的查询不包括 parent_query_idroot_query_id 列。

变更后

对视图的查询包括 parent_query_idroot_query_id 列,其定义如下:

列名称

数据类型

描述

parent_query_id

TEXT

父作业的查询 ID,如果作业没有父作业,则查询 NULL。

root_query_id

TEXT

链中最顶层作业的查询 ID,如果作业没有父作业,则查询 NULL。

这些列在启用 2023_08 捆绑包后开始记录数据,是视图中的最后两列。查询 ID 对应 Account Usage ACCESS_HISTORY 视图中 query_id 列中的查询。这些列记录以下类型查询的查询 IDs :

  • 查询对另一个对象执行读取或写入操作。

    读取或写入操作 必须是 ACCESS_HISTORY 视图当前支持的操作。

  • 查询对调用存储过程的对象执行读取或写入操作。还支持嵌套存储过程调用。

例如,如果按顺序运行这些语句:

CREATE OR REPLACE PROCEDURE myproc_child()
RETURNS INTEGER
LANGUAGE SQL
AS
$$
  BEGIN
  SELECT * FROM mydb.mysch.mytable;
  RETURN 1;
  END
$$;

CREATE OR REPLACE PROCEDURE myproc_parent()
RETURNS INTEGER
LANGUAGE SQL
AS
$$
  BEGIN
  CALL myproc_child();
  RETURN 1;
  END
$$;

CALL myproc_parent();
Copy

对 ACCESS_HISTORY 视图的查询将按如下方式记录信息:

USE ROLE GOVERNANCE_VIEWER;

SELECT
  query_id,
  parent_query_id,
  root_query_id,
  direct_objects_accessed
FROM
  SNOWFLAKE.ACCOUNT_USAGE.ACCESS_HISTORY;
Copy
+----------+-----------------+---------------+-----------------------------------+
| QUERY_ID | PARENT_QUERY_ID | ROOT_QUERY_ID |      DIRECT_OBJECTS_ACCESSED      |
+----------+-----------------+---------------+-----------------------------------+
|  1       | NULL            | NULL          | [{"objectName": "myproc_parent"}] |
|  2       | 1               | 1             | [{"objectName": "myproc_child"}]  |
|  3       | 2               | 1             | [{"objectName": "mytable"}]       |
+----------+-----------------+---------------+-----------------------------------+
  • 第一行对应的是调用名为 myproc_parent 的第二个存储过程,如 direct_objects_accessed 列所示。

    parent_query_idroot_query_id 列返回 NULL,因为您直接调用了此存储过程。

  • 第二行对应的是调用名为 myproc_child 的第一个存储过程的查询,如 direct_objects_accessed 列所示。

    parent_query_idroot_query_id 列返回相同的查询 ID,因为调用 myproc_child 的查询是由调用 :code:`myproc_parent`(直接调用)的查询启动的。

  • 第三行对应的是访问 myproc_child 过程中名为 mytable 的表的查询,如 direct_objects_accessed 列中所示。

    parent_query_id 列返回访问 mytable 的查询的查询 ID,对应于调用 myproc_child。该存储过程由调用 myproc_parent 启的查询动,该查询显示在 root_query_id 列中。

参考:1265

语言: 中文