사용자 지정 데이터 메트릭 함수¶
데이터 품질 검사를 수행할 수 있는 시스템 데이터 품질 메트릭 함수(DMF) 가 없는 경우 CREATE DATA METRIC FUNCTION 명령을 사용하여 자체적으로 DMF 를 생성할 수 있습니다.
사용자 지정 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
로 다시 매핑되는지 확인하려고 한다고 가정해 보겠습니다.salesorders
테이블에salespeople
테이블을 다른 테이블 인자로 지정하면서 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 테스트¶
1개 이상의 테이블에 연결하기 전에 사용자 지정 DMF 를 수동으로 실행하여 테스트할 수 있습니다. 자세한 내용은 수동으로 DMF 호출하기 섹션을 참조하십시오.
사용자 지정 DMF 보호¶
ALTER FUNCTION 명령을 사용하여 DMF 보안을 설정할 수 있습니다. 함수 보안의 의미에 대한 자세한 내용은 Secure UDF와 저장 프로시저로 민감한 정보 보호하기 섹션을 참조하십시오.
ALTER FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER,
NUMBER,
NUMBER
))
SET SECURE;
DMF의 속성 보기¶
속성을 보려면 DMF를 설명합니다.
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
)
);