데이터 품질 문제에 대한 알림 전송하기

Snowflake는 데이터 메트릭 함수(DMF)에서 반환된 값이 데이터 품질 문제를 나타내는 경우를 식별하는 다음의 기능을 제공합니다.

  • 기대치 — 부울 식을 사용하여 DMF의 출력을 예상 값과 비교할 수 있습니다. 부울 식과 일치하지 않는 반환 값은 기대치 위반으로 간주됩니다.

  • 변칙 검색 — Snowflake는 DMF의 출력이 변칙을 구성하는 경우를 자동으로 감지합니다. DMF에서 반환된 값이 과거 데이터를 기준으로 예상 범위를 초과하거나 미만인 경우 변칙이 발생합니다.

알림 통합을 사용하여 이러한 기능 중 하나에서 데이터 품질 문제가 식별되면 알림을 전송할 수 있습니다. Snowflake가 구성된 후 기대치가 위반되거나 Snowflake가 변칙을 식별할 때마다 알림이 전송됩니다.

데이터베이스 수준에서 알림을 활성화합니다. 활성화되면 해당 데이터베이스에서 연결된 DMF가 있는 모든 오브젝트는 품질 문제가 있을 때 알림을 생성합니다. 알림을 위해 활성화된 데이터베이스 내에서 데이터베이스의 오브젝트와 DMF 간의 특정 연결에 대한 알림을 끌 수 있습니다.

워크플로

데이터 품질 문제에 대한 알림을 전송하도록 Snowflake를 구성하는 작업은 다음과 같습니다.

  1. 알림 통합을 만듭니다.

  2. 데이터베이스 소유자에게 액세스 제어 권한을 부여합니다.

  3. :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');
Copy

참고

이메일 알림은 AWS Simple Email Service(SES)를 사용하여 Snowflake의 Amazon Web Services(AWS) 배포를 통해 처리됩니다. AWS를 사용하여 보낸 이메일 메시지의 내용은 메시지 전달을 관리하기 위해 Snowflake에서 최대 30일간 보관할 수 있습니다. 이 기간이 지나면 메시지 내용이 삭제됩니다.

외부 시스템용 웹훅을 사용하여 알림 전송하기

웹훅 통합을 생성하여 외부 시스템을 통해 데이터 품질 알림을 전송할 수 있습니다. 사용할 수 있는 외부 시스템 목록은 웹훅 알림 보내기 섹션을 참조하세요.

웹훅을 사용하여 데이터 품질 알림을 전송하려면 다음 단계를 완료합니다.

  1. 웹훅에 대한 시크릿을 생성합니다URL.

  2. 웹훅 알림 통합을 생성합니다.

예를 들어, 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');
Copy

권한 부여

데이터베이스 내의 오브젝트에 대한 알림을 설정하려면 데이터베이스 소유자에게 다음 권한이 있어야 합니다.

  • 계정에 대한 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;
Copy

데이터 품질 알림을 위한 데이터베이스 설정 구성하기

알림 통합을 생성하고 필요한 권한을 부여한 후 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
  $$
Copy
  • 데이터베이스 ``my_db``에 대해 알림이 활성화되었습니다.

  • 알림은 email_notify_int``webhook_notify_int``의 두 가지 알림 통합을 통해 전송됩니다. 즉, 데이터 품질 문제가 발생하면 두 채널을 통해 알림이 트리거됩니다.

  • 알림에는 오브젝트 및 관련 DMF를 식별하는 메타데이터가 포함됩니다.

특정 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;
Copy

알림이 켜져 있는지 확인하기

DATA_METRIC_FUNCTION_REFERENCES 함수는 오브젝트와 DMF 간의 연결에 대한 정보를 반환합니다. 출력에 data_quality_notification_status 열이 포함되어 있으며 연결에 대한 알림이 켜져 있는지 여부를 결정하는 데 사용할 수 있습니다.

확장된 예

계정에 다음 항목이 있다고 가정해 보겠습니다.

  • 두 개의 테이블(t1t2)과 1개의 뷰(v1)가 포함된 데이터베이스 my_db.

  • ROW_COUNT DMF와 연관된 테이블 t1``t2``(두 연결 모두에 대해 변칙 검색이 켜져 있음).

  • analyst 역할은 ``my_db``의 소유자입니다.

  • v1 뷰는 NULL_COUNT DMF와 연결되어 있으며, 해당 연결에 대해 정의된 기대치가 있습니다.

t1 또는 t2 테이블에 변칙이 있을 때 사용자가 이메일을 수신하도록 하고 싶지만 v1 뷰에 품질 문제가 있을 때 알림이 전송되는 것을 원하지 않습니다.

  1. 데이터 품질 문제가 있을 때 알림을 수신할 사용자를 나타내는 알림 통합을 생성합니다.

    CREATE NOTIFICATION INTEGRATION notify_int
      TYPE=EMAIL
      ENABLED=TRUE
      ALLOWED_RECIPIENTS=('joe.smith@example.com');
    
    Copy
  2. my_db``의 소유자인 ``analyst 역할의 새 알림 통합에 대한 권한을 부여합니다.

    GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE analyst;
    GRANT USAGE ON INTEGRATION notify_int TO ROLE analyst;
    
    Copy
  3. :ref:`데이터베이스 설정을 구성<label-data_quality_notifications_database>`하여 알림을 켭니다. 이러한 알림에는 데이터 품질 문제가 발생한 오브젝트의 이름이 포함됩니다.

    ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS =
      $$
      notification:
        enabled: TRUE
        integrations:
          - NOTIFY_INT
        metadata_included: TRUE
      $$
    
    Copy
  4. v1 뷰와 NULL_COUNT DMF 간의 연결을 위해 알림을 끕니다.

    ALTER VIEW v1
      MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1)
        SET DATA_QUALITY_NOTIFICATION = FALSE;
    
    Copy