이벤트 테이블 개요

프로시저와 UDF 등 Snowflake 오브젝트가 원격 분석 데이터를 내보내면 Snowflake는 데이터를 쿼리할 수 있는 이벤트 테이블에 데이터를 수집합니다. Snowflake에는 기본적으로 이벤트 테이블이 포함되어 있지만 새 이벤트 테이블을 생성할 수도 있습니다.

원격 분석 데이터를 수집하려면 활성 이벤트 테이블이 있어야 하고 원격 분석 수준 을 설정하여 데이터 수집을 허용해야 합니다. 아직 활성 이벤트 테이블이 없으면 Snowflake는 기본 이벤트 테이블을 활성 이벤트 테이블로 생성합니다.

원격 분석 데이터를 수집할 때는 비용이 발생합니다. 이러한 비용을 이해하거나 이러한 비용을 줄이거나 피하려면 원격 분석 데이터 수집 비용 섹션을 참조하십시오.

이벤트 테이블이란?

이벤트 테이블은 미리 정의된 열 집합을 갖는 특수한 종류의 데이터베이스 테이블입니다. 이 테이블의 구조 는 원격 분석 데이터를 처리하기 위한 프레임워크인 OpenTelemetry 용 데이터 모델을 지원합니다. 이벤트 테이블이 활성화되면 Snowflake는 특정 API를 사용하여 처리기 코드를 측정하여 내보내는 데이터 및 Snowflake 자체에서 생성하는 데이터 등 원격 분석 데이터를 테이블에 수집합니다. SQL 쿼리를 실행하여 수집된 데이터를 뷰로 확인할 수 있습니다.

설치 후 Snowflake에는 SNOWFLAKE.TELEMETRY.EVENTS라는 기본 이벤트 테이블 이 포함됩니다. 이 이벤트 테이블은 활성화되어 있으며 비활성화할 때까지 데이터를 수집합니다. 사용자는 자체 이벤트 테이블을 만들 수 도 있습니다.

기본 이벤트 테이블 사용하기

활성 이벤트 테이블을 설정하지 않으면 Snowflake는 SNOWFLAKE.TELEMETRY.EVENTS 라는 기본 이벤트 테이블을 활성 이벤트 테이블로 사용합니다. 특정 용도에 맞게 이벤트 테이블을 직접 만들 수도 있습니다.

기본적으로 Snowflake에는 다양한 사용자가 이벤트 테이블 데이터를 더 안전하게 사용할 수 있도록 하는 SNOWFLAKE.TELEMETRY.EVENTS_VIEW 뷰 라는 사전 정의된 뷰도 포함되어 있습니다. 행 액세스 정책으로 뷰에 대한 액세스를 관리 할 수 있습니다.

참고

기본 이벤트 테이블은 사용자가 만든 이벤트 테이블이나 일반 테이블에 대해 지원되는 DDL 명령의 하위 집합만 지원합니다. 자세한 내용은 이벤트 테이블 관련 작업하기 섹션을 참조하십시오.

기본 이벤트 테이블 및 EVENTS_VIEW에 액세스할 수 있는 역할

Snowflake에는 기본 이벤트 테이블 및 EVENTS_VIEW 뷰에 대한 액세스를 관리하는 데 사용할 수 있는 다음과 같은 사전 정의된 애플리케이션 역할이 포함되어 있습니다. ACCOUNTADMIN 역할이 있는 사람은 기본 이벤트 테이블 및 EVENTS_VIEW 뷰에 액세스할 수 있으며, 여기에 설명된 역할을 다른 역할에 부여하여 액세스할 수 있도록 할 수 있습니다.

이러한 역할은 사용자가 아닌 다른 역할에 부여해야 합니다. 예를 들어 광범위한 관리자 용도로 만든 다른 관리자 역할에 EVENTS_ADMIN 역할을 부여할 수 있습니다.

GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_ADMIN TO ROLE my_admin_role

GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_VIEWER TO ROLE my_analysis_role
Copy
EVENTS_VIEWER:

EVENTS_VIEW 뷰 에서 SELECT 문을 실행할 수 있는 권한이 있는 역할.

EVENTS_ADMIN:

다음 권한이 있는 역할:

EVENTS_VIEW 뷰에 대한 액세스 관리하기

행 액세스 정책 을 사용하여 EVENTS_VIEW 뷰에서 데이터에 대한 액세스를 관리할 수 있습니다. Snowflake는 EVENT_VIEW 뷰에 행 액세스 정책을 추가 및 제거하는 데 사용할 수 있는 저장 프로시저를 제공합니다.

참고

이러한 프로시저를 실행하려면 EVENTS_ADMIN 역할 이 있어야 합니다.

EVENT_VIEW 뷰에서 행 액세스 정책을 사용하는 것은 Enterprise Edition 기능입니다.

사용자 지정 이벤트 테이블 사용하기

새 이벤트 테이블을 만들려면 CREATE EVENT TABLE 명령을 실행하고 이벤트 테이블의 이름을 지정합니다.

참고

이벤트 테이블을 만들지 않으면 Snowflake는 기본 이벤트 테이블을 사용하여 원격 분석 데이터를 수집합니다.

  1. CREATE EVENT TABLE 명령을 실행하여 이벤트 테이블의 이름을 지정하여 이벤트 테이블을 만듭니다.

  2. 오브젝트에 ALTER <오브젝트> 명령을 실행하고 EVENT_TABLE 매개 변수를 이벤트 테이블의 이름으로 설정하여 오브젝트에 이벤트 테이블을 연결합니다.

    이렇게 하면 이벤트 테이블이 캡처하는 데이터의 범위가 테이블을 연결할 오브젝트로 설정됩니다.

이벤트 테이블 만들기

이벤트 테이블을 생성하려면 CREATE EVENT TABLE 명령을 실행하십시오.

이벤트 테이블을 생성할 때 테이블에서 열을 지정하지 않습니다. 이벤트 테이블에는 이벤트 테이블 열 에 설명된 대로 미리 정의된 열 세트가 이미 있습니다.

  1. CREATE EVENT TABLE 권한 이 있는 역할을 사용하고 있는지 확인합니다.

  2. CREATE EVENT TABLE 명령을 실행하여 이벤트 테이블을 만들고 이벤트 테이블의 이름을 지정합니다.

    이벤트 테이블 이름을 사용하여 테이블을 데이터베이스와 같은 오브젝트와 연결합니다.

    예를 들어 이름이 my_events 인 이벤트 테이블을 생성하려면 다음 문을 실행하십시오.

    CREATE EVENT TABLE my_database.my_schema.my_events;
    
    Copy

참고

이벤트 테이블의 복제는 현재 지원되지 않습니다. 기본 데이터베이스에 포함된 모든 이벤트 테이블은 복제 중에 건너뜁니다.

이벤트 테이블과 오브젝트 연결하기

이벤트 테이블이 활성 오브젝트를 지정하려면 해당 오브젝트에서 ALTER <오브젝트> 명령을 실행합니다.

이벤트 테이블을 데이터베이스와 연결하는 것은 Enterprise Edition 기능입니다.

  1. 필요한 권한 이 있는 역할을 사용하고 있는지 확인합니다.

  2. 오브젝트에서 ALTER <오브젝트> 명령을 실행하여 EVENT_TABLE 매개 변수를 이벤트 테이블의 이름으로 설정합니다.

    이 매개 변수를 설정하면 지정된 이벤트 테이블에서 이벤트를 수집할 범위로 오브젝트를 설정합니다.

    예를 들어 이벤트 테이블을 데이터베이스와 연결하려면 다음 예제에서와 같이 ALTER DATABASE 를 사용합니다.

    ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
    
    Copy

    이 예에서 Snowflake는 원격 분석 수준을 지정한 방식에 따라 telemetry_database.telemetry_schema.my_events 이벤트 테이블의 my_database 에서 프로시저와 UDF에 대한 원격 분석 데이터를 캡처합니다.

지원되는 오브젝트

다음 표에는 이벤트를 연결할 수 있는 오브젝트와 연결에 필요한 권한이 나열되어 있습니다.

오브젝트

필요한 권한

데이터가 수집되는 오브젝트의 범위

계정

계정의 프로시저 및 UDF. 가장 넓은 범위에서 사용하십시오.

데이터베이스

지정된 데이터베이스의 프로시저 및 UDF.

우선 순위에 따라 오브젝트에 대한 원격 분석 데이터를 수집하는 데 사용되는 이벤트 테이블이 결정됩니다. 이 우선 순위에서 데이터베이스와 연결된 이벤트 테이블이 계정과 연결된 이벤트 테이블보다 우선합니다.

  • 계정 » 데이터베이스

즉, 계정과 데이터베이스 my_database 모두에 연결된 이벤트 테이블이 있는 경우 my_database 의 오브젝트에서 생성된 원격 분석 데이터는 데이터베이스의 이벤트 테이블에 수집됩니다. 연결된 이벤트 테이블이 없는 계정에 있는 다른 데이터베이스의 경우 계정에 연결된 이벤트 테이블에서 원격 분석 데이터가 수집됩니다.

계정에 대한 이벤트 테이블 설정하기

참고

이 명령을 실행하려면 ACCOUNTADMIN 역할을 사용해야 합니다.

또한 다음 권한이 모두 있어야 합니다.

ALTER ACCOUNT 실행에 필요한 권한에 대한 자세한 내용은 ALTER ACCOUNT 명령에 대한 설명서 를 참조하십시오.

예를 들어 데이터베이스 my_database 의 스키마 my_schema 에 있는 my_events 라는 이벤트 테이블을 계정의 활성 이벤트 테이블로 설정하려면 다음 문을 실행하십시오.

ALTER ACCOUNT SET EVENT_TABLE = my_database.my_schema.my_events;
Copy

위에서 보여준 바와 같이, 이벤트 테이블의 정규화된 이름 을 지정해야 합니다.

계정에서 이벤트 테이블의 연결을 해제하려면 ALTER ACCOUNT 명령을 실행하고 EVENT_TABLE 매개 변수를 설정 해제하십시오. 예:

ALTER ACCOUNT UNSET EVENT_TABLE;
Copy

SHOW PARAMETERS 명령으로 EVENT_TABLE 값을 확인할 수 있습니다.

SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;
Copy

데이터베이스의 이벤트 테이블 설정하기

데이터베이스 my_database 의 스키마 my_schema 에 있는 my_events 라는 이벤트 테이블을 데이터베이스 my_database 의 활성 이벤트 테이블로 설정하려면 다음 문을 실행하십시오.

ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
Copy

데이터베이스에서 이벤트 테이블의 연결을 해제하려면 ALTER DATABASE 명령을 실행하고 EVENT_TABLE 매개 변수를 설정 해제하십시오. 예:

ALTER DATABASE my_database UNSET EVENT_TABLE;
Copy

SHOW PARAMETERS 명령으로 EVENT_TABLE 값을 확인할 수 있습니다.

SHOW PARAMETERS LIKE 'event_table' IN DATABASE my_database;
Copy