Ansicht ACCESS_HISTORY: Neue Spalten parent_query_id
und root_query_id
¶
Achtung
Diese Verhaltensänderung ist in Bundle 2023_08 enthalten.
Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.
Die Account Usage-Ansicht ACCESS_HISTORY verhält sich wie folgt:
- Vor der Änderung
Eine Abfrage auf der Ansicht enthält nicht die Spalten
parent_query_id
undroot_query_id
.- Nach der Änderung
Eine Abfrage auf der Ansicht enthält die Spalten
parent_query_id
undroot_query_id
, die wie folgt definiert sind:Spaltenname
Datentyp
Beschreibung
parent_query_id
TEXT
Die Abfrage-ID des übergeordneten Jobs oder NULL, wenn der Job keinen übergeordneten Job hat.
root_query_id
TEXT
Die Abfrage-ID des obersten Jobs in der Job-Hierarchie oder NULL, wenn der Job keinen übergeordneten Job hat.
Diese Spalten beginnen mit der Erfassung von Daten, sobald Bundle 2023_08 aktiviert wird. Sie sind beiden letzten Spalten in der Ansicht. Die Abfrage-ID entspricht einer Abfrage in der Spalte
query_id
der Account Usage-Ansicht ACCESS_HISTORY. Die Spalten erfassen die Abfrage-IDs für folgende Arten von Abfragen:Abfragen, die eine Lese- oder Schreiboperation auf einem anderen Objekt ausführen.
Die Lese- oder Schreiboperation muss eine Operation sein, die derzeit von der Ansicht ACCESS_HISTORY unterstützt wird.
Abfrage, die eine Lese- oder Schreiboperation auf einem Objekt ausführen, der eine gespeicherte Prozedur aufruft. Verschachtelte Aufrufe von gespeicherten Prozeduren werden ebenfalls unterstützt.
Wenn Sie z. B. die folgenden Anweisungen nacheinander ausführen lassen:
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();
Bei einer Abfrage auf der Ansicht ACCESS_HISTORY werden die Informationen wie folgt erfasst:
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"}] | +----------+-----------------+---------------+-----------------------------------+
Die erste Zeile entspricht dem Aufruf der zweiten Prozedur namens
myproc_parent
, wie in der Spaltedirect_objects_accessed
gezeigt.Die Spalten
parent_query_id
undroot_query_id
geben NULL zurück, da Sie diese gespeicherte Prozedur direkt aufgerufen haben.Die zweite Zeile entspricht der Abfrage, die die erste Prozedur namens
myproc_child
aufruft, wie in der Spaltedirect_objects_accessed
angegeben.Die Spalten
parent_query_id
undroot_query_id
geben dieselbe Abfrage-ID zurück, da die Abfrage, diemyproc_child
aufruft, von der Abfrage initiiert wurde, diemyproc_parent
aufruft, die Sie direkt aufgerufen haben.Die dritte Zeile entspricht der Abfrage, die in der Prozedur
myproc_child
auf die Tabellemytable
zugreift, wie in der Spaltedirect_objects_accessed
angegeben.Die Spalte
parent_query_id
gibt die Abfrage-ID der Abfrage zurück, die aufmytable
zugegriffen hat, was einem Aufruf vonmyproc_child
entspricht. Diese gespeicherte Prozedur wurde durch die Abfrage gestartet, diemyproc_parent
aufruft. Sie wird in der Spalteroot_query_id
angezeigt.
Ref.: 1265