UDF 만들기

논리에 사용할 처리기를 포함하여 함수의 속성을 지정하는 CREATE FUNCTION 명령으로 사용자 정의 함수(UDF) 또는 사용자 정의 테이블 함수(UDTF)를 생성합니다.

이 항목에는 UDF를 만드는 단계가 나열되어 있습니다. 예를 보려면 CREATE FUNCTION 참조 를 참조하십시오.

Using the CREATE FUNCTION Statement to Associate the Handler Method With the UDF Name

다음 단계에 따라 UDF를 만듭니다.

  1. UDF가 호출될 때 실행되는 처리기 코드를 작성합니다.

    지원되는 처리기 언어 중 하나를 사용할 수 있습니다. 자세한 내용은 지원되는 언어 섹션을 참조하십시오.

  2. 처리기 코드를 CREATE FUNCTION SQL 문과 인라인으로 유지할지, 아니면 스테이지에서 참조할지 선택합니다.

    각각 나름의 장점이 있습니다. 자세한 내용은 처리기 코드를 인라인 또는 스테이지에 유지하기 섹션을 참조하십시오.

  3. 함수의 속성을 지정하여 SQL에서 CREATE FUNCTION 문을 실행합니다.

    다음 예제의 코드는 인라인 처리기 HandlerClass.handlerMethod 를 사용하는 function_name 라는 UDF를 생성합니다.

    create function function_name(x integer, y integer)
      returns integer
      language java
      handler='HandlerClass.handlerMethod'
      target_path='@~/HandlerCode.jar'
      as
      $$
          class HandlerClass {
              public static int handlerMethod(int x, int y) {
                return x + y;
              }
          }
      $$;
    
    Copy

    다음은 함수를 만들 때 필요하거나 일반적으로 사용되는 몇 가지 속성에 대한 설명입니다.

    • 함수 이름.

      UDF 이름은 처리기의 이름과 일치할 필요가 없습니다. CREATE FUNCTION 문은 UDF 이름을 처리기와 연관시킵니다.

      이름 제약 조건과 규칙에 대한 자세한 내용은 프로시저와 UDF의 명명 및 오버로딩 섹션을 참조하십시오.

    • 함수 인자(있는 경우).

      UDF 및 저장 프로시저에 대한 인자 정의하기 섹션을 참조하십시오.

    • RETURNS 절이 있는 반환 유형입니다.

      스칼라 반환 값의 경우 RETURNS 절은 단일 반환 유형을 지정하고, 테이블 형식 반환 값의 경우 RETURNS는 테이블 형식 반환 값에서 열 유형을 지정하는 TABLE 키워드를 지정합니다.

      Snowflake가 SQL 데이터 타입을 처리기 데이터 타입에 매핑하는 방법에 대한 자세한 내용은 프로시저와 UDF의 명명 및 오버로딩 섹션을 참조하십시오.

    • HANDLER 절이 있는 처리기 이름입니다.

      필요한 경우 이는 UDF가 호출될 때 실행되는 코드를 포함하는 클래스 또는 메서드의 이름입니다. Java와 Python으로 작성된 처리기에 대해서만 처리기 이름을 지정해야 합니다. JavaScript 및 SQL 처리기의 경우 인라인으로 지정된 모든 코드가 처리기로 실행됩니다.

      다음 표에는 처리기 언어와 함수 유형에 따라 HANDLER 절의 값 형식을 설명합니다.

      처리기 언어

      UDF

      UDTF

      Java

      클래스 및 메서드 이름.

      예: MyClass.myMethod

      클래스 이름만. 처리기 메서드 이름은 필요한 인터페이스에 의해 미리 결정됩니다.

      JavaScript

      없습니다.

      없습니다.

      Python

      클래스가 사용되는 경우 클래스 및 메서드 이름이며, 그렇지 않으면 함수 이름.

      예: module.my_function 또는 my_function

      클래스 이름만. 처리기 메서드 이름은 필요한 인터페이스에 의해 미리 결정됩니다.

      SQL

      없습니다.

      없습니다.

    • IMPORTS 또는 PACKAGES 절을 사용하여 처리기에 필요한 종속 항목(있는 경우).

      처리기에서 종속 항목을 사용할 수 있도록 만드는 방법에 대한 자세한 내용은 코드에 종속성을 사용할 수 있도록 만들기 섹션을 참조하십시오.

    • RUNTIME_VERSION 절이 있는 처리기 언어 런타임.

      처리기 언어가 Java 또는 Python인 경우 RUNTIME_VERSION 절을 사용하여 지원되는 런타임 버전 중 어떤 버전을 사용할지 지정합니다. 이 절을 생략하면 Snowflake가 기본값을 사용하게 되며 이는 나중에 변경할 수 있습니다.