CREATE DATA METRIC FUNCTION

현재 또는 지정된 스키마에 새 데이터 메트릭 함수(DMF)를 생성하거나 기존 데이터 메트릭 함수를 바꿉니다.

DMF를 생성한 후 ALTER TABLE … ALTER COLUMN 명령을 사용하여 테이블 열에 적용하거나 ALTER VIEW 명령을 사용하여 뷰 열에 적용합니다.

참고 항목:

DMF 명령 참조

이 항목의 내용:

구문

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>'
Copy

필수 매개 변수

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
$$;
Copy

예제: 외래 키 참조

DMF를 할당하는 테이블이 아닌 다른 테이블을 참조하는 데이터 메트릭 함수를 생성할 수 있습니다. 예를 들어, 외래 키 제약 조건 으로 인한 행 수를 측정하기 위해 DMF를 생성하려고 할 수 있습니다. 대표적인 예로, 외래 키 제약 조건으로 지정된 이름이 sp_id 인 공통 열이 있는 두 테이블 salespeoplesalesorders 를 생각해 보겠습니다.

외래 키 참조가 포함된 행의 수를 식별하는 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)';
Copy

DMF를 수동으로 호출하고 salesorders 테이블에서 sp_id 열을 지정합니다.

SELECT governance.dmfs.foreign_key_sales(SELECT sp_id FROM salesorders);
Copy

출력은 sp_id 열의 값이 salespeople 테이블의 sp_id 열에 있는 값의 결과인 salesorder 테이블의 행 수를 반환합니다.