사용자 지정 데이터 메트릭 함수

데이터 품질 검사를 수행할 수 있는 시스템 데이터 품질 메트릭 함수(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
$$;
Copy
예제: 여러 테이블 인자를 사용하여 참조 검사 성능 수행하기

사용자 정의 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)';
Copy

이제 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)));
Copy

출력은 salesorders 테이블에서 sp_id 열의 값이 salespeople 테이블의 sp_id 열에 나타나지 않는 행의 수를 반환합니다. 값이 0보다 크면 salesorderssalespeople 의 기록에 매핑되지 않는 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;
Copy

DMF의 속성 보기

속성을 보려면 DMF를 설명합니다.

DESC FUNCTION governance.dmfs.count_positive_numbers(
  TABLE(
    NUMBER, NUMBER, NUMBER
  )
);
Copy
+-----------+---------------------------------------------------------------------+
| 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';
Copy

사용자 지정 DMF 삭제

DROP FUNCTION 명령을 사용하여 시스템에서 사용자 정의 데이터 메트릭 함수를 제거할 수 있습니다.

참고

사용자 지정 DMF 가 테이블 또는 뷰와 연결되어 있는 동안에는 시스템에서 삭제할 수 없습니다. DATA_METRIC_FUNCTION_REFERENCES 함수를 사용하여 데이터 메트릭 함수가 설정된 테이블 및 뷰를 식별할 수 있습니다.

테이블 또는 뷰에서 DMF 연결을 제거하는 방법에 대한 자세한 내용은 오브젝트에서 DMF 삭제하기 섹션을 참조하십시오.

시스템에서 사용자 지정 DMF 를 드롭합니다.

DROP FUNCTION governance.dmfs.count_positive_numbers(
  TABLE(
    NUMBER, NUMBER, NUMBER
  )
);
Copy