EXTRACT_SEMANTIC_CATEGORIES
EXTRACT_SEMANTIC_CATEGORIES
EXTRACT_SEMANTIC_CATEGORIES()는 지정한 테이블 또는 뷰의 각 지원되는 열에 대한 범주 집합(의미적 및 프라이버시)을 반환해요. 열의 범주를 반환하려면 해당 열이 분류를 지원하는 데이터 타입을 사용하고 모든 값이 NULL이면 안 돼요.
범주는 열에 포함된 메타데이터와 데이터, 그리고 열과 데이터에 대한 메타데이터에서 파생돼요. 프라이버시 범주는 생성된 의미적 범주(있는 경우)에 의존해요.
이 기능은 Enterprise Edition(또는 그 이상)이 필요해요. 업그레이드에 대해 문의하려면 Snowflake 지원에 연락하세요.
EXTRACT_SEMANTIC_CATEGORIES는 레거시 함수예요. Snowflake는 민감한 데이터 분류(sensitive data classification)를 구현하는 다른 방법을 사용할 것을 권장해요.
본문
문법
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를 사용해 적용하기 전에 결과를 수정할 수 있어요.