ACCESS_HISTORY ビュー: 新しい parent_query_id
および root_query_id
列¶
Account Usage ACCESS_HISTORY ビューは以下のように動作します。
- 変更前
ビューに対するクエリには
parent_query_id
とroot_query_id
の列は含まれません。- 変更後
ビューに対するクエリには、
parent_query_id
およびroot_query_id
列が含まれます。これらの列は以下のように定義されています。列名
データ型
説明
parent_query_id
TEXT
親ジョブのクエリ ID 、親ジョブがない場合は NULL 。
root_query_id
TEXT
チェーン内で一番上のジョブのクエリ ID 、そのジョブが親を持たない場合は NULL 。
これらの列は、2023_08バンドルが有効化されたときにデータの記録を開始し、ビューの最後の2列になります。クエリ ID は、Account Usage ACCESS_HISTORY ビューの
query_id
列のクエリに対応します。列は、この種のクエリのクエリ IDs を記録します。クエリは、他のオブジェクトに対して読み取りまたは書き込み操作を行います。
読み取りまたは書き込み操作 は、 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();
ACCESS_HISTORY ビューのクエリは、以下のように情報を記録します。
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"}] | +----------+-----------------+---------------+-----------------------------------+
最初の行は、
direct_objects_accessed
列に示されているように、myproc_parent
という2番目のプロシージャを呼び出すことに対応しています。このストアドプロシージャを直接呼び出したため、
parent_query_id
とroot_query_id
列は NULL を返します。2行目は、
direct_objects_accessed
列に示されているように、myproc_child
という最初のプロシージャを呼び出すクエリに対応しています。parent_query_id
列とroot_query_id
列が同じクエリ ID を返すのは、myproc_child
を呼び出すクエリが、直接呼びだしたmyproc_parent
を呼び出すクエリによって開始されたためです。3行目は、
direct_objects_accessed
列に示されているように、myproc_child
プロシージャでmytable
という名前のテーブルにアクセスしたクエリに対応しています。parent_query_id
列は、mytable
にアクセスしたクエリのクエリ ID を返し、これはmyproc_child
の呼び出しに対応します。このストアドプロシージャは、myproc_parent
を呼び出すクエリによって開始されました。root_query_id
列に示されています。
参照: 1265