Snowpark Python API 변경 사항

이 항목에서는 릴리스 버전에 대한 정보를 제공합니다.

이 항목의 내용:

버전 1.3.0(2023-03-28)

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

새로운 기능

  • 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

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

새로운 기능

  • 저장 프로시저를 등록할 때 생성된 스크립트에서 소스 코드를 주석으로 표시하기 위한 지원을 추가했습니다. 이 기능은 기본적으로 활성화되어 있으며 등록 시 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

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

새로운 기능

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

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

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

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

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

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

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

버그 수정 사항

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

  • 함수 호출 NaNINF 에 대해 잘못된 열 이름을 생성하는 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_SIMPLIFIERFalse 로 설정하거나 Snowpark에서 session.sql_simplifier_enabled = False 를 실행하십시오. SQL 단순화 기능은 더 간결한 SQL을 생성하는 데 도움이 되므로 이 기능을 사용하는 것이 좋습니다.

버전 1.0.0

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

새로운 기능

  • GENERATOR 테이블 함수를 사용하여 새 DataFrame을 생성하기 위해 Session.generator() 를 추가했습니다.

  • 보안 UDF 또는 UDTF를 생성하는 함수에 SECURE 매개 변수를 추가했습니다.

버전 0.12.0

Snowpark 라이브러리 버전 0.12.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • 비동기 작업을 위한 새 API를 추가했습니다.

    • 쿼리 ID에서 AsyncJob 인스턴스를 만드는 Session.create_async_job().

    • AsyncJob.result() 는 이제 result_type 인자를 받아 결과를 다른 형식으로 반환합니다.

    • AsyncJob.to_df() 는 이 비동기 작업의 결과에서 빌드된 DataFrame 을 반환합니다.

    • AsyncJob.query() 는 실행된 쿼리의 SQL 텍스트를 반환합니다.

  • DataFrame.agg()RelationalGroupedDataFrame.agg() 는 이제 가변 길이 인자를 받습니다.

  • 겹치는 열의 이름을 편리하게 바꿀 수 있도록 매개 변수 lsuffixrsuffixDataFrame.join()DataFrame.cross_join() 에 추가했습니다.

  • DataFrame.cache_result() 를 호출한 후 임시 테이블을 삭제할 수 있도록 Table.drop_table() 을 추가했습니다. Table 은 컨텍스트 관리자이기도 하므로, with 문을 사용하여 사용 후 캐시 임시 테이블을 삭제할 수 있습니다.

  • Session.use_secondary_roles() 을 추가했습니다.

  • (@chasleslr이 제공한) first_value()last_value() 함수를 추가했습니다.

  • DataFrame.join() 에서 using_columns 의 별칭으로 on 을 추가하고 join_type 의 별칭으로 how 를 추가했습니다.

버그 수정 사항

  • schema 이름에 특수 문자가 있을 때 오류가 발생하는 Session.create_dataframe() 의 버그를 수정했습니다.

  • Session.read.option() 에 설정된 옵션이 DataFrame.copy_into_table() 에 기본값으로 전달되지 않는 버그를 수정했습니다.

  • 복사 옵션이 값에 작은따옴표가 있을 때 DataFrame.copy_into_table() 에서 오류가 발생하는 버그를 수정했습니다.

버전 0.11.0

Snowpark 라이브러리 버전 0.11.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

동작 변경 사항

  • 이제 Session.add_packages() 는 Snowflake Anaconda 채널에서 패키지 버전을 찾을 수 없을 때 ValueError 를 발생시킵니다. 이전에는 Session.add_packages() 가 성공했고 UDF 또는 저장 프로시저 등록 단계에서 이후에 SnowparkSQLException 예외가 발생했습니다.

새로운 기능

  • 스테이지 파일을 스트림으로 다운로드하는 기능을 지원하려고 FileOperation.get_stream() 메서드를 추가했습니다.

  • int 인자를 허용하도록 functions.ntiles() 에 지원 기능을 추가했습니다.

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

    • functions.call_function() (functions.call_builtin()).

    • functions.function() (functions.builtin()).

    • DataFrame.order_by() (DataFrame.sort()).

    • DataFrame.orderBy() (DataFrame.sort()).

  • DataFrame 클래스 대신 더 정확한 Table 클래스를 반환하도록 DataFrame.cache_result() 를 개선했습니다.

  • StoredProcedure 를 호출할 때 session 을 첫 번째 인자로 허용하는 지원 기능을 추가했습니다.

개선 사항

  • 해당되는 경우 쿼리를 평면화하여 중첩 쿼리 생성을 개선했습니다. 이렇게 개선된 기능은 Session.sql_simplifier_enabled = True 를 설정하여 사용할 수 있습니다. DataFrame.select(), DataFrame.with_column(), DataFrame.drop() 및 기타 select 관련 API는 이제 SQL이 더욱 평면화되었습니다. DataFrame.union(), DataFrame.union_all(), DataFrame.except_(), DataFrame.intersect(), DataFrame.union_by_name() 은 여러 세트 연산자가 연결될 때 생성되는 SQL을 평면화했습니다.

  • 비동기 작업 API에 대한 형식 주석을 개선했습니다.

버그 수정 사항

  • Table.update(), Table.delete(), Table.merge() 가 존재하지 않는 임시 테이블을 참조하려고 하는 버그를 수정했습니다.

버전 0.10.0

Snowpark 라이브러리 버전 0.10.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • 비동기 쿼리로 Snowpark 데이터 프레임을 평가하는 실험용 API를 추가했습니다.

    • 비동기 평가를 허용하도록 (쿼리를 실행하는) Snowpark 데이터 프레임에서 다음 작업 API에 키워드 인자 block 을 추가했습니다.

      • DataFrame.collect(), DataFrame.to_local_iterator(), DataFrame.to_pandas(), DataFrame.to_pandas_batches(), DataFrame.count(), DataFrame.first(), DataFrameWriter.save_as_table(), DataFrameWriter.copy_into_location(), Table.delete(), Table.update(), Table.merge().

    • 비동기 평가를 허용하는 DataFrame.collect_nowait() 메서드를 추가했습니다.

    • 비동기적으로 실행된 쿼리에서 결과를 검색하고 상태를 확인하는 AsyncJob 클래스를 추가했습니다.

  • Session.write_pandas() 에서 table_type 에 대한 지원을 추가했습니다. 이제 table_type 옵션에서 temporary, temp, transient 항목을 선택할 수 있습니다.

  • Snowpark에서 Python 구조화 데이터(list, tuple, dict)를 리터럴 값으로 사용하기 위한 지원을 추가했습니다.

  • 저장 프로시저를 호출자 또는 소유자로 등록할 수 있도록 execute_as 키워드 인자를 functions.sproc()session.sproc.register() 에 추가했습니다.

  • Snowflake의 스테이지에서 파일을 읽을 때 미리 구성된 파일 형식 지정을 위한 지원을 추가했습니다.

개선 사항

  • Snowpark 세션의 세부 정보 표시를 위한 지원을 추가했습니다.

버그 수정 사항

  • 테이블 이름이 정규화되고 테이블이 이미 있는 경우 DataFrame.copy_into_table()DataFrameWriter.save_as_table() 이 새 테이블을 실수로 생성한 버그를 수정했습니다.

사용 중단

  • Session.write_pandas() 에서 사용되지 않는 키워드 인자 create_temp_table.

  • Python 목록 또는 튜플에 래핑된 인자를 사용하여 UDF를 호출하는 기능이 더 이상 사용되지 않습니다. 목록이나 튜플 없이 가변 길이 인자를 사용할 수 있습니다.

종속성 업데이트

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

버전 0.9.0

Snowpark 라이브러리 버전 0.9.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • UDF를 등록할 때 생성된 스크립트에서 소스 코드를 주석으로 표시하기 위한 지원을 추가했습니다. 이 기능은 기본적으로 켜져 있습니다. 이 기능을 끄려면 register() 또는 @udf() 를 호출할 때 새 키워드 인자 source_code_displayFalse 로 전달합니다.

  • 이제 열에 대해 table_function.TableFunctionCall 형식의 매개 변수를 사용하는 DataFrame.select(), DataFrame.with_column(), DataFrame.with_columns() 에서 테이블 함수 호출을 위한 지원을 추가했습니다.

  • Snowflake 테이블의 내용을 Pandas DataFrame의 내용으로 덮어쓸 수 있도록 키워드 인자 overwritesession.write_pandas() 에 추가했습니다.

  • 추가 모드에서 테이블에 데이터를 삽입할 때 일치 규칙을 지정할 수 있도록 키워드 인자 column_orderdf.write.save_as_table() 에 추가했습니다.

  • 파일 스트림을 통해 로컬 파일을 스테이지에 업로드하는 FileOperation.put_stream() 메서드를 추가했습니다.

  • 테이블 함수 조인의 출력에서 가져온 열 이름에 별칭을 지정할 수 있도록 TableFunctionCall.alias()TableFunctionCall.as_() 메서드를 추가했습니다.

  • 현재 활성 Snowpark 세션을 가져올 수 있도록 snowflake.snowpark.context 모듈에 get_active_session() 함수를 추가했습니다.

개선 사항

  • 입력 max_min_ 의 유형을 추론하고 각각 IntegerType 또는 FloatType 으로 제한을 캐스팅하도록 function.uniform() 함수를 개선했습니다.

버그 수정 사항

  • statement_params 가 함수에 전달되지 않을 때 일괄 삽입에서 오류가 발생하지 않는 버그를 수정했습니다.

  • 사전과 주어진 스키마로 session.create_dataframe() 을 호출할 때 열 이름을 인용해야 하는 버그를 수정했습니다.

  • 테이블이 이미 존재하고 df.write.save_as_table() 을 호출할 때 추가 모드에 있는 경우 테이블 생성을 건너뛰어야 하는 버그를 수정했습니다.

  • UDF 등록 시 밑줄이 있는 서드 파티 패키지를 추가할 수 없는 버그를 수정했습니다.

버전 0.8.0

Snowpark 라이브러리 버전 0.8.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • 문 수준 매개 변수를 지정할 수 있도록 다음 메서드에 키워드 전용 인수 statement_params 를 추가했습니다.

    • 클래스 snowflake.snowpark.Dateframecollect, to_local_iterator, to_pandas, to_pandas_batches, count, copy_into_table, show, create_or_replace_view, create_or_replace_temp_view, first, cache_result, random_split.

    • 클래스 snowflake.snowpark.Tableupdate, delete, merge.

    • 클래스 snowflake.snowpark.DataFrameWritersave_as_table, copy_into_location.

    • 클래스 snowflake.snowpark.DataFrameStatFunctionsapprox_quantile, statement_params, cov, crosstab.

    • 클래스 snowflake.snowpark.udf.UDFRegistrationregister, register_from_file.

    • 클래스 snowflake.snowpark.udtf.UDTFRegistrationregister, register_from_file.

    • 클래스 snowflake.snowpark.stored_procedure.StoredProcedureRegistrationregister, register_from_file.

    • snowflake.snowpark.functionsudf, udtf, sproc.

  • session.call() 에 대한 입력 인수로서 Column 에 대한 지원을 추가했습니다.

  • df.write.save_as_table() 에서 table_type 에 대한 지원을 추가했습니다. 이제 table_type 옵션에서 temporary, temp, transient 항목을 선택할 수 있습니다.

개선 사항

  • session.use_* 메서드에서 오브젝트 이름 유효성 검사를 추가했습니다.

  • 특수 문자가 포함된 경우 이스케이프하도록 SQL의 쿼리 태그를 업데이트했습니다.

  • 누락된 패키지를 추가할 때 Anaconda 조건이 승인되었는지 확인하는 검사를 추가했습니다.

버그 수정 사항

  • session.create_dataframe() 의 문자열 열의 제한된 길이를 수정했습니다.

  • 입력 데이터가 목록일 때 session.create_dataframe() 이 0과 FalseNone 으로 잘못 변환하는 버그를 수정했습니다.

  • 대규모 로컬 데이터 세트를 사용하여 session.create_dataframe() 을 호출하면 임시 테이블이 두 번 생성되는 버그를 수정했습니다.

  • function.trim() 의 정의를 SQL 함수 정의에 맞춰 조정했습니다.

  • Python 시스템 정의(기본 제공 함수) sum vs. Snowpark function.sum() 을 사용할 때 snowpark-python이 중단되는 문제를 수정했습니다.

버전 0.7.0

Snowpark 라이브러리 버전 0.7.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • 사용자 정의 테이블 함수(UDTF)에 대한 지원을 추가했습니다.

    • 함수 snowflake.snowpark.functions.udtf() 를 사용하여 UDTF를 등록하거나 이 함수를 UDTF를 등록하는 데코레이터로 사용합니다.

    • 또한 Session.udtf.register() 를 사용하여 UDTF 를 등록할 수도 있습니다.

    • Session.udtf.register_from_file() 을 사용하여 Python 파일에서 UDTF를 등록합니다.

  • Snowflake 내장 테이블 함수와 UDTF를 모두 포함하여 테이블 함수를 쿼리하도록 API를 업데이트했습니다.

    • 함수 snowflake.snowpark.functions.table_function() 을 사용하여 테이블 함수를 나타내는 호출 가능한 오브젝트를 만들고 이 오브젝트를 사용해 쿼리에서 테이블 함수를 호출합니다.

    • 또는 함수 snowflake.snowpark.functions.call_table_function() 을 사용하여 테이블 함수를 호출합니다.

    • 테이블 함수를 측면 조인할 때 partition byorder by 를 지정하는 over 절에 대한 지원을 추가했습니다.

    • TableFunctionCall 인스턴스를 허용하도록 Session.table_function()DataFrame.join_table_function() 을 업데이트했습니다.

새로운 변경 사항

  • functions.udf()functions.sproc() 를 사용하여 함수를 만들 때 이제 imports 또는 packages 인자에 대해 빈 목록을 지정하여 이 UDF 또는 저장 프로시저에 사용되는 가져오기 또는 패키지가 없음을 나타낼 수 있습니다. 이전에는 빈 목록을 지정해 함수가 세션 수준 가져오기 또는 패키지를 사용하도록 했습니다.

  • types.py 에서 데이터 타입의 __repr__ 구현을 개선했습니다. 사용하지 않는 type_name 속성이 제거되었습니다.

  • SQL 오류에 대해 Snowpark에 특정한 예외 클래스를 추가했습니다. 이 클래스가 Python 커넥터의 이전 ProgrammingError 를 대체합니다.

개선 사항

  • 스레드별로 처음 호출될 때 UDF 또는 UDTF에 잠금을 추가했습니다.

  • UDF 생성 중 발생한 피클링(pickling) 오류에 대한 오류 메시지를 개선했습니다.

  • 실패한 쿼리를 기록할 때 쿼리 ID를 포함했습니다.

버그 수정 사항

  • DataFrame.to_pandas() 를 호출할 때 정수가 아닌 데이터(예: 타임스탬프)가 때때로 정수로 변환되는 버그를 수정했습니다.

  • Parquet 파일의 열에 공백이 포함되어 있을 때 DataFrameReader.parquet() 가 parquet 파일을 읽지 못하는 버그를 수정했습니다.

  • 유추한 스키마가 있는 파일을 읽어 데이터 프레임 생성 시 DataFrame.copy_into_table() 이 실패하는 버그를 수정했습니다.

사용 중단

  • Session.flatten()DataFrame.flatten().

종속성 업데이트

  • 버전을 cloudpickle <= 2.0.0 으로 제한했습니다.

버전 0.6.0

Snowpark 라이브러리 버전 0.6.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • Python UDF Batch API를 통해 벡터화된 UDF에 대한 지원을 추가했습니다. Python UDF 배치 API를 사용하면 입력 행 배치를 Pandas DataFrames 로 수신하고 결과 배치를 Pandas 배열 또는 Series 로 반환하는 Python 함수를 정의할 수 있습니다. 이는 Snowpark에서 UDF의 성능을 향상할 수 있습니다.

  • DataFrame의 스키마가 스테이지에서 Parquet, Avro 또는 ORC 파일을 읽어 생성될 때 기본적으로 이 스키마를 유추하기 위한 지원을 추가했습니다.

  • 함수 current_session(), current_statement(), current_user(), current_version(), current_warehouse(), date_from_parts(), date_trunc(), dayname(), dayofmonth(), dayofweek(), dayofyear(), grouping(), grouping_id(), hour(), last_day(), minute(), next_day(), previous_day(), second(), month(), monthname(), quarter(), year(), current_database(), current_role(), current_schema(), current_schemas(), current_region(), current_avaliable_roles(), add_months(), any_value(), bitnot(), bitshiftleft(), bitshiftright(), convert_timezone(), uniform(), strtok_to_array(), sysdate(), time_from_parts(), timestamp_from_parts(), timestamp_ltz_from_parts(), timestamp_ntz_from_parts(), timestamp_tz_from_parts(), weekofyear(), percentile_cont()snowflake.snowflake.functions 에 추가했습니다.

개선 사항

  • Session.create_dataframe() 메서드를 사용하여 특정 스키마로 빈 DataFrame 을 만들기 위한 지원을 추가했습니다.

  • 데이터 프레임을 평가할 때 여러 로그(예: 실행된 쿼리)에 대해 로깅 수준을 INFO 에서 DEBUG 로 변경했습니다.

  • 피클 오류로 인해 UDF를 만들지 못할 때의 오류 메시지를 개선했습니다.

  • 0.4.0에서 사용 중단된 DataFrame.groupByGroupingSets(), DataFrame.naturalJoin(), DataFrame.joinTableFunction, DataFrame.withColumns(), Session.getImports(), Session.addImport(), Session.removeImport(), Session.clearImports(), Session.getSessionStage(), Session.getDefaultDatabase(), Session.getDefaultSchema(), Session.getCurrentDatabase(), Session.getCurrentSchema(), Session.getFullyQualifiedCurrentSchema() API를 제거했습니다.

  • 4.1.0 이상의 버전을 사용해 typing-extension 을 새 종속성으로 추가했습니다.

버그 수정 사항

  • Session.create_dataframe() 메서드에서 pandas 강한 종속성을 제거했습니다.

버전 0.5.0

Snowpark 라이브러리 버전 0.5.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • 저장 프로시저 API를 추가했습니다.

  • 저장 프로시저를 등록할 수 있도록 Session.sproc 속성과 sproc()snowflake.snowpark.functions 에 추가했습니다.

  • 이름으로 저장 프로시저를 호출하기 위해 Session.call 을 추가했습니다.

  • Python 원본 파일 또는 zip 파일에서 UDF를 직접 등록할 수 있도록 UDFRegistration.register_from_file() 을 추가했습니다.

  • UDF를 설명하는 UDFRegistration.describe() 를 추가했습니다.

  • 데이터 프레임을 무작위로 분할하는 방법을 제공하는 DataFrame.random_split() 을 추가했습니다.

  • 함수 md5(), sha1(), sha2(), ascii(), initcap(), length(), lower(), lpad(), ltrim(), rpad(), rtrim(), repeat(), soundex(), regexp_count(), replace(), charindex(), collate(), collation(), insert(), left(), right(), endswith()snowflake.snowpark.functions 에 추가했습니다.

  • call_udf() 함수는 이제 리터럴 값도 허용합니다.

  • array_agg()distinct 키워드를 제공했습니다.

버그 수정 사항

  • Column.cast(IntegerType()) 이 사용된 경우 DataFrame.to_pandas() 에 문자열 열이 생기는 문제를 수정했습니다.

  • 둘 이상의 문자열 열이 있을 때 DataFrame.describe() 에서 발생하는 버그를 수정했습니다.

버전 0.4.0

Snowpark 라이브러리 버전 0.4.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • 이제는 UDF를 정의할 때 사용할 Anaconda 패키지를 지정할 수 있습니다.

  • add_packages(), get_packages(), clear_packages(), remove_package()Session 클래스에 추가했습니다.

  • 요구 사항 파일을 사용하여 이 세션에서 사용할 패키지를 지정할 수 있도록 add_requirements()Session 에 추가했습니다.

  • UDF를 만들 때 UDF 수준 Anaconda 패키지 종속성을 나타내기 위해 함수 snowflake.snowpark.functions.udf() 와 메서드 UserDefinedFunction.register() 에 매개 변수 packages 를 추가했습니다.

  • UDF 수준 코드 가져오기를 지정하기 위해 snowflake.snowpark.functions.udf()UserDefinedFunction.register() 에 매개 변수 imports 를 추가했습니다.

  • 여러 세션이 있는 경우 UDF를 만드는 데 사용할 세션을 지정할 수 있도록 함수 udf()UserDefinedFunction.register() 에 매개 변수 session 을 추가했습니다.

  • UDF를 정의할 때 Geography 및 Variant 데이터에 대한 타입 힌트로 사용할 타입 GeographyVariantsnowflake.snowpark.types 에 추가했습니다.

  • Geography geoJSON 데이터에 대한 지원을 추가했습니다.

  • 테이블 작업을 위한 DataFrame 의 하위 클래스인 Table 을 추가했습니다.

  • 메서드 updatedelete 는 Snowflake에서 테이블의 행을 업데이트하고 삭제하는 역할을 합니다.

  • 메서드 merge 는 데이터를 DataFrame 에서 Table 로 병합합니다.

  • 테이블에서는 작동하지만 뷰와 하위 쿼리에서는 작동하지 않는 추가 매개 변수 seed 로 메서드 DataFrame.sample() 을 재정의했습니다.

  • Snowflake 데이터베이스에서 반환된 결과 세트가 너무 클 때 반복기에서 결과를 가져올 수 있도록 DataFrame.to_local_iterator()DataFrame.to_pandas_batches() 를 추가했습니다.

  • 임시 테이블의 DataFrame 에 대해 수행된 작업을 캐시하는 DataFrame.cache_result() 를 추가했습니다. 원본 DataFrame 에 대한 후속 작업은 캐시된 결과 DataFrame 에 아무런 영향도 주지 않습니다.

  • DataFrame.queries 을 평가하려고 실행될 SQL 쿼리를 가져오는 속성 DataFrame 를 추가했습니다.

  • 세션에서 생성된 DataFrames 를 평가하기 위한 모든 SQL 쿼리를 포함하여, 세션에서 실행된 SQL 쿼리를 추적하는 컨텍스트 관리자로서 Session.query_history() 를 추가했습니다. 쿼리 ID와 쿼리 텍스트가 모두 기록됩니다.

  • 이제 기존에 설정된 snowflake.connector.SnowflakeConnection 에서 Session 인스턴스를 만들 수 있습니다. Session.builder.configs() 에서 매개 변수 connection 을 사용합니다.

  • 세션이 생성된 후 데이터베이스/스키마/웨어하우스/역할을 전환하기 위해 use_database(), use_schema(), use_warehouse(), use_role() 을 클래스 Session 에 추가했습니다.

  • DataFrame 을 스테이지 파일로 언로드하는 DataFrameWriter.copy_into_table() 을 추가했습니다.

  • DataFrame.unpivot() 을 추가했습니다.

  • 일부 집계 함수로 열을 기준으로 행을 정렬하는 Column.within_group() 을 추가했습니다.

  • 함수 listagg(), mode(), div0(), acos(), asin(), atan(), atan2(), cos(), cosh(), sin(), sinh(), tan(), tanh(), degrees(), radians(), round(), trunc(), factorial()snowflake.snowpark.functions 에 추가했습니다.

  • 함수 lead()lag() 에 선택적 인자 ignore_nulls 를 추가했습니다.

  • 함수 when()iff()condition 매개 변수는 이제 SQL 식을 허용합니다.

개선 사항

  • 더욱 Python다운 스네이크 케이스 이름 지정 스타일을 사용하도록 모든 함수 및 메서드 이름이 바뀌었습니다. 편의상, 일부 카멜 케이스 이름은 스네이크 케이스 API의 별칭으로 유지됩니다. 스네이크 케이스 API를 사용하는 것이 좋습니다.

  • 클래스 Session 에서 이러한 메서드를 사용 중단하고 그에 상응하는 스네이크 케이스 getImports(), addImports(), removeImport(), clearImports(), getSessionStage(), getDefaultSchema(), getDefaultSchema(), getCurrentDatabase(), getFullyQualifiedCurrentSchema() 로 바꾸었습니다.

  • 클래스 DataFrame 에서 이러한 메서드를 사용 중단하고 그에 상응하는 스네이크 케이스 groupingByGroupingSets(), naturalJoin(), withColumns(), joinTableFunction() 으로 바꾸었습니다.

  • 속성 DataFrame.columns 는 이제 DataFrame.schema.names 및 Snowflake 데이터베이스 식별자 요구 사항과 일치합니다.

  • Column.__bool__() 은 이제 TypeError 를 발생시킵니다. 이에 따라 Column 오브젝트에서 논리 연산자 and, or, not 을 사용할 수 없게 됩니다. 예를 들어 col("a") > 1 and col("b") > 2TypeError 를 발생시킵니다. (col("a") > 1) & (col("b") > 2) 를 대신 사용하십시오.

  • PutResultGetResult 를 하위 클래스 NamedTuple 로 변경했습니다.

  • 로컬 경로 또는 스테이지 위치에 공백이나 기타 특수 문자가 있을 때 오류가 발생하는 버그를 수정했습니다.

  • 예외가 발생하는 대신 숫자가 아닌 열과 문자열이 아닌 열이 무시되도록 DataFrame.describe() 를 변경했습니다.

종속성 업데이트

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

버전 0.3.0

Snowpark 라이브러리 버전 0.3.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • 별칭이 Column.in_()Column.isin() 을 추가했습니다.

  • cast() 의 특수 버전인 Column.try_cast() 를 추가했습니다. 문자열 식을 다른 타입으로 캐스팅하려고 시도하며 캐스팅할 수 없을 경우에는 null 을 반환합니다.

  • 문자열 열을 처리하는 Column.startswith()Column.substr() 을 추가했습니다.

  • Column.cast() 는 이제 DataType 인스턴스 외에 캐스트 유형을 나타내는 str 값도 허용합니다.

  • DataFrame 의 통계를 요약하는 DataFrame.describe() 를 추가했습니다.

  • DataFrame 의 쿼리 계획을 인쇄하는 DataFrame.explain() 을 추가했습니다.

  • DataFrame.filter()DataFrame.select_expr() 은 이제 SQL 식을 허용합니다.

  • 선택적으로 임시 테이블을 만들기 위해 메서드 DataFrame.saveAsTable()Session.write_pandas()create_temp_table 이라는 새 bool 매개 변수를 추가했습니다.

  • DataFrame.except_() 의 별칭으로 DataFrame.minus()DataFrame.subtract() 를 추가했습니다.

  • regexp_replace(), concat(), concat_ws(), to_char(), current_timestamp(), current_date(), current_time(), months_between(), cast(), try_cast(), greatest(), least(), hash()snowflake.snowpark.functions 모듈에 추가했습니다.

버그 수정 사항

  • Pandas DataFrame의 열 이름에 공백이 있을 때 Session.createDataFrame(pandas_df)Session.write_pandas(pandas_df) 에서 예외가 발생하는 문제를 수정했습니다.

  • DataFrame.copy_into_table() 이 때때로 오류 수준 로그 항목을 잘못 인쇄하는 문제를 수정했습니다.

  • 설명서에서 일부 DataFrame API가 누락된 API 설명서 문제를 수정했습니다.

종속성 업데이트

  • snowflake-connector-python 을 2.7.2로 업데이트하여 pyarrow 종속성을 6.0.x로 업그레이드했습니다. 자세한 내용은 Python 커넥터 2.7.2 릴리스 정보 를 참조하십시오.

버전 0.2.0

Snowpark 라이브러리 버전 0.2.0에는 몇 가지 새로운 기능과 개선 사항이 도입되었습니다.

새로운 기능

  • Pandas DataFrame에서 DataFrame을 만드는 createDataFrame() 메서드를 추가했습니다.

  • Snowflake의 테이블에 Pandas DataFrame을 쓰고 Snowpark DataFrame 오브젝트를 다시 가져오는 write_pandas() 메서드를 추가했습니다.

  • 윈도우 함수를 호출하기 위한 새 클래스와 메서드를 추가했습니다.

  • 윈도우 파티션 내의 다른 값과 관련된 값의 누적 분포를 찾는 cume_dist() 와 윈도우 파티션 내의 각 행의 고유 행 번호를 반환하는 row_number() 라는 새로운 함수를 추가했습니다.

  • DataFrameStatFunctions 클래스의 DataFrames에 대한 통계를 계산하는 함수를 추가했습니다.

  • DataFrameNaFunctions 클래스의 DataFrame에서 누락된 값을 처리하는 함수를 추가했습니다.

  • 새 메서드 rollup(), cube(), pivot() 을 DataFrame 클래스에 추가했습니다.

  • SQL GROUP BY GROUPING SETS 를 수행하기 위해 DataFrame groupByGroupingSets 메서드와 함께 사용할 수 있는 GroupingSets 클래스를 추가했습니다.

  • 스테이지에 파일을 업로드하고 스테이지에서 파일을 다운로드할 때 사용할 수 있는 새로운 FileOperation(session) 클래스를 추가했습니다.

  • 스테이지의 파일에서 테이블로 데이터를 로딩하는 copy_into_table() 메서드를 추가했습니다.

  • CASE 식에서 함수 whenotherwise 는 이제 Column 오브젝트 외에 Python 타입도 허용합니다.

  • UDF를 등록할 때 이제는 선택적으로 replace 매개 변수를 True 로 설정하여 기존 UDF를 같은 이름으로 덮어쓸 수 있습니다.

개선 사항

  • UDF는 이제 압축된 후에 서버에 업로드됩니다. 그러면 UDF가 약 10배 정도 작아지므로, 큰 ML 모델 파일을 사용할 때 도움이 될 수 있습니다.

  • UDF의 크기가 8,196바이트 미만일 때는 UDF가 스테이지에 업로드되는 대신 인라인 코드로 업로드됩니다.

버그 수정 사항

  • df.select(when(col("a") == 1, 4).otherwise(col("a"))), [Row(4), Row(2), Row(3)] 문에서 예외가 발생하는 문제를 수정했습니다.

  • DataFrame이 큰 로컬 데이터에서 생성될 때 df.toPandas() 에서 예외가 발생하는 문제를 수정했습니다.