Catégories :

Fonctions système

EXTRACT_SEMANTIC_CATEGORIES

Renvoie un ensemble de catégories (sémantiques et de confidentialité) pour chaque colonne prise en charge dans la table ou la vue spécifiée. Pour renvoyer les catégories d’une colonne, celle-ci doit utiliser un type de données qui prend en charge la classification et ne contient pas toutes les valeurs NULL.

Les catégories sont dérivées des métadonnées et des données contenues dans les colonnes, ainsi que des métadonnées relatives aux colonnes et aux données. Les catégories de confidentialité reposent sur les catégories sémantiques générées, le cas échéant.

Syntaxe

EXTRACT_SEMANTIC_CATEGORIES( '<object_name>' [ , <max_rows_to_scan> ] )
Copy

Arguments

Obligatoire :

object_name

Le nom de la table, de la table externe, de la vue ou de la vue matérialisée contenant les colonnes à classifier. Si une base de données et un schéma ne sont pas utilisés dans la session en cours, le nom doit être entièrement qualifié.

Le nom doit être spécifié exactement comme il est stocké dans la base de données. Si le nom contient des caractères spéciaux, des majuscules ou des espaces vides, il doit être placé d’abord entre guillemets doubles, puis entre guillemets simples.

Facultatif :

max_rows_to_scan

La taille de l’échantillon de lignes à utiliser pour déterminer les catégories de classification dans la table/vue spécifiée.

Valeurs valides : 1 à 10000

Par défaut : 10000

Renvoie

La fonction renvoie un objet JSON unique contenant une paire nom/valeur de balise pour chaque colonne pour laquelle des catégories de classification ont été générées. Si une colonne est un type de données non pris en charge ou contient toutes les valeurs NULL, la colonne n’est pas incluse dans la sortie.

L’objet JSON a la structure suivante :

{
  "<col1_name>": {
    "extra_info" : {
      "alternates" : [<semantic_categories>],
      "probability" : "<number>"
    },
    "privacy_category" : "<value>",
    "semantic_category" : "<value>"
  },
 ...
 ...
  "<colN_name>": {
    "extra_info" : {
      "alternates" : [<semantic_categories>],
      "probability" : "<number>"
    },
    "privacy_category" : "<value>",
    "semantic_category" : "<value>"
  }
}
Copy

Où :

extra_info

Objet contenant les paires clé-valeur suivantes :

  • alternates est un tableau d’autres catégories sémantiques possibles si probability est inférieur à 0.80. Pour être répertoriée comme alternative, la catégorie sémantique doit avoir une probabilité de 0.15 (ou plus), mais inférieure à 0.80.

  • probability est un nombre indiquant la probabilité que l’algorithme de classification ait dérivé de la valeur correcte pour semantic_category. La probabilité maximale est 1.00 et le seuil minimal est 0.15 (c’est-à-dire que si toutes les catégories sémantiques ont une probabilité inférieure à 0.15, aucune valeur n’est renvoyée pour probability ou semantic_category).

privacy_category

Balise de catégorie de confidentialité pour la colonne, avec IDENTIFIER, QUASI_IDENTIFIER ou SENSITIVE comme valeur de balise, en fonction de la catégorie sémantique de la colonne.

semantic_category

Balise de catégorie sémantique pour la colonne, avec la valeur de la balise dérivée par l’algorithme de classification. Pour une liste des valeurs possibles, voir Balises système et catégories.

Par exemple, si une table comporte des colonnes nommées fname, lname, age, et email_address, la fonction peut renvoyer un résultat similaire à celui-ci :

{
  "AGE": {
    "extra_info" : {
      "alternates" : [],
      "probability" : "1.00"
    },
    "privacy_category" : "QUASI_IDENTIFIER",
    "semantic_category" : "AGE"
  },
  "EMAIL_ADDRESS": {
  "extra_info": {
    "alternates": [],
    "probability": "1.00"
  },
  "privacy_category": "IDENTIFIER",
  "semantic_category": "EMAIL"
},
  "FNAME": {
    "extra_info" : {
      "alternates" : [],
      "probability" : "1.00"
    },
    "privacy_category" : "IDENTIFIER",
    "semantic_category" : "NAME"
  },
  "LNAME": {
    "extra_info" : {
      "alternates" : [],
      "probability" : "1.00"
    },
    "privacy_category" : "IDENTIFIER",
    "semantic_category" : "NAME"
  }
}
Copy

Notes sur l’utilisation

  • La fonction nécessite un entrepôt actif, en cours d’exécution, dans la session dans laquelle la fonction est exécutée.

    La taille de l’entrepôt peut avoir un impact sur le temps nécessaire pour classifier les données dans la table/vue, en particulier pour les tables avec un grand nombre de colonnes contenant des données à classifier. En règle générale, un entrepôt plus grand permet de réduire ce temps.

  • Pour chaque colonne que la classification identifie comme ayant plusieurs catégories sémantiques possibles :

    • Pour toutes les catégories ayant une probabilité de 0.80 (ou plus), la catégorie dont la probabilité est la plus élevée est indiquée comme la valeur de semantic_category.

    • Toutes les catégories ayant une probabilité de 0.15 (ou plus) sont répertoriées comme alternates.

    • Si aucune catégorie n’a une probabilité de 0.80 (ou plus), aucune valeur n’est répertoriée pour semantic_category et probability. De même, si aucune catégorie n’a une probabilité de 0.15 (ou plus), aucune valeur n’est répertoriée pour alternates.

Exemples

Extraire les catégories sémantiques et de confidentialité pour la table my_db.my_schema.hr_data en utilisant la valeur par défaut (10000) pour le nombre de lignes à analyser :

USE ROLE data_engineer;

USE WAREHOUSE classification_wh;

SELECT EXTRACT_SEMANTIC_CATEGORIES( 'my_db.my_schema.hr_data' );
Copy

Identique à l’exemple précédent, mais limité à l’analyse de 5 000 lignes de la table :

USE ROLE data_engineer;

SELECT EXTRACT_SEMANTIC_CATEGORIES( 'my_db.my_schema.hr_data', 5000 );
Copy

Identique au premier exemple, mais stocke les résultats dans une table :

USE ROLE data_engineer;

CREATE OR REPLACE TABLE classification_results(v VARIANT) AS
  SELECT EXTRACT_SEMANTIC_CATEGORIES( 'my_db.my_schema.hr_data');
Copy

Une fois les résultats stockés dans une table, vous pouvez les réexaminer avant d’utiliser ASSOCIATE_SEMANTIC_CATEGORY_TAGS pour les appliquer.