데이터 품질 문제에 대한 알림 보내기
데이터 품질 문제에 대한 알림 보내기
Enterprise Edition 기능 — 데이터 품질 모니터링(Data Quality Monitoring)은 Enterprise Edition이 필요해요. 업그레이드 문의는 Snowflake 지원에 연락해 주세요.
Snowflake는 데이터 메트릭 함수(DMF)가 반환한 값이 데이터 품질 문제를 나타내는 때를 식별하는 다음 기능을 제공해요.
- 기대값 — 부울 표현식을 사용해 DMF의 출력을 기대 값과 비교할 수 있게 해줘요. 부울 표현식과 일치하지 않는 반환 값은 기대값 위반으로 간주돼요.
- 이상 감지 — Snowflake가 DMF의 출력이 이상을 구성하는 때를 자동으로 감지해요. 이상은 DMF가 반환한 값이 이력 데이터를 기반으로 한 예상 범위보다 위 또는 아래일 때 발생해요.
이 두 기능 중 하나가 데이터 품질 문제를 식별하면 알림을 보낼 수 있어요. Snowflake가 구성되면 기대값이 위반되거나 Snowflake가 이상을 식별할 때마다 알림이 전송돼요.
알림은 데이터베이스 수준에서 활성화해요. 활성화하면 해당 데이터베이스에서 연결된 DMF가 있는 모든 객체가 품질 문제가 있을 때 알림을 생성해요. 알림이 활성화된 데이터베이스 안에서 객체와 DMF 사이의 특정 연결에 대해 알림을 끌 수 있어요.
출처: Documentation
본문
워크플로
Snowflake가 데이터 품질 문제에 대한 알림을 보내도록 구성하는 작업은 다음으로 구성돼요.
- 누가 알림을 받을지 구성.
- 데이터베이스 소유자에게 액세스 제어 권한 부여.
- 데이터베이스를 수정해 알림을 구성하고 켜기.
이 워크플로의 종단간 예제는 확장 예제를 참고해요.
누가 알림을 받을지 구성
이메일 주소를 직접 추가하거나 알림 통합을 만들어 알림 수신자를 정의해요.
알림 통합은 Snowflake와 타사 메시징 서비스 사이의 인터페이스를 제공하는 Snowflake 객체예요. 데이터 품질 문제에 대한 알림을 보내려면 메시징 서비스용 알림 통합을 만들어요. 데이터 품질 모니터링은 다음 유형의 알림을 지원해요.
- 이메일 알림
- 웹훅을 사용해 Slack 같은 외부 시스템을 통해 전송되는 알림
이메일 통합을 만들지 않고 이메일 주소를 추가하려면 데이터 품질 알림용 데이터베이스 설정 구성을 참고해요.
이메일로 알림 보내기
이메일 주소 목록에 알림을 보내려면 CREATE NOTIFICATION INTEGRATION 문을 실행해 EMAIL 유형의 통합을 만들어요. 통합은 ALLOWED_RECIPIENTS 매개 변수를 사용해 알림이 전송되는 이메일 주소 목록을 지정해야 해요. 검증된 이메일 주소만 추가할 수 있어요. 이메일 주소 검증에 대한 자세한 내용은 이메일 알림 수신자의 이메일 주소 검증을 참고해요.
팁 — Snowflake 밖에서 관리되는 메일링 목록 또는 그룹으로 이메일 알림을 보낼 수 있어요. 자세한 내용은 관련 Knowledge Base 문서를 참고해요.
예를 들어 데이터 품질 문제가 있을 때 사용자 [email protected]이 이메일을 받을 수 있도록 알림 통합을 만들려면 다음 명령을 실행해요.
CREATE NOTIFICATION INTEGRATION my_email_int
TYPE=EMAIL
ENABLED=TRUE
ALLOWED_RECIPIENTS = ('[email protected]');
참고 — 이메일 알림은 Snowflake의 AWS(Amazon Web Services) 배포를 통해 AWS Simple Email Service(SES)를 사용해 처리돼요. AWS를 사용해 보낸 이메일 메시지의 내용은 메시지 전달을 관리하기 위해 최대 30일 동안 Snowflake가 보관할 수 있어요. 이 기간이 지나면 메시지 내용은 삭제돼요.
외부 시스템용 웹훅으로 알림 보내기
웹훅 통합을 만들어 외부 시스템을 통해 데이터 품질 알림을 보낼 수 있어요. 사용할 수 있는 외부 시스템 목록은 웹훅 알림 보내기를 참고해요.
웹훅을 사용해 데이터 품질 알림을 보내려면 다음 단계를 완료해요.
예를 들어 Slack을 사용해 알림을 보내려면 다음 명령을 실행할 수 있어요.
CREATE OR REPLACE SECRET my_slack_webhook_secret
TYPE = GENERIC_STRING
SECRET_STRING = 'T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX';
CREATE OR REPLACE NOTIFICATION INTEGRATION my_slack_webhook_int
TYPE=WEBHOOK
ENABLED=TRUE
WEBHOOK_URL='https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
WEBHOOK_SECRET=my_db.sch1.my_slack_webhook_secret
WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}'
WEBHOOK_HEADERS=('Content-Type'='application/json');
권한 부여
데이터베이스 안의 객체에 대한 알림을 설정하려면 데이터베이스 소유자가 다음 권한을 가져야 해요.
- 계정에 대한 MANAGE DATA QUALITY
- 알림을 보내는 데 사용되는 모든 알림 통합에 대한 USAGE. 알림 통합을 사용하는 경우에만 필요해요.
예를 들어 data_steward 역할을 가진 사용자가 데이터베이스 my_db의 소유자라고 가정해요. my_db의 테이블과 뷰와 연결된 DMF가 드러낸 품질 문제에 대한 알림을 보내기 위해 알림 통합 my_email_int를 사용하려면 다음 명령을 실행해요.
GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE data_steward;
GRANT USAGE ON INTEGRATION my_email_int TO ROLE data_steward;
데이터베이스 설정 구성
DATA_QUALITY_MONITORING_SETTINGS 속성을 사용해 ALTER DATABASE 문을 실행해 데이터베이스에 대한 알림을 켤 수 있어요. 이 속성은 달러 따옴표로 묶인 YAML 사양을 사용해 알림 설정을 정의해요.
DATA_QUALITY_MONITORING_SETTINGS는 데이터 품질 알림의 다음 측면을 지정해요.
- 데이터베이스에 대해 알림이 활성화 또는 비활성화되는지 여부.
- 어떤 이메일 주소가 알림을 받는지(알림 통합 없이 지정).
- 알림을 보내는 알림 통합이 무엇인지(있는 경우). 서로 다른 채널을 통해 알림을 보내려면 여러 알림 통합을 지정할 수 있어요.
- 알림이 전송되는 빈도.
- 알림에 데이터 품질 문제가 있는 특정 테이블 또는 뷰의 이름이 포함되는지 여부. 이 메타데이터는 문제를 빠르게 식별하고 해결하는 데 도움을 줘요.
예를 들어:
ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS =
$$
notification:
enabled: TRUE
email_recipients: [ '[email protected]', '[email protected]']
integrations:
- WEBHOOK_NOTIFY_INT
cooldown_hours: 4
metadata_included: TRUE
$$;
이 예제는 다음 구성을 지정해요.
- 데이터베이스
my_db에 대해 알림이 활성화됨. - 알림이 두 이메일 주소와 하나의 외부 채널로 전송됨.
- 알림이 4시간에 한 번보다 더 자주 전송되지 않음.
- 알림에 객체와 그 연결된 DMF를 식별하는 메타데이터가 포함됨.
특정 DMF 연결에 대한 알림 끄기
데이터베이스에 대한 알림을 켠 후 기본적으로 데이터베이스 안의 모든 객체의 데이터 품질 문제가 알림을 생성해요. 객체와 DMF 사이의 특정 연결에 대한 알림을 꺼서 알림이 전송되지 않게 할 수 있어요. 연결에 대한 알림을 끄려면 DATA_QUALITY_NOTIFICATION 매개 변수를 FALSE로 설정하는 ALTER <object> MODIFY DATA METRIC FUNCTION 문을 실행해요.
예를 들어 뷰 v2를 포함하는 데이터베이스에 대해 알림이 켜져 있다고 가정해요. BLANK_COUNT DMF가 컬럼 c1의 품질 문제를 찾을 때 알림이 전송되지 않게 하려면 다음 명령을 실행해요.
ALTER VIEW v2
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.BLANK_COUNT ON (c1)
SET DATA_QUALITY_NOTIFICATION = FALSE;
알림이 켜져 있는지 확인
DATA_METRIC_FUNCTION_REFERENCES 함수는 객체와 DMF 사이의 연결에 대한 정보를 반환해요. 출력에는 data_quality_notification_status 열이 포함되며, 이를 사용해 연결에 대한 알림이 켜져 있는지 확인할 수 있어요.
확장 예제
계정에 다음 항목이 있다고 가정해요.
- 두 테이블(
t1,t2)과 하나의 뷰(v1)를 포함하는 데이터베이스my_db. - ROW_COUNT DMF와 연결되고 두 연결 모두에 대해 이상 감지가 켜져 있는 테이블
t1과t2. my_db의 소유자인 역할analyst.- NULL_COUNT DMF와 연결되고 연결에 대해 기대값이 정의된 뷰
v1.
테이블 t1 또는 t2에 이상이 있을 때 사용자가 이메일을 받게 하고, 뷰 v1에 품질 문제가 있을 때는 알림이 전송되지 않게 하고 싶어요.
참고 — 이 예제는 이메일 주소를 지정하기 위해 알림 통합을 사용하는 방법을 보여줘요. ALTER DATABASE 명령을 실행할 때 이메일 주소를 직접 지정할 수도 있어요.
- 데이터 품질 문제가 있을 때 알림을 받아야 하는 대상을 나타내는 알림 통합을 만들어요.
CREATE NOTIFICATION INTEGRATION notify_int
TYPE=EMAIL
ENABLED=TRUE
ALLOWED_RECIPIENTS=('[email protected]');
my_db의 소유자인 역할analyst에게 권한을 부여해요.
GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE analyst;
GRANT USAGE ON INTEGRATION notify_int TO ROLE analyst;
- 데이터베이스 설정을 구성해 알림을 켜요. 이 알림에는 데이터 품질 문제가 있는 객체의 이름이 포함돼요.
ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS =
$$
notification:
enabled: TRUE
integrations:
- NOTIFY_INT
metadata_included: TRUE
$$
- 뷰
v1과 NULL_COUNT DMF 사이의 연결에 대해 알림을 꺼요.
ALTER VIEW v1
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1)
SET DATA_QUALITY_NOTIFICATION = FALSE;