데이터 품질 문제에 대한 알림 전송하기¶
Snowflake는 데이터 메트릭 함수(DMF)에서 반환된 값이 데이터 품질 문제를 나타내는 경우를 식별하는 다음의 기능을 제공합니다.
기대치 — 부울 식을 사용하여 DMF의 출력을 예상 값과 비교할 수 있습니다. 부울 식과 일치하지 않는 반환 값은 기대치 위반으로 간주됩니다.
변칙 검색 — Snowflake는 DMF의 출력이 변칙을 구성하는 경우를 자동으로 감지합니다. DMF에서 반환된 값이 과거 데이터를 기준으로 예상 범위를 초과하거나 미만인 경우 변칙이 발생합니다.
알림 통합을 사용하여 이러한 기능 중 하나에서 데이터 품질 문제가 식별되면 알림을 전송할 수 있습니다. Snowflake가 구성된 후 기대치가 위반되거나 Snowflake가 변칙을 식별할 때마다 알림이 전송됩니다.
데이터베이스 수준에서 알림을 활성화합니다. 활성화되면 해당 데이터베이스에서 연결된 DMF가 있는 모든 오브젝트는 품질 문제가 있을 때 알림을 생성합니다. 알림을 위해 활성화된 데이터베이스 내에서 데이터베이스의 오브젝트와 DMF 간의 특정 연결에 대한 알림을 끌 수 있습니다.
워크플로¶
데이터 품질 문제에 대한 알림을 전송하도록 Snowflake를 구성하는 작업은 다음과 같습니다.
데이터베이스 소유자에게 액세스 제어 권한을 부여합니다.
:ref:`데이터베이스를 수정<label-data_quality_notifications_database>`하여 알림을 켜고 알림을 전송할 알림 통합을 지정합니다.
이 워크플로의 엔드투엔드 예시는 확장된 예 섹션을 참조하십시오.
알림 통합 만들기¶
알림 통합은 Snowflake 및 서드 파티 메시징 서비스 간의 인터페이스를 제공하는 Snowflake 오브젝트입니다. 데이터 품질 문제에 대한 알림을 전송하려면 메시징 서비스에 대한 알림 통합을 생성합니다. 데이터 품질 모니터링은 다음 유형의 알림을 지원합니다.
이메일 알림
웹후크 사용하여 Slack과 같은 외부 시스템을 통해 전송되는 알림.
이메일을 통해 알림 전송¶
이메일 주소 목록으로 알림을 전송하려면 CREATE NOTIFICATION INTEGRATION 문을 실행하여 EMAIL 형식의 통합을 생성합니다. 해당 통합은 ALLOWED_RECIPIENTS 매개 변수를 사용하여 알림이 전송되는 이메일 주소 목록을 지정해야 합니다. 확인된 이메일 주소만 추가할 수 있습니다. 이메일 주소 확인에 대한 자세한 내용은 이메일 알림 수신자의 이메일 주소 확인 섹션을 참조하세요.
팁
Snowflake 외부에서 관리되는 배포 목록 또는 그룹에 이메일 알림을 전송할 수 있습니다. 자세한 내용은 관련 `기술 자료 문서<https://community.snowflake.com/s/article/How-to-send-Alerts-and-Notifications-to-an-email-distribution-list-or-group-and-manage-the-group-membership-outside-of-Snowflake>`_를 참조하세요.
예를 들어 joe.smith@example.com 사용자가 데이터 품질 문제가 있을 때 이메일로 보낼 수 있도록 알림 통합을 생성하려면 다음 명령을 실행합니다.
CREATE NOTIFICATION INTEGRATION my_email_int
TYPE=EMAIL
ENABLED=TRUE
ALLOWED_RECIPIENTS = ('joe.smith@example.com');
참고
이메일 알림은 AWS Simple Email Service(SES)를 사용하여 Snowflake의 Amazon Web Services(AWS) 배포를 통해 처리됩니다. AWS를 사용하여 보낸 이메일 메시지의 내용은 메시지 전달을 관리하기 위해 Snowflake에서 최대 30일간 보관할 수 있습니다. 이 기간이 지나면 메시지 내용이 삭제됩니다.
외부 시스템용 웹훅을 사용하여 알림 전송하기¶
웹훅 통합을 생성하여 외부 시스템을 통해 데이터 품질 알림을 전송할 수 있습니다. 사용할 수 있는 외부 시스템 목록은 웹훅 알림 보내기 섹션을 참조하세요.
웹훅을 사용하여 데이터 품질 알림을 전송하려면 다음 단계를 완료합니다.
예를 들어, 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``의 테이블 및 뷰와 관련된 DMFs에서 발견된 품질 문제에 대한 알림을 전송하기 위해 알림 통합 ``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 사양을 사용하여 알림 설정을 정의합니다.
이 속성을 설정하면 데이터 품질 알림의 세 가지 측면을 제어할 수 있습니다.
데이터베이스에 대한 알림 활성화 또는 비활성화 여부.
알림을 전송하는 알림 통합. 여러 알림 통합을 지정하여 다양한 채널을 통해 알림을 전송할 수 있습니다.
알림에 데이터 품질 문제가 있는 특정 테이블 또는 뷰의 이름이 포함되는지 여부. 이 메타데이터는 문제를 빠르게 식별하고 해결하는 데 도움이 됩니다.
예:
ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS = $$ notification: enabled: TRUE integrations: - EMAIL_NOTIFY_INT - WEBHOOK_NOTIFY_INT metadata_included: TRUE $$
특정 DMF 연결에 대한 알림 끄기¶
기본적으로, 데이터베이스에 대한 알림을 켠 후 데이터베이스 내의 모든 오브젝트에서 데이터 품질 문제가 발생하면 알림이 생성됩니다. 알림이 전송되지 않도록 오브젝트와 DMF 간의 특정 연결에 대한 알림을 끌 수 있습니다. 연결에 대한 알림을 끄려면 ALTER <object> MODIFY DATA METRIC FUNCTION 문을 실행하여 DATA_QUALITY_NOTIFICATION 매개 변수를 FALSE로 설정합니다.
예를 들어, 뷰 ``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)과 1개의 뷰(v1)가 포함된 데이터베이스my_db.ROW_COUNT DMF와 연관된 테이블
t1및 ``t2``(두 연결 모두에 대해 변칙 검색이 켜져 있음).analyst역할은 ``my_db``의 소유자입니다.v1뷰는 NULL_COUNT DMF와 연결되어 있으며, 해당 연결에 대해 정의된 기대치가 있습니다.
t1 또는 t2 테이블에 변칙이 있을 때 사용자가 이메일을 수신하도록 하고 싶지만 v1 뷰에 품질 문제가 있을 때 알림이 전송되는 것을 원하지 않습니다.
데이터 품질 문제가 있을 때 알림을 수신할 사용자를 나타내는 알림 통합을 생성합니다.
CREATE NOTIFICATION INTEGRATION notify_int TYPE=EMAIL ENABLED=TRUE ALLOWED_RECIPIENTS=('joe.smith@example.com');
my_db``의 소유자인 ``analyst역할의 새 알림 통합에 대한 권한을 부여합니다.GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE analyst; GRANT USAGE ON INTEGRATION notify_int TO ROLE analyst;
:ref:`데이터베이스 설정을 구성<label-data_quality_notifications_database>`하여 알림을 켭니다. 이러한 알림에는 데이터 품질 문제가 발생한 오브젝트의 이름이 포함됩니다.
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;