Référence de la table système de classification des données
Cette page décrit le schéma de table des résultats de la classification des données et comprend des exemples de queries. La table stocke les détections pour les classes de données sensibles au niveau des colonnes dans les catalogues activés de votre métastore.
Chemin de la table : system.data_classification.results
N'appliquez pas de filtre de lignes ou de masque de colonne au niveau de la table (configuré directement sur la table avec ALTER TABLE ... SET ROW FILTER ou ALTER TABLE ... ALTER COLUMN ... SET MASK) à la table system.data_classification.results. La classification des données gère les écritures dans cette table, et un filtre de lignes ou un masque de colonne au niveau de la table interférera avec le système et fera échouer l'analyse.
Cette limitation s'applique uniquement aux filtres de ligne au niveau de la table et aux masques de colonne. Les politiques ABAC n'affectent pas les analyses et ne sont pas bloquées.
Schéma de table des résultats de classification des données
La table système des résultats de classification des données utilise le schéma suivant :
Nom de colonne | Type de données | Description | Exemple |
|---|---|---|---|
| Horodatage | Heure de référence de la dernière analyse de la colonne. |
|
| Horodatage | Heure à laquelle la détection de la colonne a été enregistrée pour la première fois. |
|
| chaîne | ID du catalogue. |
|
| chaîne | ID de la table. |
|
| chaîne | Nom du catalogue. |
|
| chaîne | Nom du schéma. |
|
| chaîne | Nom de la table. |
|
| chaîne | Nom de la colonne. |
|
| chaîne | Type de données de la colonne. Les types complexes incluent des définitions complètes de struct. |
|
| chaîne | Tag pour l'entité détectée ou clé de tag et valeur facultative. |
|
|
| Jusqu’à cinq exemples de valeurs qui correspondaient à la détection. |
|
| chaîne | Confiance de la détection. Soit |
|
| Présentation libre | Estimation de la proportion de lignes correspondantes dans l'échantillon. Entre 0 et 1. |
|
Exemples de requêtes
Remplacez les valeurs de parameter par les vôtres avant l'exécution.
Obtenir toutes les détections pour une table
SELECT *
FROM system.data_classification.results
WHERE
catalog_name = "c"
AND schema_name = "s"
AND table_name = "t";
Obtenir toutes les détections à haute confiance
SELECT *
FROM system.data_classification.results
WHERE
catalog_name = "c"
AND schema_name = "s"
AND table_name = "t"
AND confidence = "HIGH";
Obtenez le nombre de tables impactées par une classification spécifique
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;
Obtenez le nombre d'utilisateurs qui ont interrogé des tables avec des données sensibles au cours des 30 derniers jours
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