CREATE DATA METRIC FUNCTION

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

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

이 명령은 다음 변형을 지원합니다.

참고 항목:

DMF 명령 참조, CREATE OR ALTER <오브젝트>

구문

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

베리언트 구문

CREATE OR ALTER DATA METRIC FUNCTION

아직 존재하지 않는 경우 새 데이터 지표 함수를 만들거나 기존 데이터 지표 함수를 문에 정의된 함수로 변환합니다. CREATE OR ALTER DATAMETRICFUNCTION 문은 CREATE DATAMETRICFUNCTION 문의 구문 규칙을 따르며 ALTER FUNCTION (DMF) 문과 제한 사항이 동일합니다.

CREATE OR REPLACE DATA METRIC FUNCTION 명령과 달리, CREATE OR ALTER 명령은 오브젝트를 삭제하거나 다시 만들지 않고 업데이트합니다.

지원되는 함수 변경에는 COMMENT 속성에 대한 변경이 포함됩니다.

자세한 내용은 CREATE OR ALTER DATA METRIC FUNCTION 사용법 노트 섹션을 참조하십시오.

CREATE [ OR ALTER ] DATA METRIC FUNCTION ...
Copy

필수 매개 변수

name

DMF의 식별자로, 스키마에 고유한 식별자여야 합니다.

또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예: "My object")로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

( 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 식입니다. 식은 결정적이어야 하며 스칼라 값을 반환해야 합니다. 식은 WITH 절이나 WHERE 절 등을 사용하여 다른 테이블 오브젝트를 참조할 수 있습니다.

expression 주위의 구분 기호는 작은따옴표 또는 한 쌍의 달러 기호일 수 있습니다. $$ 를 구분 기호로 사용하면 작은따옴표가 포함된 식을 더 쉽게 작성할 수 있습니다.

expression 의 구분 기호가 작은따옴표인 경우 expression 내의 모든 작은따옴표(예: 문자열 리터럴)는 반드시 작은따옴표로 이스케이프 처리해야 합니다.

expression 은 다음을 지원하지 않습니다.

  • 비결정적 함수 사용(예: CURRENT_TIME).

  • UDF 또는 UDTF에 종속된 오브젝트 참조.

  • 비스칼라 출력 반환.

선택적 매개 변수

SECURE

데이터 지표 함수가 보안되도록 지정합니다. 자세한 내용은 Secure UDF와 저장 프로시저로 민감한 정보 보호하기 섹션을 참조하십시오.

LANGUAGE SQL

식을 작성하는 데 사용된 언어를 지정합니다.

지원되는 유일한 언어는 SQL입니다.

COMMENT = 'string_literal'

DMF에 대한 설명입니다.

액세스 제어 요구 사항

이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.

권한

오브젝트

참고

CREATE DATA METRIC FUNCTION

스키마

이 권한으로만 스키마에서 데이터 메트릭 함수만 생성할 수 있습니다.

SQL 또는 Java UDF와 같은 사용자 지정 함수를 생성할 수 있도록 하려면 역할에 CREATE FUNCTION 권한이 있어야 합니다.

스키마의 모든 오브젝트에 대해 작업을 수행하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한.

지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.

보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.

일반적인 사용법 노트

  • 기존 데이터 메트릭 함수를 업데이트하고 함수의 현재 정의를 확인해야 하는 경우 DESCRIBE FUNCTION (DMF) 명령을 실행하거나 GET_DDL 함수를 호출합니다.

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

CREATE OR ALTER DATA METRIC FUNCTION 사용법 노트

  • 다음과 같은 변경은 지원되지 않습니다.

    • 데이터 지표 함수의 본문 변경하기.

    • 데이터 지표 및 입력 테이블 정의 변경하기.

예: 단일 테이블 인자

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

예: 여러 테이블 인자

한 테이블의 열 값이 다른 테이블의 열에 대응하는 값이 없는 기록의 수를 반환합니다.

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

이 DMF 를 사용하여 참조 무결성을 검증하는 예제는 예제: 여러 테이블 인자를 사용하여 참조 검사 성능 수행하기 섹션을 참조하십시오.

예: CREATE OR ALTER DATA METRIC FUNCTION 명령을 사용하여 데이터 지표 함수 변경하기

위 예제에서 생성한 단일 테이블 데이터 메트릭 함수를 변경하여 보안 및 설명을 설정합니다.

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