Python UDF 소개

Python에서 UDF(사용자 정의 함수)의 처리기를 작성할 수 있습니다. 이 섹션의 항목에서는 Python 처리기를 설계하고 작성하는 방법을 설명합니다. 예제도 찾아볼 수 있습니다.

UDF 처리기를 작성할 수 있는 언어 목록을 포함하여, UDF에 대한 소개는 사용자 정의 함수 개요 섹션을 참조하십시오.

처리기가 있으면 SQL로 UDF를 생성합니다. SQL을 사용하여 UDF을 만들거나 호출하는 방법에 대한 자세한 내용은 UDF 만들기 또는 UDF 호출하기 섹션을 참조하십시오.

Snowflake는 현재 다음 Python 버전에서 UDF 작성을 지원합니다.

  • 3.8

  • 3.9

  • 3.10

참고

Python UDF 처리기와 관련된 제한 사항은 Python UDF 제한 사항 섹션을 참조하십시오.

이 항목의 내용:

Python 처리기 작동 방식

사용자는 UDF를 호출할 때 UDF의 이름과 인자를 Snowflake에 전달합니다. Snowflake는 UDF의 논리를 실행하기 위해 관련 처리기 코드(인자가 있는 경우에는 인자도 포함)를 호출합니다. 그런 다음 핸들러 메서드는 출력을 Snowflake로 반환하고 Snowflake는 이를 다시 클라이언트로 전달합니다.

UDF에 전달된 각 행에 대해 UDF는 스칼라(즉, 단일) 값을 반환하거나, 테이블 함수로 정의된 경우 행 세트를 반환합니다.

Python UDF는 새 코드와 기존 패키지에 대한 호출을 둘 다 포함할 수 있으므로 유연성과 코드 재사용을 모두 허용합니다. 예를 들어, 이미 Python에 데이터 분석 코드가 있는 경우, 이를 Python UDF 처리기에 통합할 수 있습니다.

다음 예제의 코드는 처리기 메서드 addone_py 를 사용하여 addone 이라는 UDF를 생성합니다. Snowflake는 SQL-Python 데이터 타입 매핑 에 설명된 매핑에 따라 Python 인자 및 반환 유형을 SQL로 변환하거나 그 반대로 변환합니다.

create or replace function addone(i int)
returns int
language python
runtime_version = '3.8'
handler = 'addone_py'
as
$$
def addone_py(i):
  return i+1
$$;
Copy

설계 고려 사항

유용한 처리기를 설계하려면 다음 사항을 염두에 두십시오.

처리기 코딩

기본 사항부터 자세한 예제까지, 다음 항목에서는 UDF 처리기를 Python으로 작성하는 방법을 설명합니다.

  • Python 모듈 정의. Python 모듈에서 UDF의 논리를 작성합니다. Snowflake가 코드와 상호 작용하는 방식에 대한 자세한 내용은 모듈 설계하기 섹션을 참조하십시오.

  • 오류 처리. Snowflake가 처리기에서 생성되는 오류를 표시하는 방법에 대한 자세한 내용은 오류 처리 섹션을 참조하십시오.

  • 테이블 형식 반환 값. UDF에서 스칼라(단일) 값뿐 아니라 테이블 형식 값도 반환할 수 있습니다. 테이블 형식 값을 반환하는 처리기를 작성하는 방법에 대한 자세한 내용은 Python으로 UDTF 작성하기 섹션을 참조하십시오.

  • 로깅 및 이벤트 추적. 처리기 코드가 실행될 때 로그 및 추적 데이터를 캡처하는 방법에 대한 자세한 내용은 로깅 및 추적 개요 섹션을 참조하십시오.

  • 종속성. 스테이지에 종속성을 업로드하여 런타임에 코드에서 사용 가능하도록 만들 수 있습니다. 자세한 내용은 코드에 종속성을 사용할 수 있도록 만들기 섹션을 참조하십시오.

  • 코드 예제 Python의 다양한 처리기 예제는 Python UDF 처리기 예 섹션을 참조하십시오.