데이터 메트릭 함수를 사용하여 데이터 품질 검사 수행

이 항목에서는 데이터 메트릭 함수(DMF)를 테이블 또는 뷰에 연결하여 정기적으로 데이터 품질 검사를 수행하는 방법에 대해 설명합니다. 예를 들어, DMF 를 테이블이나 뷰에 연결하기 전에 테스트하려는 경우 DMF 를 직접 호출하는 방법에 대해서도 설명합니다.

DMF 를 연결하여 데이터 품질 검사 자동화하기

DMF 를 테이블 또는 뷰와 연결하여 일정한 간격으로 자동으로 호출할 수 있습니다. DMF 를 연결할 때 DMF 에 인자로 전달할 열을 지정합니다.

DMF 를 테이블 또는 뷰와 연결하여 데이터 품질 검사를 자동화하는 프로세스는 두 단계로 수행됩니다.

  1. 테이블 또는 뷰에서 DMFs 가 실행될 빈도를 결정하는 일정을 설정 합니다. DMF 를 테이블 또는 뷰와 연결하기 전에 예약을 설정해야 합니다.

  2. DMF 를 테이블 또는 뷰에 연결합니다.

DMF 실행 예약하기

DMFs 를 예약하여 테이블에서 데이터 품질 측정을 자동화하도록 실행할 수 있습니다.

Snowflake는 테이블에 대한 OWNERSHIP 권한이 있는 역할인 테이블 소유자 역할을 사용하여 예약된 DMF를 호출합니다. 테이블 소유자 역할에는 다음과 같은 권한이 있어야 합니다.

  • 사용자 정의 DMF에 대한 USAGE 권한과 사용자 정의 DMF를 저장하는 데이터베이스 및 스키마에 대한 USAGE 권한.

  • DMF가 시스템 DMF인 경우 DATA_METRIC_USER 데이터베이스 역할.

  • 계정에 대한 EXECUTE DATA METRIC FUNCTION 권한.

테이블, 뷰 또는 구체화된 뷰의 DATA_METRIC_SCHEDULE 오브젝트 매개 변수를 사용하면 DMFs의 실행 시점을 예약할 수 있습니다. 테이블이나 뷰의 모든 데이터 메트릭 함수는 동일한 일정을 따릅니다.

DMF의 실행 일정을 예약하는 방법은 다음의 세 가지입니다.

  • 지정된 시간(분) 후에 실행되도록 DMF를 설정합니다.

  • 특정 빈도로 실행되도록 DMF를 예약하려면 cron 식을 사용합니다.

  • 트리거 이벤트를 사용하여 테이블에 새 행을 삽입하는 등 테이블에 DML 변경 이 있을 때 DMF가 실행되도록 예약합니다. 하지만:

예:

데이터 메트릭 함수 일정을 5분마다 실행되도록 설정합니다.

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = '5 MINUTE';
Copy

데이터 메트릭 함수 일정을 매일 AM 8:00에 실행되도록 설정합니다.

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * * UTC';
Copy

데이터 메트릭 함수 일정을 평일 AM 8:00에만 실행되도록 설정합니다.

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * MON,TUE,WED,THU,FRI UTC';
Copy

데이터 메트릭 함수 일정을 매일 UTC 0600, 1200, 1800에 3회 실행되도록 설정합니다.

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 6,12,18 * * * UTC';
Copy

새 행 삽입과 같은 일반 DML 작업으로 테이블이 수정될 때 데이터 메트릭 함수가 실행되도록 설정합니다.

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'TRIGGER_ON_CHANGES';
Copy

SHOW PARAMETERS 명령을 사용하여 지원되는 테이블 오브젝트에 대한 DMF 일정을 볼 수 있습니다.

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE hr.tables.empl_info;
Copy
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| key                  | value                          | default | level | description                                                                                                                  | type   |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| DATA_METRIC_SCHEDULE | USING CRON 0 6,12,18 * * * UTC |         | TABLE | Specify the schedule that data metric functions associated to the table must be executed in order to be used for evaluation. | STRING |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+

뷰 및 구체화된 뷰 오브젝트의 경우 TABLE 을 오브젝트 도메인으로 지정하고 다음과 같이 일정을 확인할 수 있습니다.

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE mydb.public.my_view;
Copy

참고

테이블에서 DMF를 수정하면 테이블에 할당된 이전 DMFs에 일정 변경 사항이 적용되기까지 10분의 지연 시간이 있습니다. 단, 테이블에 새로 DMF를 할당하는 경우에는 10분 지연이 적용되지 않습니다. 예상되는 DMF 비용 에 맞춰 DMF 스케줄링 및 DMF 설정 취소 작업을 신중하게 계획해야 합니다.

또한 DATA_QUALITY_MONITORING_RESULTS 뷰를 쿼리하는 등 DMF 결과를 평가할 때는 쿼리에서 measurement_time 열을 평가의 기준으로 지정합니다. DMF 평가를 시작하는 내부 프로세스가 있으며, 예약된 시간과 측정 시간 사이에 INSERT 연산과 같은 테이블 업데이트가 발생할 수 있습니다. measurement_time 열을 사용하면 측정 시간이 DMF의 평가 시간을 나타내므로 DMF 결과를 더 정확하게 평가할 수 있습니다.

DMF 를 테이블에 연결

ALTER TABLE 또는 ALTER VIEW 명령을 사용하여 DMF 를 연결하고 인자로 전달할 열을 지정합니다. 예를 들어, 다음 명령은 시스템 DMF NULL_COUNT 를 테이블 t 와 연결합니다. DMF 가 실행되면 c1 열의 NULL 값 개수가 반환됩니다.

ALTER TABLE t
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT
    ON (c1);
Copy

참고

ALTER VIEW 명령을 사용하여 구체화된 뷰 열에 DMF를 추가하거나 구체화된 뷰 열에서 DMF를 삭제합니다.

오브젝트에서 DMF 삭제하기

ALTER TABLE 또는 ALTER VIEW 명령을 사용하여 DMF 를 삭제할 수 있습니다. 예:

ALTER TABLE t
  DROP DATA METRIC FUNCTION governance.dmfs.count_positive_numbers
    ON (c1, c2, c3);
Copy

수동으로 DMF 호출하기

DMF 를 직접 호출하면 테이블이나 뷰에 연결하기 전에 DMF 의 출력을 테스트하는 데 유용할 수 있습니다.

다음 구문을 사용하여 DMF를 호출합니다.

SELECT <data_metric_function>(<query>)
Copy

여기서

data_metric_function

시스템 DMF 또는 사용자 정의 DMF를 지정합니다.

query

테이블 또는 뷰에 SQL 쿼리를 지정합니다.

쿼리가 프로젝션하는 열은 DMF 서명의 열 인자와 일치해야 합니다.

참고

다음 시스템 DMFs 는 인자를 사용하지 않으므로 이 구문을 따르지 않습니다.

예를 들어, 세 개의 열을 인자로 받는 사용자 정의 DMF count_positive_numbers 를 호출하려면 다음을 실행합니다.

SELECT governance.dmfs.count_positive_numbers(
  SELECT c1, c2, c3
  FROM t);
Copy

예를 들어, NULL_COUNT(시스템 데이터 메트릭 함수) 시스템 DMF 를 호출하여 ssn 열에 있는 NULL 값의 수를 보려면 다음을 실행합니다.

SELECT SNOWFLAKE.CORE.NULL_COUNT(
  SELECT ssn
  FROM hr.tables.empl_info);
Copy