EXTRACT_SEMANTIC_CATEGORIES

EXTRACT_SEMANTIC_CATEGORIES

EXTRACT_SEMANTIC_CATEGORIES()는 지정한 테이블 또는 뷰의 각 지원되는 열에 대한 범주 집합(의미적 및 프라이버시)을 반환해요. 열의 범주를 반환하려면 해당 열이 분류를 지원하는 데이터 타입을 사용하고 모든 값이 NULL이면 안 돼요.

범주는 열에 포함된 메타데이터와 데이터, 그리고 열과 데이터에 대한 메타데이터에서 파생돼요. 프라이버시 범주는 생성된 의미적 범주(있는 경우)에 의존해요.

이 기능은 Enterprise Edition(또는 그 이상)이 필요해요. 업그레이드에 대해 문의하려면 Snowflake 지원에 연락하세요.

EXTRACT_SEMANTIC_CATEGORIES는 레거시 함수예요. Snowflake는 민감한 데이터 분류(sensitive data classification)를 구현하는 다른 방법을 사용할 것을 권장해요.

출처: Snowflake SQL Reference

본문

문법

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

인자

필수:

object_name

분류할 열을 포함하는 테이블, 외부 테이블, 뷰 또는 구체화된 뷰의 이름이에요. 현재 세션에서 데이터베이스와 스키마를 사용 중이 아니면 이름은 완전한 자격(fully-qualified)을 갖춰야 해요. 이름은 데이터베이스에 저장된 그대로 정확히 지정해야 해요. 이름에 특수 문자, 대문자, 또는 공백이 포함되면 이름을 먼저 큰따옴표로, 그다음 작은따옴표로 묶어야 해요.

선택:

max_rows_to_scan

지정한 테이블/뷰에서 분류 범주를 결정하는 데 사용할 행의 샘플 크기예요. 유효한 값: 1~10000. 기본값: 10000

반환

대표적인 예로, JSON 객체는 다음 구조를 가져요.

{
  "valid_value_ratio": 1.0,
  "recommendation": {
    "semantic_category": "PASSPORT",
    "privacy_category": "IDENTIFIER",
    "confidence": "HIGH",
    "coverage": 0.7,
    "details": [
      {
        "semantic_category": "US_PASSPORT",
        "coverage": 0.7
      },
      {
        "semantic_category": "CA_PASSPORT",
        "coverage": 0.1
      }
    ]
  },
  "alternates": [
    {
      "semantic_category": "NATIONAL_IDENTIFIER",
      "privacy_category": "IDENTIFIER",
      "confidence": "LOW",
      "coverage": 0.3,
      "details": [
        {
          "semantic_category": "US_SSN",
          "privacy_category": "IDENTIFIER",
          "coverage": 0.3
        }
      ]
    }
  ]
}

여기서:

semantic_category

의미적 범주 태그 값을 지정해요. 가능한 태그 값은 민감한 데이터 분류의 네이티브 의미적 범주(Native semantic categories)를 참고하세요.

privacy_category

프라이버시 범주 태그 값을 지정해요. 가능한 값은 IDENTIFIER, QUASI-IDENTIFIER, SENSITIVE예요.

confidence

다음 값 중 하나를 지정해요: HIGH, MEDIUM, LOW. 이 값은 열 샘플링 과정과 열 데이터가 Snowflake의 데이터 분류 방식과 얼마나 일치하는지에 기반해 Snowflake가 가지는 상대적 신뢰도를 나타내요.

coverage

특정 범주에 대한 규칙과 일치하는 샘플링된 셀 값의 백분율을 지정해요.

details

SEMANTIC_CATEGORY 태그에 대한 지리적(geographical) 태그 값을 지정할 수 있는 필드와 값을 지정해요.

alternates

권장 태그 외에 고려할 각 태그와 값에 대한 정보를 지정해요.

사용 지침

  • 이 함수는 실행 중인 웨어하우스가 필요해요. 웨어하우스는 성능과 비용에 영향을 줄 수 있어요.

  • 이 함수는 더 이상 데이터 분류(Data Classification)의 추가 개선과 함께 업데이트되지 않아요.

예제

스캔할 행 수에 기본값(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');

이전 예제와 같지만 테이블에서 5000행만 스캔하도록 제한:

USE ROLE data_engineer;

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

첫 번째 예제와 같지만 결과를 테이블에 저장:

USE ROLE data_engineer;

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

결과가 테이블에 저장되면 ASSOCIATE_SEMANTIC_CATEGORY_TAGS를 사용해 적용하기 전에 결과를 수정할 수 있어요.

더 알아보기