ACCESS_HISTORY ビュー: 新しい parent_query_id および root_query_id

注意

この動作変更は2023_08バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

Account Usage ACCESS_HISTORY ビューは以下のように動作します。

変更前

ビューに対するクエリには parent_query_idroot_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();
Copy

ACCESS_HISTORY ビューのクエリは、以下のように情報を記録します。

USE ROLE GOVERNANCE_VIEWER;

SELECT
  query_id,
  parent_query_id,
  root_query_id,
  direct_objects_accessed
FROM
  SNOWFLAKE.ACCOUNT_USAGE.ACCESS_HISTORY;
Copy
+----------+-----------------+---------------+-----------------------------------+
| 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_idroot_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