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_idTEXT
親ジョブのクエリ ID 、親ジョブがない場合は NULL 。
root_query_idTEXT
チェーン内で一番上のジョブのクエリ 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