이벤트 테이블 개요¶
프로시저와 UDFs 등 Snowflake 오브젝트가 원격 분석 데이터를 내보내면 Snowflake는 데이터를 쿼리할 수 있는 이벤트 테이블에 데이터를 수집합니다. Snowflake에는 기본적으로 이벤트 테이블이 포함되어 있지만 새 이벤트 테이블을 생성할 수도 있습니다.
원격 분석 데이터를 수집하려면 활성 이벤트 테이블 이 있어야 하고 데이터 수집을 허용하도록 원격 분석 수준을 설정 해야 합니다. 아직 활성 이벤트 테이블이 없으면 Snowflake는 기본 이벤트 테이블을 활성 이벤트 테이블로 생성합니다.
원격 분석 데이터를 수집할 때는 비용이 발생합니다. 이러한 비용을 이해하거나 이러한 비용을 줄이거나 방지하려면 원격 분석 데이터 수집 비용 섹션을 참조하십시오.
이벤트 테이블이란?¶
이벤트 테이블은 미리 정의된 열 집합을 갖는 특수한 종류의 데이터베이스 테이블입니다. 이 테이블의 구조 는 원격 분석 데이터를 처리하기 위한 프레임워크인 OpenTelemetry 용 데이터 모델을 지원합니다. 이벤트 테이블이 활성화 되면 Snowflake는 특정 APIs를 사용하여 처리기 코드를 측정하여 내보내는 데이터 및 Snowflake 자체에서 생성하는 데이터 등 원격 분석 데이터를 테이블에 수집합니다. SQL 쿼리를 실행하여 수집된 데이터를 뷰로 확인할 수 있습니다.
설치 후 Snowflake에는 SNOWFLAKE.TELEMETRY.EVENTS라는 기본 이벤트 테이블 이 포함됩니다. 이 이벤트 테이블은 활성화되어 있으며 비활성화할 때까지 데이터를 수집합니다. 사용자는 자체 이벤트 테이블을 만들 수 도 있습니다.
원격 분석 데이터를 수집하려면 활성 이벤트 테이블이 있어야 합니다. 자세한 내용은 이벤트 테이블 활성화 섹션을 참조하십시오.
기본 이벤트 테이블¶
기본적으로 Snowflake에는 SNOWFLAKE.TELEMETRY.EVENTS라는 기본 이벤트 테이블이 포함되어 있습니다. 직접 이벤트 테이블을 생성하는 대신 이 이벤트 테이블을 사용할 수 있습니다. 아직 활성 이벤트 테이블이 없으면 Snowflake는 기본 테이블을 활성 이벤트 테이블로 생성합니다.
기본적으로 Snowflake에는 다양한 사용자가 이벤트 테이블 데이터를 더 안전하게 사용할 수 있도록 하는 SNOWFLAKE.TELEMETRY.EVENTS_VIEW 뷰 라는 사전 정의된 뷰도 포함되어 있습니다. 행 액세스 정책으로 뷰에 대한 액세스를 관리 할 수 있습니다.
참고
기본 이벤트 테이블은 사용자가 만든 이벤트 테이블이나 일반 테이블에 대해 지원되는 DDL 명령의 하위 집합만 지원합니다. 자세한 내용은 이벤트 테이블 관련 작업하기 섹션을 참조하십시오.
기본 이벤트 테이블 및 EVENTS_VIEW에 액세스할 수 있는 역할¶
Snowflake에는 기본 이벤트 테이블 및 EVENTS_VIEW 뷰에 대한 액세스를 관리하는 데 사용할 수 있는 다음과 같은 사전 정의된 애플리케이션 역할이 포함되어 있습니다.
- EVENTS_VIEWER:
EVENTS_VIEW 뷰 에서 SELECT 문을 실행할 수 있는 권한이 있는 역할.
- EVENTS_ADMIN:
다음 권한이 있는 역할:
기본 이벤트 테이블 에 대한 SELECT, TRUNCATE, DELETE.
기본 이벤트 테이블의 EVENTS_VIEW 뷰 에 대한 SELECT.
다음 저장 프로시저에 대한 USAGE:
이 역할에는 기본 이벤트 테이블을 기반으로 데이터를 사용하는 EVENTS_VIEW 뷰에 행 액세스 정책(RAP)을 적용하는 저장 프로시저를 실행할 수 있는 권한도 있습니다.
EVENTS_VIEW에 대한 액세스 관리하기¶
행 액세스 정책 을 사용하여 EVENTS_VIEW 뷰에서 데이터에 대한 액세스를 관리할 수 있습니다. Snowflake는 EVENT_VIEW 뷰에 행 액세스 정책을 추가 및 제거하는 데 사용할 수 있는 저장 프로시저를 제공합니다.
ADD_ROW_ACCESS_POLICY_ON_EVENTS_VIEW(VARCHAR, ARRAY) — 행 액세스 정책을 EVENTS_VIEW의 지정된 열에 바인딩합니다.
DROP_ROW_ACCESS_POLICY_ON_EVENTS_VIEW(VARCHAR) — EVENTS_VIEW에 바인딩된 지정된 행 액세스 정책을 삭제합니다.
참고
이러한 프로시저를 실행하려면 EVENTS_ADMIN 역할 이 있어야 합니다.
EVENT_VIEW 뷰에서 행 액세스 정책을 사용하는 것은 Enterprise Edition 기능입니다.
이벤트 테이블 만들기¶
새 이벤트 테이블을 만들려면 CREATE EVENT TABLE 명령을 실행하고 이벤트 테이블의 이름을 지정합니다.
이벤트 테이블을 생성할 때 테이블에서 열을 지정하지 않습니다. 이벤트 테이블에는 이벤트 테이블 열 에 설명된 대로 미리 정의된 열 세트가 이미 있습니다.
CREATE EVENT TABLE 권한이 부여된 역할을 사용해야 합니다.
참고
이벤트 테이블의 복제는 현재 지원되지 않습니다. 기본 데이터베이스에 포함된 모든 이벤트 테이블은 복제 중에 건너뜁니다.
예를 들어 이름이 my_events
인 이벤트 테이블을 생성하려면 다음 문을 실행하십시오.
CREATE EVENT TABLE my_database.my_schema.my_events;
이벤트 테이블 활성화¶
원격 분석 데이터의 저장소를 사용하려면 이벤트 테이블이 활성 이벤트 테이블임을 지정해야 합니다.
계정에 대한 활성 이벤트 테이블을 지정하려면 ALTER ACCOUNT 명령을 실행하고 EVENT_TABLE 매개 변수를 이벤트 테이블의 이름으로 설정하십시오.
참고
이 명령을 실행하려면 ACCOUNTADMIN 역할을 사용해야 합니다.
또한 다음 권한이 모두 있어야 합니다.
계정에 대한 OWNERSHIP 권한.
ALTER ACCOUNT 실행에 필요한 권한에 대한 자세한 내용은 ALTER ACCOUNT 명령에 대한 설명서 를 참조하십시오.
예를 들어 데이터베이스 my_database
의 스키마 my_schema
에 있는 my_events
라는 이벤트 테이블을 계정의 활성 이벤트 테이블로 설정하려면 다음 문을 실행하십시오.
ALTER ACCOUNT SET EVENT_TABLE = my_database.my_schema.my_events;
위에서 보여준 바와 같이, 이벤트 테이블의 정규화된 이름 을 지정해야 합니다.
계정에서 이벤트 테이블의 연결을 해제하려면 ALTER ACCOUNT 명령을 실행하고 EVENT_TABLE 매개 변수를 설정 해제하십시오. 예:
ALTER ACCOUNT UNSET EVENT_TABLE;
SHOW PARAMETERS 명령으로 EVENT_TABLE 값을 확인할 수 있습니다.
SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;