사용자 지정 데이터 메트릭 함수
사용자 지정 데이터 메트릭 함수
Enterprise Edition 기능 — 데이터 품질 모니터링(Data Quality Monitoring)은 Enterprise Edition이 필요해요. 업그레이드 문의는 Snowflake 지원에 연락해 주세요.
데이터 품질 검사를 수행할 수 있는 시스템 데이터 품질 메트릭 함수(DMF)가 없다면, CREATE DATA METRIC FUNCTION 명령을 사용해 나만의 DMF를 만들 수 있어요.
출처: Documentation
본문
사용자 지정 DMF 만들기
다음 예제는 CREATE DATA METRIC FUNCTION 명령을 사용해 사용자 지정 DMF를 만드는 방법을 보여줘요.
예제: 단일 테이블 인자를 가진 사용자 정의 DMF
테이블의 세 컬럼에 양수가 있는 총 행 수를 반환하도록 COUNT 함수를 호출하는 DMF를 만들어요.
CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.count_positive_numbers(
arg_t TABLE(
arg_c1 NUMBER,
arg_c2 NUMBER,
arg_c3 NUMBER
)
)
RETURNS NUMBER
AS
$$
SELECT
COUNT(*)
FROM arg_t
WHERE
arg_c1>0
AND arg_c2>0
AND arg_c3>0
$$;
예제: 참조 검사를 수행하기 위해 여러 테이블 인자 사용
사용자 정의 DMF는 테이블을 받는 인자를 두 개 이상 가질 수 있어요. DMF를 테이블에 추가하면 그 테이블이 첫 번째 인자로 사용돼요. 테이블을 받는 추가 인자가 있으면 두 번째 테이블의 정규화된 이름도 지정해야 해요. 이 기능은 서로 다른 데이터 세트 간의 참조 무결성, 일치 및 비교, 또는 조건부 검사를 단순화해요.
기본 키/외래 키 관계로 정의된 참조 무결성을 검증한다고 가정해요. 이 경우 원본 테이블의 모든 레코드가 참조 테이블에 해당 레코드를 가지는지 검증하는 DMF를 만들 수 있어요. 다음 사용자 정의 DMF는 한 테이블의 컬럼 값이 다른 테이블의 컬럼에 해당 값이 없는 레코드 수를 반환해요.
CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.referential_check(
arg_t1 TABLE (arg_c1 INT), arg_t2 TABLE (arg_c2 INT))
RETURNS NUMBER AS
'SELECT COUNT(*) FROM arg_t1
WHERE arg_c1 NOT IN (SELECT arg_c2 FROM arg_t2)';
이제 salesorders 테이블의 각 주문(그 sp_id로 식별)이 salespeople 테이블의 sp_id에 매핑되는지 확인하려 한다고 가정해요. salespeople 테이블을 다른 테이블 인자로 지정하면서 salesorders 테이블에 DMF를 추가할 수 있어요.
ALTER TABLE salesorders
ADD DATA METRIC FUNCTION governance.dmfs.referential_check
ON (sp_id, TABLE (my_db.sch1.salespeople(sp_id)));
출력은 salesorders 테이블에서 sp_id 컬럼 값이 salespeople 테이블의 sp_id 컬럼에 나타나지 않는 행 수를 반환해요. 0보다 큰 값은 salesorders에 salespeople의 레코드에 매핑되지 않는 sp_id 값이 있다는 뜻이에요.
사용자 지정 DMF 테스트
사용자 지정 DMF를 하나 이상의 테이블과 연결하기 전에 수동으로 실행해 테스트할 수 있어요. 자세한 내용은 DMF 수동 호출을 참고해요.
사용자 지정 DMF 보안 설정
ALTER FUNCTION 명령을 사용해 DMF를 보안(secure)으로 만들 수 있어요. 함수가 보안이라는 것의 의미에 대한 자세한 내용은 Secure UDF와 저장 프로시저로 민감한 정보 보호를 참고해요.
ALTER FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER,
NUMBER,
NUMBER
))
SET SECURE;
DMF 속성 보기
DMF를 DESCRIBE해 속성을 볼 수 있어요.
DESC FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER, NUMBER, NUMBER
)
);
+-----------+---------------------------------------------------------------------+
| property | value |
+-----------+---------------------------------------------------------------------+
| signature | (ARG_T TABLE(ARG_C1 NUMBER, ARG_C2 NUMBER, ARG_C3 NUMBER)) |
| returns | NUMBER(38,0) |
| language | SQL |
| body | SELECT COUNT(*) FROM arg_t WHERE arg_c1>0 AND arg_c2>0 AND arg_c3>0 |
+-----------+---------------------------------------------------------------------+
사용자 지정 DMF에 태그 설정
ALTER FUNCTION 명령을 사용해 DMF에 태그를 설정해요.
ALTER FUNCTION governance.dmfs.count_positive_numbers(
TABLE(NUMBER, NUMBER, NUMBER))
SET TAG governance.tags.quality = 'counts';
사용자 지정 DMF 삭제
DROP FUNCTION 명령을 사용해 시스템에서 사용자 지정 데이터 메트릭 함수를 제거할 수 있어요.
참고 — 사용자 지정 DMF가 여전히 테이블 또는 뷰와 연결되어 있는 동안에는 시스템에서 삭제할 수 없어요. DATA_METRIC_FUNCTION_REFERENCES 함수를 사용해 데이터 메트릭 함수가 설정된 테이블과 뷰를 식별해요.
테이블 또는 뷰에서 DMF 연결을 제거하는 방법은 객체에서 DMF 삭제를 참고해요.
시스템에서 사용자 지정 DMF를 삭제해요.
DROP FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER, NUMBER, NUMBER
)
);