카테고리:

시스템 함수

EXTRACT_SEMANTIC_CATEGORIES

지정된 테이블 또는 뷰에서 지원되는 각 열에 대한 카테고리 세트(의미론적 및 개인정보 보호)를 반환합니다. 열에 대한 카테고리를 반환하려면 열은 분류를 지원하면서 모든 NULL 값을 포함하지는 않는 데이터 타입 을 사용해야 합니다.

카테고리는 열에 포함된 메타데이터 및 데이터, 그리고 열 및 데이터에 대한 메타데이터에서 파생됩니다. 개인정보 보호 카테고리는 생성된 의미론적 카테고리가 있는 경우 이에 의존합니다.

구문

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

인자

필수:

object_name

분류할 열을 포함하는 테이블, 외부 테이블, 뷰 또는 구체화된 뷰의 이름입니다. 데이터베이스와 스키마가 현재 세션에서 사용되지 않는 경우 이름은 정규화되어야 합니다.

이름은 데이터베이스에 저장된 대로 정확하게 지정해야 합니다. 이름에 특수 문자, 대문자 또는 공백이 포함된 경우 이름은 먼저 큰따옴표로 묶은 다음 작은따옴표로 묶어야 합니다.

선택 사항:

max_rows_to_scan

지정된 테이블/뷰에서 분류 카테고리를 결정하는 데 사용할 행의 샘플 크기입니다.

유효한 값: 1 - 10000

기본값: 10000

반환

함수는 분류 카테고리가 생성된 각 열에 대한 태그 이름/값 페어를 포함하는 단일 JSON 오브젝트를 반환합니다. 열이 지원되지 않는 데이터 타입이거나 모든 NULL 값을 포함하는 경우 해당 열은 출력에 포함되지 않습니다.

JSON 오브젝트의 구조는 다음과 같습니다.

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

여기서:

extra_info

다음 키-값 페어를 포함하는 오브젝트:

  • alternatesprobability0.80 보다 작은 경우 가능한 다른 의미론적 카테고리의 배열입니다. 대안으로 나열되려면 의미론적 카테고리의 확률이 0.15 (또는 그 이상)이되 0.80 미만이어야 합니다.

  • probability 는 분류 알고리즘이 semantic_category 에 대한 올바른 값을 도출할 가능성을 나타내는 숫자입니다. 최대 확률은 1.00 이고 최소 임계값은 0.15 입니다(즉, 모든 의미론적 카테고리의 확률이 0.15 보다 낮은 경우 probability 또는 semantic_category 에 대해 값이 반환되지 않음).

privacy_category

열의 개인정보 보호 카테고리 태그로, 열의 의미론적 카테고리를 기반으로 IDENTIFIER, QUASI_IDENTIFIER 또는 SENSITIVE 를 태그 값으로 사용합니다.

semantic_category

열에 대한 의미론적 카테고리 태그로, 분류 알고리즘에 의해 파생된 태그 값이 있습니다. 가능한 값 목록은 시스템 태그 및 카테고리 섹션을 참조하십시오.

예를 들어 테이블에 fname, lname, age, email_address 라는 열이 있는 경우 함수는 다음과 유사한 출력을 반환할 수 있습니다.

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

사용법 노트

  • 이 함수에는 함수가 실행되는 세션에서 실행 중인 활성 웨어하우스가 필요합니다.

    웨어하우스의 크기는 테이블/뷰에서 데이터를 분류하는 데 필요한 시간에 영향을 줄 수 있습니다. 분류할 데이터가 포함된 많은 수의 열이 있는 테이블의 경우 특히 그렇습니다. 일반적으로, 웨어하우스가 클수록 시간이 단축됩니다.

  • 여러 가능한 의미론적 카테고리가 있는 것으로 분류에서 식별되는 각 열에 대해 다음을 수행합니다.

    • 확률이 0.80 (또는 그 이상)인 모든 카테고리의 경우, 가장 높은 확률을 가진 카테고리가 semantic_category 의 값으로 나열됩니다.

    • 확률이 0.15 (또는 그 이상)인 모든 카테고리는 alternates 로 나열됩니다.

    • 0.80 (또는 그 이상)의 확률을 가진 카테고리가 없는 경우, semantic_categoryprobability 에 대한 값이 나열되지 않습니다. 마찬가지로, 카테고리에 0.15 (또는 그 이상)의 확률이 없는 경우 alternates 에 대한 값이 나열되지 않습니다.

스캔할 행 수에 대해 기본값(10000)을 사용하여 my_db.my_schema.hr_data 테이블에 대한 의미론적 및 개인정보 보호 카테고리를 추출합니다.

USE ROLE data_engineer;

USE WAREHOUSE classification_wh;

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

이전 예와 동일하지만, 테이블에서 5000개 행만 스캔하도록 제한됩니다.

USE ROLE data_engineer;

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

첫 번째 예와 같지만, 결과를 테이블에 저장합니다.

USE ROLE data_engineer;

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

결과가 테이블에 저장되면, ASSOCIATE_SEMANTIC_CATEGORY_TAGS 를 사용하여 적용하기 전에 결과를 수정할 수 있습니다.