Referência de tabela do sistema de classificação de dados
Beta
Este recurso está em Beta.
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
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 |
---|---|---|---|
| carimbo de data/hora | No momento em que a coluna foi escaneada mais recentemente. |
|
| carimbo de data/hora | Horário em que a detecção da coluna foi registrada pela primeira vez. |
|
| string | ID do catálogo. |
|
| string | ID da tabela. |
|
| string | Nome do catálogo. |
|
| string | Nome do esquema. |
|
| string | Nome da tabela. |
|
| string | Nome da coluna. |
|
| string | Tipo de dados da coluna. Tipos complexos incluem definições de struct completas. |
|
| string | tag para a entidade detectada ou key tag e valor opcional. |
|
|
| Até cinco valores de amostra que corresponderam à detecção. |
|
| string | Confiança de detecção. Ou |
|
| Float | Estimativa da proporção de linhas correspondentes na amostra. Entre 0 e 1. |
|
Consultas de exemplo
Substitua os valores dos parâmetros pelos seus antes de executar.
Obter todas as detecções para uma tabela
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
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
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
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