Pular para o conteúdo principal

Referência de tabela do sistema de classificação de dados

Esta página descreve o esquema da tabela de resultados da classificação de dados e inclui consultas de exemplo. A tabela armazena detecções para classes de dados confidenciais no nível da coluna em catálogos habilitados no seu metastore.

Caminho da tabela : system.data_classification.results

importante

Não aplique um filtro de linha ou máscara de coluna no nível da tabela (configurado diretamente na tabela com ALTER TABLE ... SET ROW FILTER ou ALTER TABLE ... ALTER COLUMN ... SET MASK) à tabela system.data_classification.results. A classificação de dados gerencia as gravações nesta tabela, e um filtro de linha ou máscara de coluna no nível da tabela irá interferir no sistema e falhará na verificação.

Essa limitação se aplica apenas a filtros de linha e máscaras de coluna em nível de tabela. As políticas ABAC não afetam as verificações e não são bloqueadas.

Esquema da tabela de resultados da classificação de dados

A tabela do sistema de resultados de classificação de dados usa o seguinte esquema:

Nome da coluna

Tipo de dados

Descrição

Exemplo

latest_detected_time

carimbo de data/hora

No momento em que a coluna foi escaneada mais recentemente.

2025-06-27T12:34

first_detected_time

carimbo de data/hora

Horário em que a detecção da coluna foi registrada pela primeira vez.

2025-06-27T12:34

catalog_id

string

ID do catálogo.

3f1a7d6e-9c59-...

table_id

string

ID da tabela.

3f1a7d6e-9c59-...

catalog_name

string

Nome do catálogo.

main_catalog

schema_name

string

Nome do esquema.

public

table_name

string

Nome da tabela.

sales_data

column_name

string

Nome da coluna.

customer_email

data_type

string

Tipo de dados da coluna. Tipos complexos incluem definições de struct completas.

struct<name:string, age:int>

class_tag

string

tag para a entidade detectada ou key tag e valor opcional.

class.us_ssn ou pii: confidential

samples

array<string>

Até cinco valores de amostra que corresponderam à detecção.

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

confidence

string

Confiança de detecção. Ou HIGH ou LOW

HIGH

frequency

Float

Estimativa da proporção de linhas correspondentes na amostra. Entre 0 e 1.

0.87

Nome da coluna

Tipo de dados

Descrição

Exemplo

latest_detected_time

carimbo de data/hora

No momento em que a coluna foi escaneada mais recentemente.

2025-06-27T12:34

first_detected_time

carimbo de data/hora

Horário em que a detecção da coluna foi registrada pela primeira vez.

2025-06-27T12:34

catalog_id

string

ID do catálogo.

3f1a7d6e-9c59-...

table_id

string

ID da tabela.

3f1a7d6e-9c59-...

catalog_name

string

Nome do catálogo.

main_catalog

schema_name

string

Nome do esquema.

public

table_name

string

Nome da tabela.

sales_data

column_name

string

Nome da coluna.

customer_email

data_type

string

Tipo de dados da coluna. Tipos complexos incluem definições de struct completas.

struct<name:string, age:int>

class_tag

string

tag para a entidade detectada ou key tag e valor opcional.

class.us_ssn ou pii: confidential

samples

array<string>

Até cinco valores de amostra que corresponderam à detecção.

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

confidence

string

Confiança de detecção. Ou HIGH ou LOW

HIGH

frequency

Float

Estimativa da proporção de linhas correspondentes na amostra. Entre 0 e 1.

0.87

Consultas de exemplo

Substitua os valores dos parâmetros pelos seus antes de executar.

Obter todas as detecções para uma tabela

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

Obtenha todas as detecções de alta confiança

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

Obter o número de tabelas impactadas por uma classificação específica

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;

Obtenha o número de usuários que consultaram tabelas com dados confidenciais nos últimos 30 dias

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