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_idundroot_query_id.- Nach der Änderung
Eine Abfrage auf der Ansicht enthält die Spalten
parent_query_idundroot_query_id, die wie folgt definiert sind:Spaltenname
Datentyp
Beschreibung
parent_query_idTEXT
Die Abfrage-ID des übergeordneten Jobs oder NULL, wenn der Job keinen übergeordneten Job hat.
root_query_idTEXT
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_idder 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_accessedgezeigt.Die Spalten
parent_query_idundroot_query_idgeben NULL zurück, da Sie diese gespeicherte Prozedur direkt aufgerufen haben.Die zweite Zeile entspricht der Abfrage, die die erste Prozedur namens
myproc_childaufruft, wie in der Spaltedirect_objects_accessedangegeben.Die Spalten
parent_query_idundroot_query_idgeben dieselbe Abfrage-ID zurück, da die Abfrage, diemyproc_childaufruft, von der Abfrage initiiert wurde, diemyproc_parentaufruft, die Sie direkt aufgerufen haben.Die dritte Zeile entspricht der Abfrage, die in der Prozedur
myproc_childauf die Tabellemytablezugreift, wie in der Spaltedirect_objects_accessedangegeben.Die Spalte
parent_query_idgibt die Abfrage-ID der Abfrage zurück, die aufmytablezugegriffen hat, was einem Aufruf vonmyproc_childentspricht. Diese gespeicherte Prozedur wurde durch die Abfrage gestartet, diemyproc_parentaufruft. Sie wird in der Spalteroot_query_idangezeigt.
Ref.: 1265