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

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

  • 동작 변경 사항

  • 새로운 기능

  • 고객이 직면한 버그 수정

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

버전 1.13.0(2024-02-26)

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

새로운 기능

  • 함수 last_day 에 선택적 date_part 인자에 대한 지원을 추가했습니다.

  • 세션이 생성된 후 SessionBuilder.app_namequery_tag 를 설정합니다.

  • 다음 로컬 테스트 함수에 대한 지원을 추가했습니다.

    • current_timestamp

    • current_date

    • current_time

    • strip_null_value

    • upper

    • lower

    • length

    • initcap

개선 사항

  • 모든 활성 세션을 닫는 인터프리터 종료 시 정리 논리를 추가했습니다.

버그 수정 사항

  • 잘못된 격리 수준으로 인해 반복기가 완료되기 전에 다른 쿼리가 실행되면 반복기가 잘못된 결과를 산출할 수 있는 DataFrame.to_local_iterator 의 버그를 수정했습니다.

  • 로컬 테스트가 활성화된 계획을 실행하는 동안 오류 메시지에서 테이블 이름이 잘리는 버그를 수정했습니다.

  • 범위가 클 때 Session.range 가 빈 결과를 반환하는 버그를 수정했습니다.

버전 1.12.1(2024-02-08)

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

개선 사항

  • 최적의 메모리 할당을 위해 to_pandas 변환 중에 기본적으로 split_blocks=True 를 사용합니다. 이 매개 변수는 pyarrow.Table.to_pandas 에 전달되며, 이를 통해 PyArrow 는 단일 연속 블록을 할당하는 대신 메모리 할당을 더 작고 관리하기 쉬운 블록으로 분할할 수 있습니다. 이로 인해 더 큰 데이터 세트를 처리할 때 메모리 관리가 향상됩니다.

버그 수정 사항

  • null 값이 있는 IntergerType 열이 있는 Dataframe을 평가할 때 오류를 발생시키는 DataFrame.to_pandas 의 버그를 수정했습니다.

버전 1.12.0(2024-01-29)

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

동작 변경 사항(API 호환)

  • to_pandas 작업 중에 데이터 타입을 구문 분석할 때 GS 정밀도 값을 사용하여 큰 정수 값의 정밀도 문제를 수정합니다. 이는 이전에 int8 로 반환된 열이 int64 로 반환되는 경우 사용자에게 영향을 미칠 수 있습니다. 사용자는 반환 열에 정밀도 값을 명시적으로 지정하여 이 문제를 수정할 수 있습니다.

  • collect() 작업이 수행되지 않으면 Session.call 실행이 저장 프로시저를 트리거하지 않는 테이블 저장 프로시저의 경우 Session.call 에 대한 동작을 조정했습니다.

  • StoredProcedureRegistration 은 이제 클라이언트의 로컬 버전 라이브러리에 대한 패키지 종속성으로 snowflake-snowpark-python 을 자동으로 추가합니다. 서버가 해당 버전을 지원할 수 없으면 오류가 발생합니다.

새로운 기능

  • StoredProcedure.__call__statement_params 를 노출했습니다.

  • Session.add_import 에 두 개의 선택적 인자를 추가했습니다.

    • chunk_size: 업로드된 파일의 청크마다 해시할 바이트 수입니다.

    • whole_file_hash: 기본적으로 업로드된 가져오기의 첫 번째 청크만 해시되므로 시간이 절약됩니다. 이것을 True로 설정하면 업로드된 각 파일이 대신 완전히 해시됩니다.

  • 외부 액세스와의 통합을 허용하기 위해 Snowpark Python에서 UDAF를 생성할 때 매개 변수 external_access_integrationssecrets 를 추가했습니다.

  • 추가 태그를 쉼표로 구분된 값으로 추가하여 현재 쿼리 태그에 추가할 수 있는 새로운 메서드 Session.append_query_tag 를 추가했습니다.

  • JSON으로 인코딩된 사전 쿼리 태그를 업데이트할 수 있는 새 메서드 Session.update_query_tag 를 추가했습니다.

  • SessionBuilder.getOrCreate 는 이제 토큰 만료가 감지되면 반환하는 싱글톤을 바꾸려고 시도합니다.

  • snowflake.snowpark.functions 에 다음 함수를 추가했습니다.

    • array_except

    • create_map

    • sign / signum

  • DataFrame.analytics 에 다음 함수를 추가했습니다.

    • 여러 윈도우 크기로 합계 및 평균과 같은 이동 집계를 활성화하기 위해 DataFrame.analyticsmoving_agg 함수를 추가했습니다.

    • 여러 윈도우 크기로 합계 및 평균과 같은 이동 집계를 활성화하기 위해 DataFrame.analyticscummulative_agg 함수를 추가했습니다.

버그 수정 사항

  • 부울 값이 정수 값을 잘못 재정의하게 만드는 DataFrame.na.fill 의 버그를 수정했습니다.

  • pandas DataFrames를 사용하여 생성된 Snowpark DataFrames가 타임스탬프 열의 유형을 올바르게 추론하지 못하는 Session.create_dataframe 의 버그를 수정했습니다. 이 동작은 다음과 같습니다.

    • 타임존이 없는 이전 타임스탬프 열은 나노초 에포크로 변환되어 LongType() 으로 추론되지만, 이제는 타임스탬프 값으로 올바르게 유지되고 TimestampType(TimestampTimeZone.NTZ) 로 추론됩니다.

    • 타임존이 있는 이전 타임스탬프 열은 TimestampType(TimestampTimeZone.NTZ) 및 느슨한 타임존 정보로 추론되지만 이제는 TimestampType(TimestampTimeZone.LTZ) 로 올바르게 추론되고 타임존 정보가 올바르게 유지됩니다.

    • 이전 동작으로 되돌리려면 세션 매개 변수 PYTHON_SNOWPARK_USE_LOGICAL_TYPE_FOR_CREATE_DATAFRAME 을 설정하십시오. Snowflake에서는 매개 변수가 나중에 제거될 예정이므로 올바른 동작에 맞게 코드를 업데이트할 것을 권장합니다.

  • 스케일이 0이 아닐 때 DataFrame.to_pandas 가 십진수 유형을 가져오고 pandas 에 오브젝트 dtype을 생성하는 버그를 수정했습니다. 대신에 값을 float64 유형으로 형변환합니다.

  • 다음 중 하나가 발생할 때 생성된 SQL을 잘못 평면화하는 버그를 수정했습니다.

    • DataFrame.filter()DataFrame.sort().limit() 이후에 호출됩니다.

    • 이미 윈도우 함수나 시퀀스 종속 데이터 생성기 열이 있는 DataFrame에서 DataFrame.sort() 또는 filter() 가 호출됩니다. 예를 들어, df.select("a", seq1().alias("b")).select("a", "b").sort("a") 는 더 이상 sort 절을 평면화하지 않습니다.

    • 윈도우 또는 시퀀스 종속 데이터 생성기 열은 DataFrame.limit() 뒤에 사용됩니다. 예를 들어, df.limit(10).select(row_number().over()) 는 생성된 SQL에서 limit와 select를 평탄화하지 않습니다.

  • 별칭이 지정된 열이 있는 다른 DataFrame에서 DataFame을 복사할 때 DataFrame 열의 별칭을 지정하면 오류가 발생하는 버그를 수정했습니다. 예를 들면 다음과 같습니다.

    df = df.select(col("a").alias("b"))
    df = copy(df)
    df.select(col("b").alias("c"))  # Threw an error. Now it's fixed.
    
    Copy
  • 부울 유형에 대해 스키마에서 null을 허용하지 않는 필드를 준수하지 않는 Session.create_dataframe 의 버그를 수정했습니다. 이 수정 사항은 사용자에게 임시 테이블을 생성할 권한이 있는 경우에만 적용됩니다.

  • session.sql 에서 select 문이 아닌 문이 limit() 와 함께 사용될 때 SQL 쿼리를 삭제하는 SQL 단순화 기능의 버그를 수정했습니다.

  • 세션 매개 변수 ERROR_ON_NONDETERMINISTIC_UPDATE 가 true인 경우 예외를 발생시키는 버그를 수정했습니다.