1.33.0 (2025-06-19)
Snowpark Python API Updates
New Features
- Added support for MySQL in
DataFrameWriter.dbapi
(PrPr) for both Parquet and UDTF-based ingestion. - Added support for PostgreSQL in
DataFrameReader.dbapi
(PrPr) for both Parquet and UDTF-based ingestion. - Added support for Databricks in
DataFrameWriter.dbapi
(PrPr) for UDTF-based ingestion. - Added support to
DataFrameReader
to enable use ofPATTERN
when reading files withINFER_SCHEMA
enabled. - Added support for the following AI-powered functions in
functions.py
:ai_complete
ai_similarity
ai_summarize_agg
(originallysummarize_agg
)- different config options for
ai_classify
- Added support for more options when reading XML files with a row tag using
rowTag
option:- Added support for removing namespace prefixes from col names using
ignoreNamespace
option. - Added support for specifying the prefix for the attribute column in the result table using
attributePrefix
option. - Added support for excluding attributes from the XML element using
excludeAttributes
option. - Added support for specifying the column name for the value when there are attributes in an element that has no child elements using
valueTag
option. - Added support for specifying the value to treat as a
null
value usingnullValue
option. - Added support for specifying the character encoding of the XML file using
charset
option. - Added support for ignoring surrounding whitespace in the XML element using
ignoreSurroundingWhitespace
option.
- Added support for removing namespace prefixes from col names using
- Added support for parameter
return_dataframe
inSession.call
, which can be used to set the return type of the functions to aDataFrame
object. - Added a new argument to
Dataframe.describe
calledstrings_include_math_stats
that triggersstddev
andmean
to be calculated for String columns. - Added support for retrieving
Edge.properties
when retrieving lineage fromDGQL
inDataFrame.lineage.trace
. - Added a parameter
table_exists
toDataFrameWriter.save_as_table
that allows specifying if a table already exists. This allows skipping a table lookup that can be expensive.
Bug Fixes
- Fixed a bug in
DataFrameReader.dbapi
(PrPr) where thecreate_connection
defined as local function was incompatible with multiprocessing. - Fixed a bug in
DataFrameReader.dbapi
(PrPr) where databricksTIMESTAMP
type was converted to SnowflakeTIMESTAMP_NTZ
type which should beTIMESTAMP_LTZ
type. - Fixed a bug in
DataFrameReader.json
where repeated reads with the same reader object would create incorrectly quoted columns. - Fixed a bug in
DataFrame.to_pandas()
that would drop column names when converting a dataframe that did not originate from a select statement. - Fixed a bug that
DataFrame.create_or_replace_dynamic_table
raises error when the dataframe contains a UDTF andSELECT *
in UDTF not being parsed correctly. - Fixed a bug where casted columns could not be used in the values-clause of in functions.
Improvements
- Improved the error message for
Session.write_pandas()
andSession.create_dataframe()
when the input pandas DataFrame does not have a column. - Improved
DataFrame.select
when the arguments contain a table function with output columns that collide with columns of current dataframe. With the improvement, if user provides non-colliding columns indf.select("col1", "col2", table_func(...))
as string arguments, then the query generated by snowpark client will not raise ambiguous column error. - Improved
DataFrameReader.dbapi
(PrPr) to use in-memory Parquet-based ingestion for better performance and security. - Improved
DataFrameReader.dbapi
(PrPr) to useMATCH_BY_COLUMN_NAME=CASE_SENSITIVE
in copy into table operation.
Snowpark Local Testing Updates
New Features
- Added support for snow urls (snow://) in local file testing.
Bug Fixes
- Fixed a bug in
Column.isin
that would cause incorrect filtering on joined or previously filtered data. - Fixed a bug in
snowflake.snowpark.functions.concat_ws
that would cause results to have an incorrect index.
Snowpark pandas API Updates
Dependency Updates
- Updated
modin
dependency constraint from 0.32.0 to >=0.32.0, <0.34.0. The latest version tested with Snowpark pandas ismodin
0.33.1.
New Features
- Added support for Hybrid Execution (PrPr). By running
from modin.config import AutoSwitchBackend; AutoSwitchBackend.enable()
, Snowpark pandas will automatically choose whether to run certain pandas operations locally or on Snowflake. This feature is disabled by default.
Improvements
- Set the default value of the
index
parameter toFalse
forDataFrame.to_view
,Series.to_view
,DataFrame.to_dynamic_table
, andSeries.to_dynamic_table
. - Added
iceberg_version
option to table creation functions. - Reduced query count for many operations, including
insert
,repr
, andgroupby
, that previously issued a query to retrieve the input data's size.
Bug Fixes
- Fixed a bug in
Series.where
when theother
parameter is an unnamedSeries
.