メインコンテンツまでスキップ

データ分類システムテーブルリファレンス

備考

ベータ版

この機能はベータ版です。

このページでは、データ分類結果テーブル スキーマの概要とサンプル クエリを示します。テーブルには、メタストア内の有効なカタログ全体にわたって、列レベルでの機密データ クラスの検出が格納されます。

テーブルパス : system.data_classification.results

データ分類結果テーブルスキーマ

データ分類結果システムテーブルは次のスキーマを使用します。

列名

データ型

説明

latest_detected_time

timestamp

列が最後にスキャンされた時点。

2025-06-27T12:34

first_detected_time

timestamp

列検出が最初に記録された時刻。

2025-06-27T12:34

catalog_id

string

カタログの ID。

3f1a7d6e-9c59-...

table_id

string

テーブルの ID。

3f1a7d6e-9c59-...

catalog_name

string

カタログ名。

main_catalog

schema_name

string

スキーマ名。

public

table_name

string

テーブル名。

sales_data

column_name

string

列名。

customer_email

data_type

string

列のデータ型。複合型には完全な構造体の定義が含まれます。

struct<name:string, age:int>

class_tag

string

検出されたエンティティのタグまたはタグキーとオプションの値。

class.us_ssn または pii: confidential

samples

array<string>

検出に一致した最大 5 つのサンプル値。

["a@b.com", ...]

confidence

string

検出の信頼性。HIGHまたは LOW

HIGH

frequency

float

サンプル内の一致する行の割合の推定。0 から 1 の間。

0.87

クエリの例

実行する前に、問題の値を自分のものに置き換えてください。

テーブルのすべての検出を取得する

SQL
SELECT *
FROM system.data_classification.results
WHERE
catalog_name = "c"
AND schema_name = "s"
AND table_name = "t";

すべての高信頼度検出を取得する

SQL
SELECT *
FROM system.data_classification.results
WHERE
catalog_name = "c"
AND schema_name = "s"
AND table_name = "t"
AND confidence = "HIGH";

特定の分類によって影響を受けるテーブルの数を取得する

SQL
SELECT
class_tag,
COUNT(DISTINCT catalog_name, schema_name, table_name) AS num_tables
FROM
system.data_classification.results
WHERE
class_tag IS NOT NULL
GROUP BY class_tag;

過去 30 日間に機密データを含むテーブルをクエリしたユーザーの数を取得します

SQL
WITH table_accesses AS (
SELECT
IFNULL(
request_params.full_name_arg,
CONCAT(request_params.catalog_name, '.', request_params.schema_name, '.', request_params.name)
) AS table_full_name,
COUNT(DISTINCT user_identity.email) AS num_users
FROM
system.access.audit
WHERE
action_name IN ("createTable", "getTable", "updateTable", "deleteTable")
AND (
-- For performance, limit the blast radius of the audit log query to only the current catalog
request_params.catalog_name = :catalog_name OR
request_params.full_name_arg LIKE :catalog_name || '%'
)
AND event_time >= DATE_SUB(current_date(), 30)
GROUP BY table_full_name
),
sensitive_tables AS (
SELECT
DISTINCT CONCAT(catalog_name, '.', schema_name, '.', table_name) AS table_full_name
FROM
system.data_classification.results
WHERE class_tag IS NOT NULL
)

SELECT
st.table_full_name,
ta.num_users
FROM
sensitive_tables st
JOIN table_accesses ta
ON st.table_full_name = ta.table_full_name