Snowpark Python API 변경 사항¶
이 항목에서는 릴리스 버전에 대한 정보를 제공합니다.
이 항목의 내용:
버전 1.3.0(2023-03-28)¶
Snowpark 라이브러리 버전 1.3.0에는 몇 가지 새로운 기능이 도입되었습니다.
새로운 기능¶
functions.initcap()
에서delimiters
매개 변수에 대한 지원을 추가했습니다.가변적인 개수의 입력 식을 허용하도록
functions.hash()
에 대한 지원을 추가했습니다.런타임 구성의 가변성을 가져오거나 설정하거나 확인하기 위해 API
Session.conf
를 추가했습니다.case_sensitive
매개 변수를 사용하여DataFrame.collect
의Row
결과에서 대소문자 구분 관리를 위한 지원 기능을 추가했습니다.snowflake.snowpark.types.StructType
에 대한 인덱서 지원을 추가했습니다.SQL 예외에 대한 오류 로깅을 선택적으로 비활성화하기 위해 키워드 인자
log_on_exception
을Dataframe.collect
및Dataframe.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 세션을 생성할 때
paramstyle
을qmark
로 덮어쓰는 버그를 수정했습니다.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을 참조하십시오.
함수 호출
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을 생성하는 데 도움이 되므로 이 기능을 사용하는 것이 좋습니다.
버전 1.0.0¶
Snowpark 라이브러리 버전 1.0.0에는 몇 가지 새로운 기능이 도입되었습니다.
버전 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()
는 이제 가변 길이 인자를 받습니다.겹치는 열의 이름을 편리하게 바꿀 수 있도록 매개 변수
lsuffix
와rsuffix
를DataFrame.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_display
를False
로 전달합니다.이제 열에 대해
table_function.TableFunctionCall
형식의 매개 변수를 사용하는DataFrame.select()
,DataFrame.with_column()
,DataFrame.with_columns()
에서 테이블 함수 호출을 위한 지원을 추가했습니다.Snowflake 테이블의 내용을 Pandas DataFrame의 내용으로 덮어쓸 수 있도록 키워드 인자
overwrite
를session.write_pandas()
에 추가했습니다.추가 모드에서 테이블에 데이터를 삽입할 때 일치 규칙을 지정할 수 있도록 키워드 인자
column_order
를df.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.Dateframe
의collect
,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.Table
의update
,delete
,merge
.클래스
snowflake.snowpark.DataFrameWriter
의save_as_table
,copy_into_location
.클래스
snowflake.snowpark.DataFrameStatFunctions
의approx_quantile
,statement_params
,cov
,crosstab
.클래스
snowflake.snowpark.udf.UDFRegistration
의register
,register_from_file
.클래스
snowflake.snowpark.udtf.UDTFRegistration
의register
,register_from_file
.클래스
snowflake.snowpark.stored_procedure.StoredProcedureRegistration
의register
,register_from_file
.snowflake.snowpark.functions
의udf
,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과False
를None
으로 잘못 변환하는 버그를 수정했습니다.대규모 로컬 데이터 세트를 사용하여
session.create_dataframe()
을 호출하면 임시 테이블이 두 번 생성되는 버그를 수정했습니다.function.trim()
의 정의를 SQL 함수 정의에 맞춰 조정했습니다.Python 시스템 정의(기본 제공 함수)
sum
vs. Snowparkfunction.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 by
와order 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 데이터에 대한 타입 힌트로 사용할 타입
Geography
와Variant
를snowflake.snowpark.types
에 추가했습니다.Geography geoJSON 데이터에 대한 지원을 추가했습니다.
테이블 작업을 위한
DataFrame
의 하위 클래스인Table
을 추가했습니다.메서드
update
와delete
는 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") > 2
는TypeError
를 발생시킵니다.(col("a") > 1) & (col("b") > 2)
를 대신 사용하십시오.PutResult
와GetResult
를 하위 클래스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
를 수행하기 위해 DataFramegroupByGroupingSets
메서드와 함께 사용할 수 있는GroupingSets
클래스를 추가했습니다.스테이지에 파일을 업로드하고 스테이지에서 파일을 다운로드할 때 사용할 수 있는 새로운
FileOperation(session)
클래스를 추가했습니다.스테이지의 파일에서 테이블로 데이터를 로딩하는
copy_into_table()
메서드를 추가했습니다.CASE 식에서 함수
when
및otherwise
는 이제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()
에서 예외가 발생하는 문제를 수정했습니다.