ACCESS_HISTORY 뷰: 새 root_query_idroot_query_id

주의

이 동작 변경 사항은 2023_08 번들에 있습니다.

번들의 현재 상태는 번들 기록 섹션을 참조하십시오.

Account Usage ACCESS_HISTORY 뷰는 다음과 같이 동작합니다.

변경 전

뷰에 대한 쿼리에는 root_query_id 열과 root_query_id 열이 포함되지 않습니다.

변경 후

뷰의 쿼리에 다음과 같이 정의된 root_query_id 열과 root_query_id 열이 포함됩니다.

열 이름

데이터 타입

설명

root_query_id

TEXT

상위 작업의 쿼리 ID이거나 작업에 상위 작업이 없는 경우에는 NULL입니다.

root_query_id

TEXT

체인에서 최상위 작업의 쿼리 ID이거나 작업에 상위 작업이 없는 경우에는 NULL입니다.

2023_08 번들이 활성화될 때 데이터가 기록되기 시작하는 이러한 열은 뷰의 마지막 두 열입니다. 쿼리 ID는 Account Usage ACCESS_HISTORY 뷰의 query_id 열에 있는 쿼리에 해당합니다. 열에는 다음과 같은 종류의 쿼리에 대한 쿼리 ID가 기록됩니다.

  • 쿼리는 다른 오브젝트에 대해 읽기 또는 쓰기 작업을 수행합니다.

    읽기 또는 쓰기 작업 은 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"}]       |
+----------+-----------------+---------------+-----------------------------------+
  • 첫 번째 행은 direct_objects_accessed 열에 표시된 대로 myproc_parent 라는 두 번째 프로시저 호출에 해당합니다.

    이 저장 프로시저를 직접 호출했으므로 root_query_idroot_query_id 열은 NULL을 반환합니다.

  • 두 번째 행은 direct_objects_accessed 열에 표시된 대로 myproc_child 라는 첫 번째 프로시저를 호출하는 쿼리에 해당합니다.

    myproc_child 를 호출하는 쿼리는 사용자가 직접 호출한 myproc_parent 를 호출하는 쿼리를 통해 시작되었으므로, root_query_id 열과 root_query_id 열은 동일한 쿼리 ID를 반환합니다.

  • 세 번째 행은 direct_objects_accessed 열에 표시된 대로 myproc_child 프로시저에서 mytable 이라는 테이블에 액세스한 쿼리에 해당합니다.

    root_query_id 열은 myproc_child 호출에 해당하는 mytable 에 액세스한 쿼리의 쿼리 ID를 반환합니다. 해당 저장 프로시저는 root_query_id 열에 표시된 myproc_parent 를 호출하는 쿼리로 시작되었습니다.

참조: 1265