Categorias:

Funções do sistema

EXTRACT_SEMANTIC_CATEGORIES

Retorna um conjunto de categorias (semânticas e de privacidade) para cada coluna compatível na tabela ou exibição especificada. Para retornar as categorias para uma coluna, a coluna deve usar um tipo de dados que ofereceça suporte à classificação e não contenha todos os valores NULL.

As categorias são derivadas dos metadados e dados contidos nas colunas, assim como os metadados sobre as colunas e dados. As categorias de privacidade dependem das categorias semânticas geradas, se houver.

Sintaxe

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

Argumentos

Obrigatório:

object_name

O nome da tabela, tabela externa, exibição ou exibição materializada contendo as colunas a serem classificadas. Se um banco de dados e esquema não estiver em uso na sessão atual, o nome deve ser totalmente qualificado.

O nome deve ser especificado exatamente como está armazenado no banco de dados. Se o nome contiver caracteres especiais, letras maiúsculas ou espaços em branco, o nome deve ser incluído primeiro em aspas duplas e depois em aspas simples.

Opcional:

max_rows_to_scan

O tamanho da amostra de linhas a serem utilizadas para determinar as categorias de classificação na tabela/exibição especificada.

Valores válidos: 1 a 10000

Padrão: 10000

Retornos

A função retorna um único objeto JSON contendo um nome de tag/par de valores para cada coluna para a qual foram geradas categorias de classificação. Se uma coluna for um tipo de dados não suportado ou tiver todos os valores NULL, a coluna não será incluída na saída.

O objeto JSON tem a seguinte estrutura:

{
  "<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

Onde:

extra_info

Objeto contendo os seguintes pares chave-valor:

  • alternates é uma matriz de outras categorias semânticas possíveis se probability for inferior a 0.80. Para ser listada como alternativa, a categoria semântica deve ter uma probabilidade de 0.15 (ou maior), mas menor do que 0.80.

  • probability é um número que indica a probabilidade de que o algoritmo de classificação tenha derivado o valor correto para semantic_category. A probabilidade máxima é 1.00 e o limite mínimo é 0.15 (ou seja, se todas as categorias semânticas tiverem uma probabilidade inferior a 0.15, nenhum valor será retornado para probability ou semantic_category).

privacy_category

Tag de categoria de privacidade para a coluna, com IDENTIFIER, QUASI_IDENTIFIER ou SENSITIVE como valor da tag, com base na categoria semântica para a coluna.

semantic_category

Tag de categoria semântica para a coluna, com o valor do tag derivado pelo algoritmo de classificação. Para uma lista dos valores possíveis, consulte Tags de sistema e categorias.

Por exemplo, se uma tabela tiver colunas chamadas fname, lname, age e email_address, a função pode retornar a saída semelhante a:

{
  "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

Notas de uso

  • A função requer um warehouse ativo e em funcionamento na sessão em que a função é executada.

    O tamanho do warehouse pode impactar o tempo necessário para classificar os dados na tabela/exibição, especialmente para tabelas com um grande número de colunas contendo dados para classificar. Como regra geral, um warehouse maior resulta em tempo reduzido.

  • Para cada coluna que a classificação identifica como tendo múltiplas categorias semânticas possíveis:

    • Para todas as categorias com probabilidade de 0.80 (ou maior), a categoria com maior probabilidade é listada como o valor para semantic_category.

    • Todas as categorias com uma probabilidade de 0.15 (ou superior) são listadas como alternates.

    • Se nenhuma categoria tiver uma probabilidade de 0.80 (ou superior), nenhum valor será listado para semantic_category e probability. Da mesma forma, se nenhuma categoria tiver uma probabilidade de 0.15 (ou superior), nenhum valor será listado para alternates.

Exemplos

Extrair as categorias semântica e de privacidade da tabela my_db.my_schema.hr_data usando o padrão (10000) para o número de linhas a serem digitalizadas:

USE ROLE data_engineer;

USE WAREHOUSE classification_wh;

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

O mesmo que o exemplo anterior, mas limitado apenas a 5.000 linhas digitalizadas na tabela:

USE ROLE data_engineer;

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

O mesmo que o primeiro exemplo, mas armazena os resultados em uma tabela:

USE ROLE data_engineer;

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

Quando os resultados são armazenados em uma tabela, você pode revisá-los antes de usar ASSOCIATE_SEMANTIC_CATEGORY_TAGS para aplicá-los.