코드에 종속성을 사용할 수 있도록 만들기

사용자 정의 함수(UDF) 또는 저장 프로시저가 UDF 또는 프로시저 외부에 있는 코드나 파일에 종속되는 경우 해당 종속성을 스테이지에 업로드한 다음 그 위치에서 참조하여 UDF 또는 프로시저에서 종속성을 사용 가능하도록 할 수 있습니다.

예를 들어 UDF 또는 프로시저가 다음에 액세스하도록 할 수 있습니다.

  • 모듈의 Python 처리기 코드.

  • JAR로 컴파일되고 패키징되는 Java 또는 Scala 처리기 코드.

  • Java, Python 또는 Scala로 작성된 종속성 코드.

  • 처리기 코드에서 읽을 수 있고 UDF를 생성할 때 그 이름과 위치를 알 수 있는 파일. 예를 들어 이는 구성 파일과 함께 사용 시 유용할 수 있습니다.

참고

CREATE FUNCTION 또는 CREATE PROCEDURE 의 PACKAGES 절을 사용하여 Snowflake에 포함된 라이브러리를 가져올 수도 있습니다.

이 항목의 내용:

상위 수준 단계

함수 또는 프로시저에서 종속성을 사용할 수 있도록 하려면 다음 단계를 따르십시오.

  1. 처리기가 사용할 수 있는 스테이지를 선택하거나 만듭니다.

  2. 종속성 을(를) 스테이지에 업로드합니다.

  3. 함수 또는 프로시저를 만들 때 IMPORTS로 종속성을 참조하십시오.

종속성 파일에 대한 스테이지 선택 또는 생성하기

함수 또는 프로시저에서 종속성 파일을 사용할 수 있도록 하려면 런타임에 종속성 파일에 도달할 수 있는 스테이지에 종속성 파일을 복사해야 합니다. 함수 또는 프로시저의 소유자는 스테이지에 대한 READ 권한 이 있어야 합니다.

일반적으로 PUT 명령을 사용하여 명명된 내부 스테이지로 종속성을 업로드합니다. 스테이지 생성에 대한 자세한 내용은 CREATE STAGE 섹션을 참조하십시오.

참고

Snowflake GUI를 통해 PUT 명령을 실행할 수 없으며, SnowSQL을 사용해 PUT 을 실행할 수 있습니다. .jar 파일을 스테이지에 복사하는 예제 PUT 명령은 이 항목의 종속성을 스테이지에 업로드하기 섹션을 참조하십시오.

종속성에 대해 다음 종류의 스테이지 중 하나를 선택하거나 생성합니다.

  • 사용자 또는 명명된 내부 스테이지.

    PUT 명령을 사용하여 파일을 업로드하려는 계획인 경우, 명명된 내부 스테이지를 사용합니다. 내부 스테이지 유형 선택에 대한 자세한 내용은 로컬 파일을 위한 내부 스테이지 선택하기 섹션을 참조하십시오.

  • 외부 스테이지.

    외부 스테이지는 CREATE STAGE 에 설명된 대로 외부 저장소 서비스와 연결된 위치입니다. PUT 명령은 외부 스테이지에 파일을 업로드하는 것을 지원하지 않습니다.

기존 스테이지를 사용하거나 CREATE STAGE 를 실행하여 새 스테이지를 생성할 수 있습니다. 예를 들어 다음 명령은 mystage 라는 새 내부 스테이지를 만듭니다.

CREATE STAGE mystage;
Copy

참고

Snowflake는 현재 테이블 스테이지를 사용하여 처리기 코드를 저장하는 기능을 지원하지 않습니다.

종속성을 스테이지에 업로드하기

저장 프로시저에 필요한 파일을 스테이지에 업로드합니다.

외부 스테이지를 사용 중인 경우 해당 저장소 서비스의 파일 업로드 수단을 사용하십시오. 내부 스테이지를 사용 중인 경우 PUT 명령을 사용하여 로컬 드라이브에서 스테이지로 파일을 복사할 수 있습니다. 명령 참조는 PUT 섹션을 참조하십시오. PUT으로 파일을 스테이징하는 자세한 방법은 로컬 파일 시스템에서 데이터 파일 스테이징하기 섹션을 참조하십시오.

PUT 명령을 사용하여 파일을 스테이지에 업로드합니다.

다음 예제의 코드는 myjar.jarmystage 라는 스테이지에 업로드하여 같은 이름의 기존 파일이 있는 경우 그 파일을 덮어씁니다.

PUT file:///Users/MyUserName/MyCompiledJavaCode.jar
  @mystage
  AUTO_COMPRESS = FALSE
  OVERWRITE = TRUE
  ;
Copy

참고

AUTO_COMPRESS = FALSE 를 생략하면 PUT 명령이 자동으로 파일을 압축합니다. 스테이지의 압축 파일 이름은 myjar.jar.gz 가 됩니다. 나중에 CREATE PROCEDURE 와 같은 명령을 실행할 때 명령의 IMPORTS 절에서 이 .gz 확장명을 가진 파일 이름을 지정해야 합니다.

참고

PUT 명령은 외부 스테이지에 파일을 업로드하는 것을 지원하지 않습니다. 외부 스테이지로 파일을 업로드하려면 클라우드 서비스에서 제공하는 유틸리티를 사용하십시오.

종속성 참조하기

생성 중인 함수 또는 프로시저가 종속성의 위치를 인식하도록 하려면 함수 또는 프로시저를 생성하는 데 사용하는 SQL의 IMPORTS 절에서 종속성의 위치를 지정하십시오.

처리기가 종속된 타사 라이브러리가 있을 때와 같이, 여러 종속 파일이 있는 경우에는 모든 종속 파일의 스테이지 위치와 파일 경로 및 이름을 IMPORTS 절의 값으로 지정할 수 있습니다.

다음 예제의 코드는 MYPROC 라는 프로시저를 생성하여 (mystage 스테이지에서) MyCompiledJavaCode.jar 파일이 프로시저의 실행 환경에 포함되어야 함을 지정합니다. 이 경우 MyCompiledJavaCode.jar 에는 MyJavaClass.run 에 대해 컴파일된 코드인 프로시저의 처리기가 포함됩니다.

CREATE OR REPLACE PROCEDURE MYPROC(value INT, fromTable STRING, toTable STRING, count INT)
  RETURNS INT
  LANGUAGE JAVA
  RUNTIME_VERSION = '11'
  PACKAGES = ('com.snowflake:snowpark:latest')
  IMPORTS = ('@mystage/MyCompiledJavaCode.jar')
  HANDLER = 'MyJavaClass.run';
Copy