Vue ACCESS_HISTORY : nouvelles colonnes parent_query_id
et root_query_id
¶
Attention
Ce changement de comportement est présent dans le bundle 2023_08.
Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.
La vue Account Usage ACCESS_HISTORY se comporte comme suit :
- Avant la modification
Une requête sur la vue ne comprend pas les colonnes
parent_query_id
etroot_query_id
.- Après la modification
Une requête sur la vue inclut les colonnes
parent_query_id
etroot_query_id
, qui sont définies comme suit :Nom de la colonne
Type de données
Description
parent_query_id
TEXT
La requête ID de la tâche parent ou NULL si la tâche n’a pas de parent.
root_query_id
TEXT
La requête ID de la tâche la plus élevée de la chaîne ou NULL si la tâche n’a pas de parent.
Ces colonnes commencent à enregistrer des données lorsque le bundle 2023_08 est activé et sont les deux dernières colonnes de la vue. La requête ID correspond à une requête dans la colonne
query_id
de la vue Account Usage ACCESS_HISTORY. Les colonnes enregistrent la requête IDs pour ces types de requêtes :Une requête effectue une opération de lecture ou d’écriture sur un autre objet.
L’opération de lecture ou d’écriture doit être une opération que la vue ACCESS_HISTORY prend actuellement en charge.
Une requête effectue une opération de lecture ou d’écriture sur un objet qui appelle une procédure stockée. Les appels de procédures stockées imbriquées sont également pris en charge.
Par exemple, si les instructions suivantes sont exécutées dans l’ordre :
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();
Une requête sur la vue ACCESS_HISTORY enregistre les informations comme suit :
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"}] | +----------+-----------------+---------------+-----------------------------------+
La première ligne correspond à l’appel de la deuxième procédure nommée
myproc_parent
comme indiqué dans la colonnedirect_objects_accessed
.Les colonnes
parent_query_id
etroot_query_id
renvoient NULL parce que vous avez appelé cette procédure stockée directement.La deuxième ligne correspond à la requête qui appelle la première procédure nommée
myproc_child
comme indiqué dans la colonnedirect_objects_accessed
.Les colonnes
parent_query_id
etroot_query_id
renvoient la même requête ID car la requête appelantmyproc_child
a été initiée par la requête appelantmyproc_parent
, que vous avez appelée directement.La troisième ligne correspond à la requête qui a accédé à la table nommée
mytable
dans la procéduremyproc_child
, comme indiqué dans la colonnedirect_objects_accessed
.La colonne
parent_query_id
renvoie la requête ID de la requête qui a accédé àmytable
, ce qui correspond à l’appel demyproc_child
. Cette procédure stockée a été lancée par la requête appelantmyproc_parent
, qui figure dans la colonneroot_query_id
.
Réf : 1265