2023년 Python용 Snowpark 라이브러리 릴리스 정보

이 문서에는 Snowpark Library for Python 에 대한 릴리스 정보가 있는데, 해당되는 경우 다음을 포함합니다.

  • 동작 변경 사항

  • 새로운 기능

  • 고객이 직면한 버그 수정

Snowflake는 Snowpark Library for Python 업데이트에 의미 체계 버전 관리를 사용합니다.

버전 1.11.1(2023-12-07)

Snowpark 라이브러리 버전 1.11.1에는 몇 가지 새로운 기능이 도입되었습니다.

새로운 기능

  • snowflake-connector-python 에서 전체 기본 예외를 저장하도록 conn_error 속성을 SnowflakeSQLException 에 추가했습니다.

  • Dataframe.group_by(...).pivot(...) 패턴으로 pivot 에 액세스하도록 RelationalGroupedDataframe.pivot() 에 대한 지원을 추가했습니다.

  • Snowflake 계정에 연결하지 않고도 Snowpark Python DataFrames에서 로컬에 생성하고 작동할 수 있는 실험적 기능인 로컬 테스트 모드를 추가했습니다. 코드 변경 사항을 계정에 배포하기 전에 로컬 테스트 프레임워크를 사용하여 개발 시스템 또는 CI(지속적 통합) 파이프라인에서 로컬로 DataFrame 작업을 테스트할 수 있습니다.

  • snowflake.snowpark.functions 에서 새로운 arrays_to_object 함수에 대한 지원을 추가했습니다.

  • 벡터 데이터 타입을 위한 지원을 추가했습니다.

종속성 업데이트

  • cloudpickle==2.2.1 에서 작동하도록 cloudpickle 종속성을 증가시켰습니다.

  • snowflake-connector-python 을 버전 3.4.0 으로 업데이트했습니다.

버그 수정 사항

  • DataFrame 열 이름 인용 검사에서 이제 줄 바꿈 문자를 지원합니다.

  • df.write.save_as_table 을 수행할 때 session.read.with_metadata 에 의해 생성된 DataFrame이 일관되지 않은 테이블을 생성하는 버그를 수정했습니다.

버전 1.10.0(2023-11-03)

Snowpark 라이브러리 버전 1.10.0에는 몇 가지 새로운 기능이 도입되었습니다.

새로운 기능

  • DataFrame.to_local_iterator() 에서 대/소문자 구분 관리를 위한 지원 기능을 추가했습니다.

  • UDTFRegistration.register, UDTFRegistration.register_file, functions.pandas_udtf 에서 선택적 매개 변수 input_names 를 사용하여 벡터화된 UDTF의 입력 열 이름을 지정하기 위한 지원을 추가했습니다. 기본적으로 RelationalGroupedDataFrame.applyInPandas 는 현재 DataFrame 스키마에서 열 이름을 유추합니다.

  • SQL 예외로 인해 발생한 경우 SnowflakeSQLExceptionsql_error_coderaw_message 특성을 추가했습니다.

버그 수정 사항

  • Snowpark DataFrames를 Pandas DataFrames로 변환하면 19자리보다 많은 정수에 대한 정밀도가 손실되는 DataFrame.to_pandas() 의 버그를 수정했습니다.

  • 밑줄과 버전이 있는 프로젝트 이름이 포함된 요구 사항 지정자를 처리할 수 없는 session.add_packages 의 버그를 수정했습니다.

  • offset 이 사용되고 상위 DataFramelimit 를 사용할 때 DataFrame.limit() 의 버그를 수정했습니다. 이제 offset 은 상위 DataFrame의 limit 에 영향을 미치지 않습니다.

  • 유효하지 않은 열 이름 $1 로 인해 읽기 API에서 생성된 DataFrames가 Snowflake에 데이터를 저장할 수 없는 DataFrame.write.save_as_table 의 버그를 수정했습니다.

동작 변경 사항

  • date_format 의 동작을 변경했습니다.

    • format 인자가 선택 사항에서 필수 사항으로 변경되었습니다.

    • 반환된 결과가 날짜 오브젝트에서 날짜 형식의 문자열로 변경되었습니다.

  • 윈도우 함수 또는 시퀀스 종속 데이터 생성기(normal, zipf, uniform, seq1, seq2, seq4, seq8) 함수를 사용하면 쿼리 생성 시 정렬 및 필터 작업이 더 이상 평면화되지 않습니다.

버전 1.9.0(2023-10-16)

Snowpark 라이브러리 버전 1.9.0에는 몇 가지 새로운 기능이 도입되었습니다.

새로운 기능

  • Python 3.11 런타임 환경에 대한 지원을 추가했습니다.

  • ARRAYOBJECT 리터럴에 대해 PythonObjJSONEncoder JSON 직렬화 가능 오브젝트를 지원합니다.

종속성 업데이트

  • typing-extensions 의 종속성을 다시 추가했습니다.

버그 수정 사항

  • 임시 저장 프로시저, UDTF, UDF, UDAF에 대해 영구 스테이지 위치에서 가져오기가 무시되는 버그를 수정했습니다.

  • 테이블 쓰기에 삽입 권한이 필요하지 않은 DataFrameWriter.save_as_table 에 대해 CTAS(CREATE TABLE AS SELECT) 문을 사용하도록 되돌립니다.

버전 1.8.0(2023-09-14)

Snowpark 라이브러리 버전 1.8.0에는 몇 가지 새로운 기능이 도입되었습니다.

새로운 기능

  • UDF 등록 시 VOLATILEIMMUTABLE 키워드에 대한 지원을 추가했습니다.

  • DataFrame.save_as_table 을 사용하여 데이터 프레임을 저장할 때 클러스터링 키를 지정하기 위한 지원을 추가했습니다.

  • Session.create_dataframe 을 사용하여 데이터 프레임을 생성할 때 schema 에 대한 Iterable 오브젝트 입력을 허용합니다.

  • Session 오브젝트를 반환하는 DataFrame.session 속성을 추가했습니다.

  • 세션 ID를 나타내는 정수를 반환하는 Session.session_id 속성을 추가했습니다.

  • SnowflakeConnection 오브젝트를 반환하는 Session.connection 속성을 추가했습니다.

  • 구성 파일 또는 환경 변수에서 Snowpark 세션을 생성하기 위한 지원을 추가했습니다.

종속성 업데이트

  • snowflake-connector-python 을 3.2.0으로 업데이트했습니다.

버그 수정 사항

  • 호환되는 패키지 버전이 session.add_packages 에 추가된 경우에도 자동 패키지 업로드가 ValueError 를 발생시키는 버그를 수정했습니다.

  • register_from_file 사용 시 테이블 저장 프로시저가 올바르게 등록되지 않는 버그를 수정했습니다.

  • invalid_identifier 오류로 인해 데이터 프레임 조인이 실패하는 버그를 수정했습니다.

  • 반환된 복사본에 대해 DataFrame.copy 가 SQL 단순화 기능을 비활성화하는 버그를 수정했습니다.

  • session.sql() 에 매개 변수가 지정된 경우 session.sql().select() 가 실패하는 버그를 수정했습니다.

버전 1.7.0(2023-08-28)

Snowpark 라이브러리 버전 1.7.0에는 몇 가지 새로운 기능이 도입되었습니다.

동작 변경 사항

  • 매개 변수 is_permanent=False 로 저장 프로시저 UDF, UDTF, UDAF를 생성하면 stage_name 이 제공될 때도 임시 오브젝트가 생성됩니다. is_permanent 의 기본값은 False 인데, 그 이유는 영구 오브젝트에 대해 이 값을 명시적으로 True 로 설정하지 않으면 사용자가 동작의 변화를 알아차리게 되기 때문입니다.

  • types.StructField 는 이제 기본적으로 열 식별자를 따옴표로 묶습니다.

새로운 기능

  • 외부 액세스와의 통합을 허용하려고 Snowpark Python에서 UDF, UDTF 또는 저장 프로시저를 생성할 때 사용할 수 있는 매개 변수 external_access_integrationssecrets 를 추가했습니다.

  • snowflake.snowpark.functions 에서 새 함수 array_flattenflatten 을 위한 지원을 추가했습니다.

  • snowflake.snowpark.relational_grouped_dataframe 에서 apply_in_pandas 에 대한 지원을 추가했습니다.

  • Session.replicate_local_environment 를 통해 Snowflake에서 로컬 Python 환경을 복제하기 위한 지원을 추가했습니다.

버그 수정 사항

  • Null 허용 여부가 순서 또는 데이터 제공 시점에 영향을 받는 경우 session.create_dataframe 이 null 허용 열을 올바르게 설정하지 못하는 버그를 수정했습니다.

  • 테이블 함수의 출력 열이 DataFrame의 열과 겹칠 때 테이블 함수를 사용하면 DataFrame.select 가 열을 식별하여 별칭을 지정할 수 없는 버그를 수정했습니다.

버전 1.6.1(2023-08-02)

동작 변경 사항

  • DataFrameWriter.save_as_table 은 이제 사용자가 제공하는 스키마의 null 허용 필드 또는 사용자가 입력한 데이터를 기반으로 유추된 스키마를 따릅니다.

새로운 기능

  • snowflake.snowpark.functions 의 새 함수에 대해

    • array_sort

    • sort_array

    • array_min

    • array_max

    • explode_outer

  • Session.add_requirements 또는 Session.add_packages 를 통해 지정된 순수 Python 패키지를 위한 지원을 추가했습니다. 이제 Snowflake Anaconda 채널에 패키지가 없더라도 저장 프로시저와 UDF에서 사용할 수 있습니다.

  • 위에 언급된 순수 Python 패키지 기능에 대한 지원을 활성화하기 위해 Session 매개 변수 custom_packages_upload_enabledcustom_packages_force_upload_enabled 를 추가했습니다. 두 매개 변수 모두 기본값은 False 입니다.

  • Conda 환경 YAML 파일을 Session.add_requirements 에 전달하여 패키지 요구 사항을 지정하기 위한 지원을 추가했습니다.

  • 바인딩 변수가 포함된 다중 쿼리 데이터 프레임의 비동기 실행을 위한 지원을 추가했습니다.

  • DataFrame.rename 에서 여러 열의 이름을 바꾸기 위한 지원을 추가했습니다.

  • 기하학 데이터 타입을 위한 지원을 추가했습니다.

  • 저장 프로시저의 session.sql() 에서 params를 위한 지원을 추가했습니다.

  • UDAF(사용자 정의 집계 함수)를 위한 지원을 추가했습니다. 이 기능은 현재 비공개 미리 보기로 제공됩니다.

  • 벡터화된 UDTF(벡터화된 사용자 정의 테이블 함수)를 위한 지원을 추가했습니다. 이 기능은 현재 공개 미리 보기로 제공됩니다.

  • Snowflake 타임스탬프 베리언트(즉, TIMESTAMP_NTZ, TIMESTAMP_LTZ, TIMESTAMP_TZ)를 위한 지원을 추가했습니다.

    • TimestampType 생성자의 인자로 TimestampTimezone 을 추가했습니다.

    • UDF 등록 시 함수에 주석을 추가하기 위해 유형 힌트(NTZ, LTZ, TZ, Timestamp)를 추가했습니다.

개선 사항

  • 중복된 종속성 typing-extensions를 제거했습니다.

  • DataFrame.cache_result 는 이제 현재 데이터베이스와 스키마 아래에 정규화된 이름의 임시 테이블을 생성합니다.

버그 수정 사항

  • Pandas를 가져오기 전에 그에 대한 유형 검사가 발생하는 버그를 수정했습니다.

  • numpy.ufunc 에서 UDF를 생성할 때의 버그를 수정했습니다.

  • SQL 단순화 기능이 활성화된 경우 DataFrame.union 이 올바른 Selectable.schema_query 를 생성하지 못하는 버그를 수정했습니다.

종속성 업데이트

  • snowflake-connector-python 을 버전 3.0.4로 업데이트했습니다.

버전 1.5.1(2023-06-20)

새로운 기능과 업데이트

  • Python 3.10 런타임 환경에 대한 지원을 추가했습니다.

버전 1.5.0(2023-06-13)

동작 변경 사항

  • DataFrame.aggDataFrame.describe 와 같은 함수의 집계 결과가 인쇄되지 않는 문자를 더 이상 열 이름에서 제거하지 않습니다.

새로운 기능과 업데이트

  • Python 3.9 런타임 환경에 대한 지원을 추가했습니다.

  • snowflake.snowpark.functions 의 새 함수에 대해

  • array_generate_range

  • array_unique_agg

  • collect_set

  • sequence

  • TABLE 반환 유형으로 저장 프로시저를 등록하고 호출하기 위한 지원을 추가했습니다.

  • 열에서 저장할 수 있는 최대 문자 개수를 지정하도록 StringType() 에서 매개 변수 length를 위한 지원을 추가했습니다.

  • functions.get() 에 대해 별칭 functions.element_at() 을 추가했습니다.

  • functions.contains 에 대해 별칭 Column.contains 를 추가했습니다.

  • 실험적 기능 DataFrame.alias 를 추가했습니다.

  • DataFrameReader 를 사용하여 DataFrame 을 생성할 때 스테이지에서 메타데이터 열을 쿼리하기 위한 지원을 추가했습니다.

  • 기존 StructType 오브젝트에 더 많은 필드를 추가할 수 있도록 StructType.add 를 위한 지원을 추가했습니다.

  • 저장 프로시저 호출자 권한을 지정할 수 있도록 StoredProcedureRegistration.register_from_file() 에서 매개 변수 execute_as 를 위한 지원을 추가했습니다.

버그 수정 사항

  • SQL 단순화 도구가 활성화되었을 때 Dataframe.join_table_function 이 조인 테이블 함수를 설정하는 데 필요한 모든 쿼리를 실행하지 않는 버그를 수정했습니다.

  • 사용자 지정 형식에 대한 고정 형식 힌트 선언: mypy 검사를 중단시킨 ColumnOrName, ColumnOrLiteralStr, ColumnOrSqlExpr, LiteralType, ColumnOrLiteral.

  • DataFrameWriter.save_as_tableDataFrame.copy_into_table 이 정규화된 테이블 이름을 구문 분석하지 못하는 버그를 수정했습니다.

버전 1.4.0(2023-04-24)

새로운 기능

  • session.getOrCreate 를 지원하는 기능이 추가되었습니다.

  • 별칭 Column.getField 를 지원하는 기능을 추가했습니다.

  • snowflake.snowpark.functions 의 새 함수에 대해

    • 더하기 연산과 빼기 연산을 더 쉽게 수행하기 위한 date_adddate_sub 지원을 추가했습니다.

    • ddaydiff

    • dexplode

    • darray_distinct

    • dregexp_extract

    • dstruct

    • dformat_number

    • dbround

    • dsubstring_index

  • 같은 버전의 파일이 이미 스테이지에 있는 경우 스테이지에 파일을 업로드하는 과정을 건너뛸 수 있도록 register_from_file 을 사용하여 UDF, UDTF, 저장 프로시저를 생성할 때 매개 변수 skip_upload_on_content_match 를 추가했습니다.

  • 점을 포함하는 테이블 이름을 가져오는 DataFrame.save_as_table 메서드에 대한 지원을 추가했습니다.

  • DataFrame.filter() 또는 DataFrame.order_by() 다음에 프로젝션 문(예: DataFrame.select(), DataFrame.with_column())이 올 때 생성되는 SQL을 평면화했습니다.

  • Dataframe.create_or_replace_dynamic_table 을 사용하여 (비공개 미리 보기에서) 동적 테이블을 생성하기 위한 지원을 추가했습니다.

  • 바인딩 변수를 지원하기 위해 session.sql() 에 선택적 인자 params 를 추가했습니다. 이 인자는 저장 프로시저에서 아직 지원되지 않습니다.

버그 수정 사항

  • 구분 기호 전달 시 예외가 발생하는 strtok_to_array 의 버그를 수정했습니다.

  • 모듈이 다른 종속성과 동일한 네임스페이스를 갖는 session.add_import 의 버그를 수정했습니다.

버전 1.3.0(2023-03-28)

새로운 기능

  • functions.initcap() 에서 delimiters 매개 변수를 위한 지원을 추가했습니다.

  • 가변적인 개수의 입력 식을 허용하도록 functions.hash() 에 대한 지원을 추가했습니다.

  • 런타임 구성의 가변성을 가져오거나 설정하거나 확인하기 위해 API Session.conf 를 추가했습니다.

  • case_sensitive 매개 변수를 사용하여 DataFrame.collectRow 결과에서 대소문자 구분 관리를 위한 지원 기능을 추가했습니다.

  • snowflake.snowpark.types.StructType 에 대한 인덱서 지원을 추가했습니다.

  • SQL 예외에 대한 오류 로깅을 선택적으로 비활성화하기 위해 키워드 인자 log_on_exceptionDataframe.collectDataframe.collect_no_wait 에 추가했습니다.

버그 수정 사항

  • 다른 DataFrame 세트 작업 후에 DataFrame 세트 작업(DataFrame.subtract, DataFrame.union 등)이 호출되고 DataFrame.select 또는 DataFrame.with_column 에서 예외가 발생하는 버그를 수정했습니다.

  • SQL 단순화 기능이 연결된 정렬 문을 덮어쓰는 버그를 수정했습니다.

개선 사항

  • 기본적으로 상수 하위 쿼리 별칭(SNOWPARK_LEFT, SNOWPARK_RIGHT)을 사용하도록 JOIN 쿼리를 단순화했습니다. 사용자는 session.conf.set('use_constant_subquery_alias', False) 를 사용하여 런타임 시 이를 비활성화하여 무작위로 생성된 별칭 이름을 대신 사용할 수 있습니다.

  • session.call() 에서 문 매개 변수를 지정할 수 있도록 허용했습니다.

  • 100,000행의 청크 크기를 기본값으로 설정하여 저장 프로시저에서 대형 판다 DataFrames의 업로드를 활성화했습니다.

버전 1.2.0(2023-03-02)

새로운 기능과 업데이트

  • 저장 프로시저를 등록할 때 생성된 스크립트에서 소스 코드를 주석으로 표시하기 위한 지원을 추가했습니다. 이 기능은 기본적으로 활성화되어 있으며 등록 시 source_code_display=False 를 지정하여 비활성화합니다.

  • 지정된 함수 또는 프로시저가 이미 존재하는 경우 생성을 무시하도록 Snowpark Python에서 UDF, UDTF 또는 저장 프로시저를 생성할 때 매개 변수 if_not_exists 를 추가했습니다.

  • snowflake.snowpark.functions.get 을 호출하여 배열에서 값을 추출할 때 정수를 허용합니다.

  • Snowflake 기본 제공 함수 REVERSE 에 대한 액세스를 여는 함수에 functions.reverse 를 추가했습니다.

  • 사용 중단으로 표시된 is_owner_file 을 대체하려고 (비공개 미리 보기에서) snowflake.snowflake.files.SnowflakeFile.open()require_scoped_url 매개 변수를 추가했습니다.

버그 수정 사항

  • Snowpark 세션을 생성할 때 paramstyleqmark 로 덮어쓰는 버그를 수정했습니다.

  • SnowparkJoinException: (1112): Unsupported using join type 'Cross' 오류 메시지가 표시되며 df.join(..., how="cross") 가 실패하는 버그를 수정했습니다.

  • 연결된 함수 호출에서 생성된 DataFrame 열을 쿼리할 때 잘못된 열 이름이 사용되는 버그를 수정했습니다.

버전 1.1.0(2023-01-26)

새로운 기능과 업데이트

  • 함수에 asc, asc_nulls_first, asc_nulls_last, desc, desc_nulls_first, desc_nulls_last, date_part, unix_timestamp 를 추가했습니다.

  • 열 이름과 데이터 타입 쌍의 목록을 반환하는 DataFrame.dtypes 속성을 추가했습니다.

  • 다음 별칭을 추가했습니다.

    • functions.expr() for functions.sql_expr().

    • functions.date_format() for functions.to_date().

    • functions.monotonically_increasing_id() for functions.seq8().

    • functions.from_unixtime() for functions.to_timestamp().

버그 수정 사항

  • 경우에 따라 열 별칭과 조인을 제대로 처리하지 못하는 SQL 단순화 기능의 버그를 수정했습니다. 자세한 내용은 https://github.com/snowflakedb/snowpark-python/issues/658을 참조하십시오.

  • 함수 호출 NaN 및 INF 에 대해 잘못된 열 이름을 생성하는 SQL 단순화 기능의 버그를 수정했습니다.

개선 사항

  • 세션 매개 변수 PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER 는 Snowflake 7.3이 출시된 후 True 가 될 것입니다. snowpark-python에서 session.sql_simplifier_enabled 는 기본적으로 PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER 의 값을 읽는데, 이는 Snowflake 7.3 출시 이후 기본적으로 SQL 단순화 기능이 활성화된다는 뜻입니다. 이 기능을 끄려면 Snowflake의 PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER 를 False로 설정하거나 Snowpark에서 session.sql_simplifier_enabled = False 를 실행하십시오. SQL 단순화 기능은 더 간결한 SQL을 생성하는 데 도움이 되므로 이 기능을 사용하는 것이 좋습니다.