Exibição ACCESS_HISTORY: novas colunas parent_query_id
e root_query_id
¶
Atenção
Essa mudança de comportamento está no pacote 2023_08.
Para saber o status atual do pacote, consulte Histórico do pacote.
A exibição ACCESS_HISTORY do Account Usage se comporta da seguinte forma:
- Antes da mudança
Uma consulta na exibição não inclui as colunas
parent_query_id
eroot_query_id
.- Após a mudança
Uma consulta na exibição inclui as colunas
parent_query_id
eroot_query_id
, que são definidas da seguinte forma:Nome da coluna
Tipo de dados
Descrição
parent_query_id
TEXT
O ID de consulta do trabalho pai ou NULL se o trabalho não tiver um pai.
root_query_id
TEXT
O ID de consulta do trabalho mais importante na cadeia ou NULL se o trabalho não tiver um pai.
Essas colunas começam a registrar dados quando o pacote 2023_08 é ativado e são as duas últimas colunas da exibição. O ID da consulta corresponde a uma consulta na coluna
query_id
na exibição ACCESS_HISTORY do Account Usage. As colunas registram os IDs da consulta para estes tipos de consultas:Uma consulta executa uma operação de leitura ou gravação em outro objeto.
A operação de leitura ou gravação deve ser uma operação suportada atualmente pela exibição ACCESS_HISTORY.
Uma consulta executa uma operação de leitura ou gravação em um objeto que chama um procedimento armazenado. Chamadas de procedimentos armazenados aninhados também são suportadas.
Por exemplo, se você executar essas instruções em ordem:
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();
Uma consulta exibição ACCESS_HISTORY registra as informações da seguinte forma:
USE ROLE GOVERNANCE_VIEWER; SELECT query_id, parent_query_id, root_query_id, direct_objects_accessed FROM SNOWFLAKE.ACCOUNT_USAGE.ACCESS_HISTORY;
+----------+-----------------+---------------+-----------------------------------+ | 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"}] | +----------+-----------------+---------------+-----------------------------------+
A primeira linha corresponde à chamada do segundo procedimento denominado
myproc_parent
conforme mostrado na colunadirect_objects_accessed
.As colunas
parent_query_id
eroot_query_id
retornam NULL porque você chamou esse procedimento armazenado diretamente.A segunda linha corresponde à consulta que chama o primeiro procedimento denominado
myproc_child
conforme mostrado na colunadirect_objects_accessed
.As colunas
parent_query_id
eroot_query_id
retornam o mesmo ID de consulta porque a consulta que chamamyproc_child
foi iniciada pela consulta que chamamyproc_parent
, que você chamou diretamente.A terceira linha corresponde à consulta que acessou a tabela denominada
mytable
no procedimentomyproc_child
conforme mostrado na colunadirect_objects_accessed
.A coluna
parent_query_id
retorna o ID de consulta da consulta que acessoumytable
, que corresponde à chamada demyproc_child
. Esse procedimento armazenado foi iniciado pela consulta que chamamyproc_parent
, mostrada na colunaroot_query_id
.
Ref: 1265