CREATE DATA METRIC FUNCTION
CREATE DATA METRIC FUNCTION
현재 또는 지정한 스키마에 새 데이터 메트릭 함수(DMF, Data Metric Function)를 만들거나 기존 DMF를 교체하는 명령이에요. DMF는 테이블 컬럼이나 뷰 컬럼에 적용해 데이터 품질을 측정하는 함수예요.
출처: 문서
본문
현재 또는 지정한 스키마에 새 DMF를 만들거나 기존 DMF를 교체해요.
DMF를 만든 뒤에는 ALTER TABLE … ALTER COLUMN 명령으로 테이블 컬럼에, 또는 ALTER VIEW 명령으로 뷰 컬럼에 적용해요.
이 명령은 다음 변형(variant)을 지원해요.
- CREATE OR ALTER DATA METRIC FUNCTION: 존재하지 않으면 새 DMF를 만들고, 존재하면 기존 DMF를 수정해요.
구문 (Syntax)
CREATE [ OR REPLACE ] [ SECURE ] DATA METRIC FUNCTION [ IF NOT EXISTS ] <name>
( <table_arg> TABLE( <col_arg> <data_type> [ , ... ] )
[ , <table_arg> TABLE( <col_arg> <data_type> [ , ... ] ) ] )
RETURNS NUMBER [ [ NOT ] NULL ]
[ LANGUAGE SQL ]
[ COMMENT = '<string_literal>' ]
AS
'<expression>'
변형 구문 (Variant syntax)
CREATE OR ALTER DATA METRIC FUNCTION
존재하지 않으면 새 DMF를 만들고, 존재하면 기존 DMF를 문에 정의된 함수로 변환해요. CREATE OR ALTER DATA METRIC FUNCTION 문은 CREATE DATA METRIC FUNCTION 문의 구문 규칙을 따르고, ALTER FUNCTION (DMF) 문과 동일한 제약을 가져요.
CREATE OR REPLACE DATA METRIC FUNCTION 명령과 달리 CREATE OR ALTER 명령은 객체를 삭제하고 다시 만들지 않고 업데이트해요.
지원되는 함수 수정에는 COMMENT 속성 변경이 포함돼요.
자세한 내용은 CREATE OR ALTER DATA METRIC FUNCTION 사용 메모와 CREATE OR ALTER <object>를 참고해요.
CREATE [ OR ALTER ] DATA METRIC FUNCTION ...
필수 매개변수 (Required parameters)
name
DMF의 식별자로, 스키마 안에서 고유해야 해요.
또한 식별자는 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.
자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.
( table_arg TABLE( col_arg data_type [ , ... ] ) [ , table_arg TABLE( col_arg data_type [ , ... ] ) ] )
표현식의 입력으로 사용되는 DMF의 시그니처예요. 다음을 지정해야 해요.
- 각 테이블에 대한 인자 이름(
table_arg). - 각 테이블에 대해 최소 하나의 컬럼에 대한 인자 이름과 데이터 유형(
col_arg data_type).
선택적으로 추가 컬럼과 그 데이터 유형에 대한 인자를 지정할 수 있어요. 컬럼은 같은 테이블에 있어야 하며 다른 테이블을 참조할 수 없어요.
RETURNS NUMBER
함수 출력의 데이터 유형이에요. 데이터 유형은 NUMBER만 가능해요.
AS expression
함수의 출력을 결정하는 SQL 표현식이에요. 표현식은 결정적(deterministic)이어야 하고 스칼라 값을 반환해야 해요. 표현식은 WITH 절이나 WHERE 절을 사용해 다른 테이블 객체를 참조할 수 있어요.
expression 주위의 구분자는 작은따옴표 또는 달러 기호 쌍이 될 수 있어요. $$를 구분자로 사용하면 작은따옴표를 포함한 표현식을 더 쉽게 작성할 수 있어요.
expression의 구분자가 작은따옴표 문자라면, expression 안의 모든 작은따옴표(예: 문자열 리터럴)는 작은따옴표로 이스케이프해야 해요.
expression은 다음을 지원하지 않아요.
- 비결정적(nondeterministic) 함수 사용 (예: CURRENT_TIME)
- UDF 또는 UDTF에 의존하는 객체 참조
- 비스칼라 출력 반환
선택 매개변수 (Optional parameters)
SECURE
DMF가 보안(secure) 함수임을 지정해요. 자세한 내용은 Secure UDF 및 저장 프로시저로 민감한 정보 보호를 참고해요.
LANGUAGE SQL
표현식을 작성하는 데 사용되는 언어를 지정해요. SQL이 유일하게 지원되는 언어예요.
COMMENT = 'string_literal'
DMF에 대한 설명(comment)이에요.
접근 제어 요구 사항 (Access control requirements)
| 권한 (Privilege) | 객체 (Object) | 비고 |
|---|---|---|
| CREATE DATA METRIC FUNCTION | Schema | 이 권한은 스키마에서 DMF를 만드는 것만 가능하게 해요. |
SQL 또는 Java UDF 같은 사용자 정의 함수 생성을 활성화하려면 역할이 CREATE FUNCTION 권한을 가져야 해요.
일반 사용 메모 (General usage notes)
기존 DMF를 수정해야 하고 현재 함수 정의를 확인해야 한다면 DESCRIBE FUNCTION (DMF) 명령을 실행하거나 GET_DDL 함수를 호출해요.
메타데이터에 관해서는 다음 사항에 주의해요.
⚠️ 주의: 고객은 Snowflake 서비스를 사용할 때 (User 객체를 제외하고) 개인 데이터·민감 데이터·수출 통제 데이터·기타 규제 데이터를 메타데이터로 입력하지 않도록 해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고해요.
OR REPLACE와 IF NOT EXISTS 절은 서로 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.
CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.
CREATE OR ALTER DATA METRIC FUNCTION 사용 메모
DMF의 인자는 수정할 수 없어요. 새 인자를 지정하면 새 오버로드(overloaded) DMF가 만들어져요.
예시: 단일 테이블 인자 (Single table argument)
테이블의 세 컬럼에 양수가 있는 행 수를 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
$$;
예시: 여러 테이블 인자 (Multiple table arguments)
한 테이블의 한 컬럼 값이 다른 테이블의 컬럼에 대응하는 값이 없는 레코드 수를 반환해요.
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)
$$;
이 DMF를 사용해 참조 무결성을 검증하는 예시는 여러 테이블 인자를 사용한 참조 검사(Example: Using multiple table arguments to perform referential checks)를 참고해요.
예시: CREATE OR ALTER 명령으로 DMF 수정
위 예시에서 만든 단일 테이블 DMF에 security와 comment를 설정하도록 수정해요.
CREATE OR ALTER SECURE DATA METRIC FUNCTION governance.dmfs.count_positive_numbers(
arg_t TABLE(
arg_c1 NUMBER,
arg_c2 NUMBER,
arg_c3 NUMBER
)
)
RETURNS NUMBER
COMMENT = 'count positive numbers'
AS
$$
SELECT
COUNT(*)
FROM arg_t
WHERE
arg_c1>0
AND arg_c2>0
AND arg_c3>0
$$;
더 알아보기 (Learn more)
- 데이터 품질 모니터링 — DMF 개요와 사용
- ALTER FUNCTION (DMF) — DMF 수정