SQL을 사용하여 데이터 메트릭 함수 설정

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

참고

사용자 인터페이스를 사용해 DMF를 테이블에 연결하는 작업을 포함하여 데이터 품질 검사를 설정하려면 Snowsight 를 사용하여 데이터 품질 검사 설정 섹션을 참조하세요.

DMF 연결

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

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

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

일부 DMFs는 열을 인자로 허용하지 않습니다. 예를 들어, ROW_COUNT 시스템 DMF를 뷰 ``v2``와 연결하려면 다음 명령을 실행합니다.

ALTER VIEW v2
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT
    ON ();
Copy

ACCEPTED_VALUES DMF에는 람다 표현식과 열 이름이 포함되어 있어 예상 값과 일치하지 않는 레코드 수를 확인할 수 있습니다. 예를 들어 다음 문은 함수를 테이블 ``t1``과 연결하여 함수가 열 ``age``의 값이 5가 아닌 레코드의 수를 반환하도록 합니다.

ALTER TABLE t1
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ACCEPTED_VALUES ON (age, age -> age = 5);
Copy

오브젝트에서 DMF 삭제하기

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

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

DMFs 일정 조정

테이블, 뷰 또는 구체화된 뷰의 DATA_METRIC_SCHEDULE 오브젝트 매개 변수는 DMFs가 실행되는 빈도를 제어합니다. 기본적으로 일정은 1시간으로 설정됩니다. 테이블 또는 뷰의 모든 데이터 메트릭 함수는 동일한 일정을 따릅니다.

다음 접근 방식을 사용하여 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 결과를 더 정확하게 평가할 수 있습니다.

DMFs 일시 중단

테이블과 연결되어 있어도 실행되지 않도록 DMF를 일시 중단할 수 있습니다. 또는 단일 문이 있는 테이블과 연결된 모든 DMFs를 일시 중단할 수 있습니다.

  • 테이블과 연결된 **특정 DMF를 일시 중단**하려면 SUSPEND 매개 변수를 설정하도록 해당 연결을 수정합니다. 예:

    ALTER TABLE t1
      MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON ( col1 )
        SUSPEND;
    
    Copy

    DMF 실행을 재개하려면 다른 MODIFY DATA METRIC FUNCTION 문을 사용하여 RESUME 매개 변수를 설정합니다.

  • 테이블과 연결된 **모든 DMFs를 일시 중단**하려면 테이블의 일정을 빈 문자열로 설정합니다. 예:

    ALTER TABLE t1 SET DATA_METRIC_SCHEDULE = '';
    
    Copy

    DMFs를 재개하려면 DATA_METRIC_SCHEDULE 매개 변수를 유효한 값으로 설정합니다.

수동으로 DMF 호출하기

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

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

SELECT <data_metric_function>(<query>)
Copy

여기서

data_metric_function

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

query

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

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

참고

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

예를 들어 3개의 열을 인자로 허용하는 사용자 지정 DMF ``count_positive_numbers``를 호출하려면 다음 명령을 실행합니다.

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

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

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

사용자 지정 DMF는 여러 테이블의 인자를 허용하며, 열을 프로젝션하는 각 쿼리는 괄호로 묶어야 합니다. 예를 들어 REFERENTIAL_CHECK DMF를 수동으로 호출하려는 경우 다음을 실행합니다.

SELECT referential_check( (SELECT id FROM salesorders), (SELECT id FROM salespeople) );
Copy