CREATE DATA METRIC FUNCTION¶
현재 또는 지정된 스키마에 새 데이터 메트릭 함수(DMF)를 생성하거나 기존 데이터 메트릭 함수를 바꿉니다.
DMF를 생성한 후 ALTER TABLE … ALTER COLUMN 명령을 사용하여 테이블 열에 적용하거나 ALTER VIEW 명령을 사용하여 뷰 열에 적용합니다.
- 참고 항목:
이 항목의 내용:
구문¶
CREATE [ OR REPLACE ] DATA METRIC FUNCTION [ IF NOT EXISTS ] <name>
( <arg_name> TABLE( <c1> <data_type> [ , ... ] ) )
RETURNS NUMBER [ [ NOT ] NULL ]
[ LANGUAGE SQL ]
[ COMMENT = '<string_literal>' ]
AS
'<expression>'
필수 매개 변수¶
name
DMF의 식별자로, 스키마에 고유한 식별자여야 합니다.
또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예:
"My object"
)로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
( arg_name TABLE( c1 data_type [ , ... ] ) )
식의 입력으로 사용되는 DMF에 대한 서명입니다.
다음을 지정해야 합니다.
테이블에 대한 1개의 인자 이름,
arg_name
.최소한 하나의 열 이름과 해당 데이터 타입,
c1 data_type
.선택적으로 추가 열과 해당 데이터 타입을 지정할 수 있습니다. 열은 같은 테이블에 있어야 하며 다른 테이블을 참조할 수 없습니다.
RETURNS NUMBER
함수 결과의 데이터 타입입니다.
데이터 타입은 NUMBER만 가능합니다.
AS expression
함수의 출력을 결정하는 SQL 식입니다. 식은 결정적이어야 하며 스칼라 값을 반환해야 합니다. 식은 WITH 절이나 WHERE 절 등을 사용하여 다른 테이블 오브젝트를 참조할 수 있습니다.
expression
주위의 구분 기호는 작은따옴표 또는 한 쌍의 달러 기호일 수 있습니다.$$
를 구분 기호로 사용하면 작은따옴표가 포함된 식을 더 쉽게 작성할 수 있습니다.expression
의 구분 기호가 작은따옴표인 경우expression
내의 모든 작은따옴표(예: 문자열 리터럴)는 반드시 작은따옴표로 이스케이프 처리해야 합니다.expression
은 다음을 지원하지 않습니다.JOIN 구조체 사용.
비결정적 함수 사용(예: CURRENT_TIME).
UDF 또는 UDTF에 종속된 오브젝트 참조.
비스칼라 출력 반환.
선택적 매개 변수¶
LANGUAGE SQL
식을 작성하는 데 사용된 언어를 지정합니다.
지원되는 유일한 언어는 SQL입니다.
COMMENT = 'string_literal'
DMF에 대한 설명입니다.
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
CREATE DATA METRIC FUNCTION |
스키마 |
이 권한으로만 스키마에서 데이터 메트릭 함수만 생성할 수 있습니다. SQL 또는 Java UDF와 같은 사용자 지정 함수를 생성할 수 있도록 하려면 역할에 CREATE FUNCTION 권한이 있어야 합니다. |
스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
기존 데이터 메트릭 함수를 업데이트하고 함수의 현재 정의를 확인해야 하는 경우 DESCRIBE FUNCTION (DMF) 명령을 실행하거나 GET_DDL 함수를 호출합니다.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예제: NULL 외 값 계산¶
테이블의 처음 세 열을 평가할 때 COUNT 함수를 호출하여 NULL 값을 포함하지 않는 행의 총 개수를 반환하는 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를 생성하려고 할 수 있습니다. 대표적인 예로, 외래 키 제약 조건으로 지정된 이름이 sp_id
인 공통 열이 있는 두 테이블 salespeople
및 salesorders
를 생각해 보겠습니다.
외래 키 참조가 포함된 행의 수를 식별하는 DMF를 생성합니다. WHERE 절은 salespeople
테이블에서 영업 사원의 식별자가 포함된 sp_id
열을 지정합니다.
CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.foreign_key_sales( arg_t TABLE (arg_c INT)) RETURNS NUMBER AS 'SELECT COUNT(*) FROM arg_t WHERE arg_c IN (SELECT sp_id FROM salespeople)';
DMF를 수동으로 호출하고 salesorders
테이블에서 sp_id
열을 지정합니다.
SELECT governance.dmfs.foreign_key_sales(SELECT sp_id FROM salesorders);
출력은 sp_id
열의 값이 salespeople
테이블의 sp_id
열에 있는 값의 결과인 salesorder
테이블의 행 수를 반환합니다.