Snowpark 프로젝트 정의 만들기

snowflake.yml 파일에는 Snowpark 프로젝트에 대한 함수와 프로시저 선언이 포함되어 있습니다.

참고

현재 Snowpark 프로젝트 정의 파일의 이름은 snowflake.yml 로 명명되어야 합니다.

다음 스니펫은 두 개의 함수와 두 개의 프로시저를 포함하는 Snowpark 프로젝트 정의 파일의 샘플을 보여줍니다. hello_function 함수는 Snowpark의 외부 함수를 사용합니다.

definition_version: '2'

mixins:
  snowpark_shared:
    artifacts:
      - dest: my_snowpark_project
        src: app/
    stage: dev_deployment

entities:

  hello_function:
    type: function
    identifier:
      name: hello_function
    handler: functions.hello_function
    signature:
      - name: name
        type: string
    returns: string
    external_access_integrations:
      - my_external_access
    secrets:
        cred: my_cred_name
    meta:
      use_mixins:
        - snowpark_shared

  hello_procedure:
    type: procedure
    identifier:
      name: hello_procedure
    handler: procedures.hello_procedure
    signature:
      - name: name
        type: string
    returns: string
    meta:
      use_mixins:
        - snowpark_shared

  test_procedure:
    type: procedure
    identifier:
      name: test_procedure
    handler: procedures.test_procedure
    signature: ''
    returns: string
    meta:
      use_mixins:
        - snowpark_shared
Copy

조심

프로젝트 디렉터리 내의 파일은 Snowflake CLI 에 의해 처리되며 다른 snow snowpark 명령을 실행할 때 Snowflake에 업로드될 수 있습니다. 프로젝트 디렉터리의 파일에 민감한 정보를 포함하는 경우에는 주의해야 합니다.

함수 및 프로시저 오브젝트 속성

다음 테이블에서는 함수와 프로시저에서 사용하는 속성을 설명합니다.

함수 및 프로시저 오브젝트 속성

속성

정의

식별자

선택 사항, 문자열

엔터티에 대한 선택적 Snowflake 식별자입니다. 값은 다음 형식일 수 있습니다.

  • 문자열 식별자 텍스트

    identifier: my-snowpark-id
    
    Copy

    따옴표로 묶지 않은 식별자와 따옴표로 묶은 식별자가 모두 지원됩니다. 따옴표로 묶인 식별자를 사용하려면 YAML 값에 따옴표(예: ’”My Snowpark Function”’)를 포함합니다.

  • 오브젝트

    identifier:
      name: my-snowpark-id
      schema: my-schema # optional
      database: my-db # optional
    
    Copy

    참고

    schema 또는 database 를 지정하고 name 속성에 정규화된 이름(예: mydb.schema1.my-app)을 사용하면 오류가 발생합니다.

유형

선택 사항, 문자열

반드시 function 또는 procedure 중 하나여야 합니다.

artifact_repository

선택 사항, 문자열

아티팩트 리포지토리의 이름입니다. Snowflake에는 Snowpark UDF 및 프로시저 내에서 PyPI 패키지를 연결하고 설치하는 데 사용하는 snowflake.snowpark.pypi_shared_repository 라는 기본 아티팩트 리포지토리가 있습니다. 자세한 내용은 아티팩트 리포지토리 개요 섹션을 참조하십시오.

artifact_repositorypackages 매개 변수를 사용하면 다음과 유사하게 anaconda가 아닌 패키지를 사용할 수 있습니다.

  • 프로젝트의 app.py 파일에서 다음과 같은 함수를 정의할 수 있습니다.

    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import RandomForestClassifier
    
    def udf():
      X, y = load_iris(return_X_y=True)
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
    
      model = RandomForestClassifier()
      model.fit(X_train, y_train)
      return model.score(X_test, y_test)
    
    Copy
  • snowflake.yml 파일에서 다음과 같이 정의합니다.

    test_function:
      type: "function"
      handler: "app.udf"
      identifier:
        name: "udf"
      stage: "dev_deployment"
      signature: ""
      returns: float
      artifact_repository: snowflake.snowpark.pypi_shared_repository
        - 'scikit-learn'
      artifacts:
        - "app.py"
    
    Copy

특정 아키텍처에 종속성이 있는 패키지의 경우 다음과 같이 resource_constraint 매개 변수에서 정의할 수 있습니다.

test_function:
  type: "function"
  handler: "app.udf"
  identifier:
    name: "udf"
  stage: "dev_deployment"
  signature: ""
  returns: float
  artifact_repository: snowflake.snowpark.pypi_shared_repository
    - 'scikit-learn'
  artifacts:
    - "app.py"
  resource_constraint:
    architecture: 'x86'
Copy

자세한 내용은 x86 전용으로 빌드된 패키지 섹션을 참조하십시오.

artifact_repository_packages

선택 사항, 문자열

참고

이 속성은 packages 속성으로 인해 사용이 중단되었습니다.

packages

선택 사항, 문자열

artifact_repository에서 설치할 패키지의 목록입니다. 예:

artifact_repository: snowflake.snowpark.pypi_shared_repository
packages:

  - Faker
  - rich
  - pytest
Copy

아티팩트

필수, 문자열 시퀀스

배포 루트에 추가할 파일 소스 및 대상 쌍 목록입니다. 다음 아티팩트 속성을 사용할 수 있습니다.

  • src: 코드 소스 파일 또는 파일의 경로입니다.

  • dest: 아티팩트를 배포할 디렉터리의 경로입니다.

    디렉터리를 참조하는 대상 경로는 / 로 끝나야 합니다. GLOB 패턴의 대상이 / 로 끝나지 않으면 오류가 발생합니다. 생략하면, dest 는 기본적으로 src 와 동일한 문자열로 설정됩니다.

    참고

    Snowpark snowflake.yml 파일에서 glob 패턴을 사용하려면 ENABLE_SNOWPARK_GLOB_SUPPORT 기능 플래그를 활성화해야 합니다.

    dict 대신 각 항목에 대한 문자열을 전달할 수도 있으며, 이 경우 해당 값은 srcdest 로 모두 처리됩니다.

src 가 1개의 파일(GLOB가 아닌)만 참조하는 경우, dest 는 대상 <경로> 또는 <경로/이름> 을 참조할 수 있습니다.

dict 대신 각 항목에 대한 문자열을 전달할 수도 있으며, 이 경우 해당 값은 srcdest 로 모두 처리됩니다.

핸들러

필수, 문자열

snowpark.src 에 정의된 모듈 내부의 오브젝트에 대한 함수 또는 프로시저의 구현입니다. 예를 들어, functions.hello_function<src>/functions.py 파일의 hello_function 함수를 참조합니다.

반환

필수, 문자열

결과의 SQL 유형입니다. 사용 가능한 유형 의 목록 확인합니다.

서명

필수, 시퀀스

signature 매개 변수는 오브젝트에 전달되는 연속된 인자를 설명합니다. 각각의 이름과 유형을 지정해야 합니다. 예:

signature:
  - name: "first_argument"
    type: int
  - name: "second_argument"
    default: "default value"
    type: string
Copy

함수나 프로시저에 인자를 받지 않는 경우 이 값을 빈 문자열(signature: "")로 설정합니다.

사용 가능한 유형 열의 SQL 유형 을 확인합니다. 명명된 인자와 선택적 인자의 구문에 대해 자세히 알아보려면 선택적 인자가 있는 UDF 호출하기 섹션을 참조하십시오.

런타임

선택 사항, 문자열

프로시저나 함수를 실행할 때 사용할 Python 버전입니다. 기본값: “3.9”.

external_access_integrations

선택 사항, 문자열 시퀀스

이 절차의 핸들러 코드가 외부 네트워크에 액세스하는 데 필요한 외부 액세스 통합 의 이름입니다. 자세한 내용은 CREATE PROCEDURE 의 EXTERNAL_ACCESS_INTEGRATIONS 매개 변수 를 참조하십시오.

시크릿

선택 사항, 사전

처리기 코드의 시크릿에서 정보를 검색할 때 변수를 사용하여 시크릿을 참조할 수 있도록 시크릿 이름을 변수에 할당합니다. 자세한 내용은 CREATE PROCEDURE의 SECRETS 매개 변수 섹션을 참조하세요.

가져오기

선택 사항, 문자열 시퀀스

가져올 이전에 업로드한 파일의 스테이지와 경로입니다. 자세한 내용은 CREATE PROCEDURE의 IMPORT 매개 변수 섹션을 참조하세요.

execute_as_caller

선택 사항, bool

프로시저에만 사용 가능 프로시저가 소유자(사용자)의 권한으로 실행되는지, 아니면 호출자의 권한으로 실행되는지 확인합니다. 기본값: False(소유자 권한).