민감한 데이터 분류 결과를 확인하고 추적해요

민감한 데이터 분류 결과를 확인하고 추적해요


Enterprise Edition Feature

민감 데이터 분류는 Enterprise Edition 이상이 필요해요. 업그레이드에 대해 문의하려면 Snowflake Support에 연락해 주세요.

이 항목에서는 민감 데이터 분류 결과를 확인하고 추적하는 방법과 분류 태그를 추적하여 민감 데이터를 모니터링하는 방법을 설명해요.


출처: 문서

본문

Trust Center에서 분류 결과 확인하기

Trust Center에서 민감 데이터 분류 결과를 확인하려면 다음 단계를 완료해요:

  1. Snowsight에 필요한 권한을 가진 사용자로 로그인해요.

  2. 탐색 메뉴에서 Governance & security » Trust Center를 선택해요.

  3. Data Security 탭을 선택해요.

  4. 다음 중 하나를 수행해요:

민감 데이터의 보안에 대한 높은 수준의 인사이트를 얻고 싶다면 Dashboard 탭을 선택해요. 자세한 내용은 Dashboard 페이지 검토를 참조해요.

민감 데이터를 포함하는 것으로 분류된 모든 테이블과 뷰를 나열하려면 Sensitive objects 탭을 선택해요.

페이지가 열리면 테이블을 선택하여 어떤 열에 민감 데이터가 있는지, 해당 열의 의미 범주 및 열에 태그가 적용되었는지 확인해요.

Dashboard 페이지 검토

Dashboard 페이지는 분류된 데이터베이스와 테이블 수와 같이 민감 데이터의 보안에 대한 높은 수준의 인사이트를 제공해요. 페이지에는 다음 타일이 포함되어 있어요:


컴플라이언스 범주 및 해당 의미 범주



마스킹 정책


타일 설명
Objects by compliance category 개체의 정보 유형을 기반으로 규정 또는 기타 컴플라이언스 표준의 적용을 받을 수 있는 데이터가 포함된 개체 수를 식별해요. 참고: 컴플라이언스 범주와 의미 범주 간의 매핑은 완전하지 않아요. Snowflake가 지원하는 네이티브 의미 범주만 컴플라이언스 범주에 매핑돼요. 전체 매핑은 .을 참조하세요. 귀하는 데이터에 적용되는 규정이나 법률을 결정하고 해당 규정 및 법률을 준수할 전적인 책임이 있어요.
Objects by semantic category 가장 일반적인 의미 범주와 해당 범주에 속하는 데이터가 포함된 개체 수를 식별해요.
Databases monitored by auto-classification 현재 민감 데이터 분류로 모니터링되는 데이터베이스를 식별해요. 누군가 SQL을 사용하여 데이터베이스 수준이 아닌 데이터베이스의 스키마에 직접 분류 프로필을 설정한 경우 해당 데이터베이스는 부분적으로 모니터링돼요.
Classification status 현재 민감 데이터에 대해 모니터링 중인 모든 데이터베이스가 분류되었는지 여부를 식별해요.
Sensitive data masking status 민감 데이터가 마스킹 정책에 의해 보호되는지 여부를 식별해요. 마스킹 정책은 태그 기반 정책이거나 열에 수동으로 적용된 정책일 수 있어요. 민감 데이터가 포함된 모든 열에 마스킹 정책이 연결되어 있으면 테이블이 완전히 마스킹된 것이에요. 민감 데이터가 포함된 일부 열에만 마스킹 정책이 연결되어 있으면 테이블이 부분적으로 마스킹된 것이에요.

컴플라이언스 범주 및 해당 의미 범주

참고

귀하는 데이터에 적용되는 규정이나 법률을 결정하고 해당 규정 및 법률을 준수할 전적인 책임이 있어요. 민감 데이터 분류 내의 컴플라이언스 범주는 노력을 지원하기 위한 즉시 사용 가능한 도구 키트를 제공하도록 설계되었지만 완전하지는 않아요. Snowflake가 지원하는 네이티브 의미 범주만 컴플라이언스 범주에 매핑돼요.

경고

HIPAA 데이터 요구 사항은 적용 대상 기관과 업무 협력자가 엄격한 관리적, 물리적, 기술적 보호 조치를 통해 보호 건강 정보(PHI)의 기밀성, 무결성 및 가용성을 보호하도록 요구해요. HIPAA를 준수하지 않으면 심각한 제재를 받을 수 있어요. PHI와 관련된 의미 범주는 민감 정보에 포함되어 있어요.

다음 표를 사용하여 Dashboard 페이지의 Objects by compliance category 타일을 이해해요.


Compliance category Native semantic category Locale
Digital Personal Data Protection Act (DPDPA) DATE_OF_BIRTH n/a
DRIVERS_LICENSE India (IN)
EMAIL n/a
NAME n/a
NATIONAL_IDENTIFIER India (IN)
PHONE_NUMBER n/a
STREET_ADDRESS n/a
TAX_IDENTIFIER India (IN)
General Data Protection Regulation (GDPR) AGE n/a
DRIVERS_LICENSE Austria (AT), Belgium (BE), Bulgaria (BG), Croatia (HR), Cyprus (CY), Czech Republic (CZ), Denmark (DK), Estonia (EE), Finland (FI), France (FR), Germany (DE), Greece (GR), Hungary (HU), Ireland (IE), Italy (IT), Latvia (LV), Lithuania (LT), Luxembourg (LU), Malta (MT), Netherlands (NL), Poland (PL), Portugal (PT), Romania (RO), Slovakia (SK), Slovenia (SI), Spain (ES), Sweden (SE)
EMAIL n/a
ETHNICITY n/a
GENDER n/a
IBAN n/a
IMEI n/a
IP_ADDRESS n/a
NAME n/a
NATIONAL_IDENTIFIER Austria (AT), Belgium (BE), Bulgaria (BG), Croatia (HR), Cyprus (CY), Czech Republic (CZ), Denmark (DK), Estonia (EE), Finland (FI), France (FR), Germany (DE), Greece (GR), Hungary (HU), Ireland (IE), Latvia (LV), Lithuania (LT), Luxembourg (LU), Malta (MT), Netherlands (NL), Poland (PL), Portugal (PT), Romania (RO), Slovakia (SK), Slovenia (SI), Spain (ES), Sweden (SE), United Kingdom (UK)
PASSPORT Austria (AT), Belgium (BE), Bulgaria (BG), Croatia (HR), Cyprus (CY), Czech Republic (CZ), Denmark (DK), Estonia (EE), Finland (FI), France (FR), Germany (DE), Greece (GR), Hungary (HU), Ireland (IE), Italy (IT), Latvia (LV), Lithuania (LT), Luxembourg (LU), Malta (MT), Netherlands (NL), Poland (PL), Portugal (PT), Romania (RO), Slovakia (SK), Slovenia (SI), Spain (ES), Sweden (SE)
PAYMENT_CARD n/a
PHONE_NUMBER n/a
SALARY n/a
TAX_IDENTIFIER Austria (AT), Cyprus (CY), France (FR), Germany (DE), Greece (GR), Hungary (HU), Italy (IT), Malta (MT), Netherlands (NL), Poland (PL), Portugal (PT), Slovenia (SI), Spain (ES), Sweden (SE)
VIN n/a
Gramm-Leach-Bliley Act (GLBA) BANK_ACCOUNT United States (US)
DRIVERS_LICENSE United States (US)
NAME United States (US)
NATIONAL_IDENTIFIER United States (US)
PASSPORT United States (US)
PAYMENT_CARD n/a
STREET_ADDRESS United States (US)
TAX_IDENTIFIER United States (US)
Health Insurance Portability and Accountability Act (HIPAA) ADMINISTRATIVE_AREA_1 United States (US)
ADMINISTRATIVE_AREA_2 United States (US)
AGE n/a
CITY United States (US)
DATE_OF_BIRTH n/a
EMAIL n/a
ETHNICITY n/a
IMEI n/a
IP_ADDRESS n/a
MEDICAL_DATA n/a
MEDICAL_SPECIALTY n/a
NAME n/a
NATIONAL_IDENTIFIER United States (US)
PHONE_NUMBER United States (US)
POSTAL_CODE United States (US)
STREET_ADDRESS United States (US)
URL n/a
VIN n/a
Payment Card Industry (PCI) PAYMENT_CARD n/a
Personally identifiable information (PII) DATE_OF_BIRTH n/a
DRIVERS_LICENSE n/a
EMAIL n/a
NAME n/a
NATIONAL_IDENTIFIER n/a
PHONE_NUMBER n/a
STREET_ADDRESS n/a
TAX_IDENTIFIER n/a

SQL을 사용하여 분류 결과 조회하기

시스템 함수를 호출하거나 Account Usage 뷰를 조회하여 데이터 분류 결과를 SQL로 확인할 수 있어요.

특정 테이블의 분류 결과 조회

SYSTEM$GET_CLASSIFICATION_RESULT 함수를 호출하여 특정 테이블의 결과를 확인할 수 있어요.

CALL SYSTEM$GET_CLASSIFICATION_RESULT('mydb.sch.t1');

분류 프로세스가 완료될 때까지 결과를 사용할 수 없어요. 자동 분류 프로세스는 데이터베이스에 분류 프로필을 설정한 후 한 시간이 지나야 시작돼요.

최신 분류 결과 조회

최신 분류 결과를 확인하려면 DATA_CLASSIFICATION_LATEST 뷰를 조회해요. 최신 이전의 분류 결과는 표시되지 않아요. 예를 들어, SNOWFLAKE.GOVERNANCE_VIEWER 데이터베이스 역할이 부여된 역할을 사용할 수 있어요. ACCOUNTADMIN을 사용하거나 SNOWFLAKE 데이터베이스에 대한 IMPORTED PRIVILEGES를 보유하는 등 다른 권한으로도 액세스할 수 있어요.

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATA_CLASSIFICATION_LATEST;

분류가 완료된 후 최대 3시간까지 결과가 나타나지 않을 수 있어요. 이전 분류 결과를 확인하려면 Query the classification history를 참조해요.

분류 기록 조회

지난 365일 동안의 모든 분류 이벤트를 확인하려면 DATA_CLASSIFICATION_HISTORY 뷰를 조회해요. 예를 들어, SNOWFLAKE.GOVERNANCE_VIEWER 데이터베이스 역할이 부여된 역할을 사용할 수 있어요. ACCOUNTADMIN을 사용하거나 SNOWFLAKE 데이터베이스에 대한 IMPORTED PRIVILEGES를 보유하는 등 다른 권한으로도 액세스할 수 있어요.

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATA_CLASSIFICATION_HISTORY;

다음 예제를 사용하여 분류 기록을 조회할 수 있어요:

데이터베이스, 스키마, 테이블 이름으로 분류 기록 필터링하기

다음 예시는 데이터베이스 이름, 스키마 이름, 테이블 이름으로 필터링하여 특정 테이블의 모든 분류 이벤트를 최신순으로 반환해요.

SELECT
    database_id,
    database_name,
    schema_id,
    schema_name,
    table_id,
    table_name,
    trigger_type,
    classified_on,
    table_deleted_on,
    result
  FROM SNOWFLAKE.ACCOUNT_USAGE.DATA_CLASSIFICATION_HISTORY
  WHERE database_name = 'MY_DB'
    AND schema_name = 'MY_SCHEMA'
    AND table_name = 'EMPLOYEES'
  ORDER BY classified_on DESC;

출력 결과에는 동일한 EMPLOYEES 테이블에 대한 두 개의 분류 이벤트가 표시돼요. EMAIL 열을 식별한 2025년 2월의 수동 분류와 EMAIL 및 SSN 열을 모두 식별한 2025년 3월의 자동 분류가 그것이에요. 결과는 최신순으로 정렬되어 있어서 분류 결과가 시간이 지나면서 어떻게 변화하는지 보여줘요.

+-------------+---------------+-----------+-------------+----------+------------+---------------------+---------------------------+----------------+--------------------------------+
| DATABASE_ID | DATABASE_NAME | SCHEMA_ID | SCHEMA_NAME | TABLE_ID | TABLE_NAME | TRIGGER_TYPE        | CLASSIFIED_ON             | TABLE_DELETED_ON | RESULT                         |
+-------------+---------------+-----------+-------------+----------+------------+---------------------+---------------------------+----------------+--------------------------------+
| 10          | MY_DB         | 100       | MY_SCHEMA   | 1234     | EMPLOYEES  | AUTO CLASSIFICATION | 2025-03-01 08:00:00 -0800 | NULL           | {"EMAIL": {...}, "SSN": {...}} |
| 10          | MY_DB         | 100       | MY_SCHEMA   | 1234     | EMPLOYEES  | MANUAL              | 2025-02-15 14:30:00 -0800 | NULL           | {"EMAIL": {...}}               |
+-------------+---------------+-----------+-------------+----------+------------+---------------------+---------------------------+----------------+--------------------------------+

테이블 ID로 필터링하기

다음 예시는 분류 기록을 테이블 ID로 필터링하여 특정 테이블의 모든 분류 이벤트를 최신순으로 반환해요.

참고: 분류 후 테이블 이름이 변경된 경우 ID로 필터링하면 유용할 수 있어요.

SELECT
    database_id,
    database_name,
    schema_id,
    schema_name,
    table_id,
    table_name,
    trigger_type,
    classified_on,
    table_deleted_on,
    result
  FROM SNOWFLAKE.ACCOUNT_USAGE.DATA_CLASSIFICATION_HISTORY
  WHERE table_id = 1234
  ORDER BY classified_on DESC;

출력 결과에는 동일한 테이블(ID 1234)에 대한 두 개의 분류 이벤트가 표시돼요. 이벤트 사이에 테이블 이름이 EMPLOYEES에서 EMPLOYEES_NEW로 변경되었음에도 불구하고요. 쿼리가 이름이 아닌 테이블 ID로 필터링하기 때문에 이름 변경과 관계없이 두 이벤트 모두 반환돼요.

+-------------+---------------+-----------+-------------+----------+---------------+---------------------+---------------------------+----------------+--------------------------------+
| DATABASE_ID | DATABASE_NAME | SCHEMA_ID | SCHEMA_NAME | TABLE_ID | TABLE_NAME    | TRIGGER_TYPE        | CLASSIFIED_ON             | TABLE_DELETED_ON | RESULT                         |
+-------------+---------------+-----------+-------------+----------+---------------+---------------------+---------------------------+----------------+--------------------------------+
| 10          | MY_DB         | 100       | MY_SCHEMA   | 1234     | EMPLOYEES_NEW | AUTO CLASSIFICATION | 2025-03-01 08:00:00 -0800 | NULL           | {"EMAIL": {...}, "SSN": {...}} |
| 10          | MY_DB         | 100       | MY_SCHEMA   | 1234     | EMPLOYEES     | MANUAL              | 2025-02-15 14:30:00 -0800 | NULL           | {"EMAIL": {...}}               |
+-------------+---------------+-----------+-------------+----------+---------------+---------------------+---------------------------+----------------+--------------------------------+

지난 7일 동안의 분류 이벤트 수 세기

다음 예시는 지난 7일 동안의 분류 이벤트 수를 보여줘요.

SELECT
    COUNT(*) AS classification_count
  FROM SNOWFLAKE.ACCOUNT_USAGE.DATA_CLASSIFICATION_HISTORY
  WHERE classified_on >= DATEADD(DAY, -7, CURRENT_TIMESTAMP());
+----------------------+
| CLASSIFICATION_COUNT |
+----------------------+
| 42                   |
+----------------------+

하나의 테이블에 대한 분류 실행 비교하기

다음 예시는 테이블에 대한 가장 최근의 두 분류 실행을 비교하고, 실행 간에 분류가 변경된 열만 반환해요. 결과의 각 행에는 change_type 열이 포함되며, 값은 다음 중 하나예요.

  • ADDED: 이전 실행에서 분류되지 않은 열이에요. PREV_* 열은 NULL이에요.

  • REMOVED: 이전 실행에서는 분류되었지만 현재 실행에서는 분류되지 않은 열이에요. CURR_* 열은 NULL이에요.

  • CHANGED: 두 실행 모두에 존재하지만 의미론적 범주 또는 개인정보 보호 범주가 다른 열이에요.

두 실행에서 분류가 동일한 열은 결과에서 제외돼요.

WITH ranked AS (
    SELECT
        table_id,
        database_id,
        schema_id,
        database_name,
        schema_name,
        table_name,
        classified_on,
        trigger_type,
        result,
        ROW_NUMBER() OVER (PARTITION BY table_id ORDER BY classified_on DESC) AS rn
      FROM SNOWFLAKE.ACCOUNT_USAGE.DATA_CLASSIFICATION_HISTORY
      WHERE table_id = 1234
    ),
  curr_cols AS (
      SELECT r.table_id, r.database_id, r.schema_id,
          r.database_name, r.schema_name, r.table_name,
          r.classified_on, r.trigger_type,
          c.key AS column_name, c.value AS column_result
        FROM ranked r, LATERAL FLATTEN(input => r.result) c
        WHERE r.rn = 1
  ),
  prev_cols AS (
      SELECT r.table_id,
          r.classified_on, r.trigger_type,
          c.key AS column_name, c.value AS column_result
        FROM ranked r, LATERAL FLATTEN(input => r.result) c
        WHERE r.rn = 2
  )
  SELECT
      curr.database_id,
      curr.database_name,
      curr.schema_id,
      curr.schema_name,
      curr.table_id,
      curr.table_name,
      prev.classified_on AS previous_classified_on,
      curr.classified_on AS current_classified_on,
      COALESCE(curr.column_name, prev.column_name) AS column_name,
      CASE
        WHEN prev.column_name IS NULL THEN 'ADDED'
        WHEN curr.column_name IS NULL THEN 'REMOVED'
        ELSE 'CHANGED'
      END AS change_type,
      prev.column_result:recommendation.semantic_category::STRING AS prev_semantic_category,
      curr.column_result:recommendation.semantic_category::STRING AS curr_semantic_category,
      prev.column_result:recommendation.privacy_category::STRING AS prev_privacy_category,
      curr.column_result:recommendation.privacy_category::STRING AS curr_privacy_category
    FROM curr_cols curr
    FULL OUTER JOIN prev_cols prev
      ON curr.table_id = prev.table_id
      AND curr.column_name = prev.column_name
    WHERE prev.column_name IS NULL
      OR curr.column_name IS NULL
      OR curr.column_result:recommendation.semantic_category != prev.column_result:recommendation.semantic_category
      OR curr.column_result:recommendation.privacy_category != prev.column_result:recommendation.privacy_category
    ORDER BY column_name;

출력 결과에는 가장 최근의 두 실행 사이에 분류가 변경된 세 개의 열이 표시돼요. DATE_OF_BIRTH와 SSN은 현재 실행에서 새로 식별(ADDED)되었고, PHONE은 이전 실행에서 분류되었지만 현재 실행에는 더 이상 나타나지 않아요(REMOVED). EMAIL처럼 두 실행에서 분류가 동일하게 유지된 열은 결과에서 제외돼요.

+-------+---------+-----------+-------------+----------+------------+---------------------+---------------------+---------------+-------------+---------------+---------------+--------------+------------------+
| DB_ID | DB_NAME | SCHEMA_ID | SCHEMA_NAME | TABLE_ID | TABLE_NAME | PREV_CLASSIFIED_ON  | CURR_CLASSIFIED_ON  | COLUMN_NAME   | CHANGE_TYPE | PREV_SEMANTIC | CURR_SEMANTIC | PREV_PRIVACY | CURR_PRIVACY     |
+-------+---------+-----------+-------------+----------+------------+---------------------+---------------------+---------------+-------------+---------------+---------------+--------------+------------------+
| 10    | MY_DB   | 100       | MY_SCHEMA   | 1234     | EMPLOYEES  | 2025-02-15 14:30:00 | 2025-03-01 08:00:00 | DATE_OF_BIRTH | ADDED       | NULL          | DATE_OF_BIRTH | NULL         | QUASI_IDENTIFIER |
| 10    | MY_DB   | 100       | MY_SCHEMA   | 1234     | EMPLOYEES  | 2025-02-15 14:30:00 | 2025-03-01 08:00:00 | PHONE         | REMOVED     | PHONE_NUMBER  | NULL          | IDENTIFIER   | NULL             |
| 10    | MY_DB   | 100       | MY_SCHEMA   | 1234     | EMPLOYEES  | 2025-02-15 14:30:00 | 2025-03-01 08:00:00 | SSN           | ADDED       | NULL          | US_SSN        | NULL         | IDENTIFIER       |
+-------+---------+-----------+-------------+----------+------------+---------------------+---------------------+---------------+-------------+---------------+---------------+--------------+------------------+

JSON 열에 대한 분류 결과 보기

Snowflake는 반정형 데이터가 JSON 형식일 때 ARRAY, VARIANT, OBJECT 유형의 열을 분류할 수 있어요. 이 분류 결과에는 다음과 같은 특징이 있어요.

  • 결과 객체에는 object_path_results 필드가 포함돼요. 이 필드는 객체 목록을 나열하며, 각 객체는 기본 의미론적 범주로 분류된 반정형 데이터의 필드에 해당해요.

  • 반정형 데이터의 필드에 민감한 데이터가 포함된 경우 열의 의미론적 범주는 MULTIPLE이에요. 반정형 데이터에 있는 필드의 의미론적 범주를 얻으려면 결과의 object_path_results 필드를 사용해요.

예를 들어, Snowflake가 다음 테이블을 분류한다고 가정해 볼게요.

+-----------------------------------------------------------+---------------+-----------------------------------------------------+
| ARRAY_COL                                                 | FIRST_NAME    | OBJECT_COL                                          |
+-----------------------------------------------------------+---------------+-----------------------------------------------------+
| [ { "email": "[email protected]" }, { "email": "b..." } ] | "Joe"         | { "email": "[email protected]", "phone": "206-..." }  |
+-----------------------------------------------------------+---------------+-----------------------------------------------------+

분류 결과는 다음과 같이 보일 수 있어요.

{
  "ARRAY_COL": {
    "object_path_results": {
      "ARRAY_COL:[$$].email": {
        "alternates": [],
        "recommendation": {
          "confidence": "HIGH",
          "coverage": 1,
          "details": [],
          "privacy_category": "IDENTIFIER",
          "semantic_category": "EMAIL"
        }
      }
    },
    "recommendation": {
      "confidence": "HIGH",
      "details": [],
      "privacy_category": "IDENTIFIER",
      "semantic_category": "MULTIPLE"
    },
    "valid_value_ratio": 1
  },
  "FIRST_NAME": {
    "alternates": [],
    "recommendation": {
      "confidence": "HIGH",
      "coverage": 1,
      "details": [],
      "privacy_category": "IDENTIFIER",
      "semantic_category": "NAME"
    },
    "valid_value_ratio": 1
  },
  "OBJECT_COL": {
    "object_path_results": {
      "OBJECT_COL:email": {
        "alternates": [],
        "recommendation": {
          "confidence": "HIGH",
          "coverage": 1,
          "details": [],
          "privacy_category": "IDENTIFIER",
          "semantic_category": "EMAIL"
        }
      },
      "OBJECT_COL:phone": {
        "alternates": [],
        "recommendation": {
          "confidence": "HIGH",
          "coverage": 1,
          "details": [
            {
              "coverage": 1,
              "semantic_category": "US_PHONE_NUMBER"
            },
            {
              "coverage": 1,
              "semantic_category": "JP_PHONE_NUMBER"
            }
          ],
          "privacy_category": "IDENTIFIER",
          "semantic_category": "PHONE_NUMBER"
        }
      }
    },
    "recommendation": {
      "confidence": "HIGH",
      "details": [],
      "privacy_category": "IDENTIFIER",
      "semantic_category": "MULTIPLE"
    },
    "valid_value_ratio": 1
  }
}

태그를 사용하여 민감한 데이터 추적하기

Snowflake가 민감한 데이터를 분류할 때, 민감한 데이터가 포함된 열에 시스템 정의 및 사용자 정의 태그를 제안하거나 자동으로 적용해요. 민감한 데이터가 있는 열에 이러한 태그가 할당되므로, 쿼리를 실행하고 함수를 호출하여 태그를 추적함으로써 민감한 데이터를 모니터링할 수 있어요.

예를 들어, 분류되어 의미론적 범주가 할당된 모든 열을 나열하려면 다음 쿼리를 실행할 수 있어요.

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES
  WHERE TAG_NAME = 'SEMANTIC_CATEGORY'
  ORDER BY object_database, object_schema, object_name, column_name;

hr_data 테이블의 fname 열에 어떤 의미론적 범주가 할당되었는지 확인하려면 다음 쿼리를 실행하여 SEMANTIC_CATEGORY 태그의 값을 얻을 수 있어요.

SELECT SYSTEM$GET_TAG(
    'SNOWFLAKE.CORE.SEMANTIC_CATEGORY',
    'hr_data.fname',
    'COLUMN'
    );

태그를 추적할 수 있는 다양한 방법에 대한 자세한 내용은 Monitor object tags를 참조하세요.

더 알아보기 (Learn more)