저장 프로시저에 대한 Python 처리기 작성하기¶
저장 프로시저가 호출될 때 실행되는 처리기로 Python 코드를 작성할 수 있습니다. 이 섹션에서는 처리기의 설계에 대해 설명합니다.
여러 가지 방법으로 처리기 코드에서 저장 프로시저를 만들 수 있습니다.
프로시저를 생성하는 SQL 문과 함께 코드를 인라인 상태로 포함합니다. 처리기 코드를 인라인 또는 스테이지에 유지하기 섹션을 참조하십시오.
코드를 스테이지에 복사하고 프로시저를 생성할 때 그 스테이지에서 코드를 참조합니다. 처리기 코드를 인라인 또는 스테이지에 유지하기 섹션을 참조하십시오.
Python 워크시트에 코드를 작성하고 워크시트 내용을 저장 프로시저에 배포합니다. Python 워크시트에서 저장 프로시저 만들기 섹션을 참조하십시오.
저장 프로시저 작성 계획하기¶
저장 프로시저는 Snowflake 내부에서 실행되므로 그 점을 염두에 두고 작성하는 코드를 계획해야 합니다.
사용되는 메모리양을 제한합니다. Snowflake는 필요한 메모리 양 측면에서 메서드에 제한을 둡니다. 지침은 Snowflake에서 적용한 제약 조건 내에서 유지되는 처리기 설계하기 섹션을 참조하십시오.
처리기 메서드 또는 함수가 스레드로부터 안전한지 확인하십시오.
규칙 및 보안 제한 사항을 따르십시오. UDF 및 프로시저의 보안 모범 사례 섹션을 참조하십시오.
저장 프로시저를 호출자의 권한으로 실행할지 소유자의 권한으로 실행할지 여부를 결정합니다.
저장 프로시저를 실행하는 데 사용되는 snowflake-snowpark-python 버전을 고려하십시오. 저장 프로시저 출시 프로세스의 제한 사항으로 인해, Python 저장 프로시저 환경에서 사용할 수 있는 snowflake-snowpark-python 라이브러리는 보통 공개적으로 출시된 버전보다 한 버전 뒤처진 버전입니다. 다음 SQL을 사용하여 사용 가능한 최신 버전을 찾습니다.
SELECT * FROM information_schema.packages WHERE package_name = 'snowflake-snowpark-python' ORDER BY version DESC;
메서드 또는 함수 작성하기¶
저장 프로시저에 대한 메서드 또는 함수를 작성할 때 다음 사항에 유의하십시오.
Snowpark
Session
오브젝트를 메서드 또는 함수의 첫 번째 인자로 지정합니다. 저장 프로시저를 호출하면 Snowflake는 자동으로Session
오브젝트를 생성하여 저장 프로시저에 전달합니다. (Session
Session 오브젝트를 직접 만들 수는 없습니다.)나머지 인자와 반환 값의 경우, Snowflake 데이터 타입 에 해당하는 Python 타입을 사용합니다. Snowflake는 매개 변수 및 반환 형식에 대한 SQL-Python 데이터 타입 매핑 에 나열된 Python 데이터 타입을 지원합니다.
프로시저의 핸들러 내에서 비동기 하위 작업을 실행하는 경우(예: DataFrame.collect_nowait 를 사용하는 경우) “실행 후 무시”는 지원되지 않습니다.
즉, 상위 프로시저 작업이 완료될 때 핸들러가 아직 실행 중인 하위 쿼리를 발행하면 하위 작업은 자동으로 취소됩니다.
오류 처리¶
일반적인 Python 예외 처리 기법을 사용하여 프로시저 내에서 오류를 포착할 수 있습니다.
메서드 내에서 포착되지 않은 예외가 발생하면 Snowflake는 예외에 대한 스택 추적을 포함하는 오류를 발생시킵니다. 처리되지 않은 예외 로깅 이 활성화되면 Snowflake는 이벤트 테이블에 처리되지 않은 예외에 대한 데이터를 기록합니다.
코드에 종속성을 사용할 수 있도록 만들기¶
처리기 코드가 처리기 자체 외부에 정의된 코드(예: 모듈에 정의된 코드) 또는 리소스 파일에 의존하는 경우 이러한 종속성을 스테이지에 업로드하여 코드에서 사용 가능하게 만들 수 있습니다. 코드에 종속성을 사용할 수 있도록 만들기 섹션을 참조하시고, Python 워크시트에 대해서는 스테이지의 Python 파일을 워크시트에 추가하기 섹션을 참조하십시오.
SQL을 사용하여 저장 프로시저를 만드는 경우 CREATE PROCEDURE 문 을 작성할 때 IMPORTS 절을 사용하여 종속성 파일을 가리킵니다.