|
1 | 1 | # Release History |
2 | 2 |
|
3 | | -## 1.39.0 (YYYY-MM-DD) |
| 3 | +## 1.40.0 (YYYY-MM-DD) |
4 | 4 |
|
5 | 5 | ### Snowpark Python API Updates |
6 | 6 |
|
| 7 | +#### Bug Fixes |
| 8 | + |
| 9 | +- Fixed a bug that `DataFrame.limit()` fail if there is parameter binding in the executed SQL. |
| 10 | + |
| 11 | +#### New Features |
| 12 | + |
| 13 | +- Added a new module `snowflake.snowpark.secrets` that provides Python wrappers for accessing Snowflake Secrets within Python UDFs and stored procedures that execute inside Snowflake. |
| 14 | + - `get_generic_secret_string` |
| 15 | + - `get_oauth_access_token` |
| 16 | + - `get_secret_type` |
| 17 | + - `get_username_password` |
| 18 | + - `get_cloud_provider_token` |
| 19 | + |
| 20 | +- Added support for the following scalar functions in `functions.py`: |
| 21 | + - `array_remove_at` |
| 22 | + - `as_boolean` |
| 23 | + - `booland` |
| 24 | + - `boolnot` |
| 25 | + - `boolor` |
| 26 | + - `boolor_agg` |
| 27 | + - `boolxor` |
| 28 | + - `chr` |
| 29 | + - `decode` |
| 30 | + - `div0null` |
| 31 | + - `dp_interval_high` |
| 32 | + - `dp_interval_low` |
| 33 | + - `greatest_ignore_nulls` |
| 34 | + - `h3_cell_to_boundary` |
| 35 | + - `h3_cell_to_children` |
| 36 | + - `h3_cell_to_children_string` |
| 37 | + - `h3_cell_to_parent` |
| 38 | + - `h3_cell_to_point` |
| 39 | + - `h3_compact_cells` |
| 40 | + - `h3_compact_cells_strings` |
| 41 | + - `h3_coverage` |
| 42 | + - `h3_coverage_strings` |
| 43 | + - `h3_get_resolution` |
| 44 | + - `h3_grid_disk` |
| 45 | + - `h3_grid_distance` |
| 46 | + - `h3_int_to_string` |
| 47 | + - `h3_polygon_to_cells` |
| 48 | + - `h3_polygon_to_cells_strings` |
| 49 | + - `h3_string_to_int` |
| 50 | + - `h3_try_polygon_to_cells_strings` |
| 51 | + - `hex_decode_binary` |
| 52 | + - `last_query_id` |
| 53 | + - `last_transaction` |
| 54 | + - `least_ignore_nulls` |
| 55 | + - `nullif` |
| 56 | + - `nvl2` |
| 57 | + - `regr_valx` |
| 58 | + |
| 59 | + |
| 60 | +### Snowpark pandas API Updates |
| 61 | + |
7 | 62 | #### New Features |
| 63 | +- Added support for `DataFrame.query` for dataframes with single-level indexes. |
8 | 64 |
|
| 65 | +#### Improvements |
| 66 | + |
| 67 | +- Hybrid execution mode is now enabled by default. Certain operations on smaller data will now automatically execute in native pandas in-memory. Use `from modin.config import AutoSwitchBackend; AutoSwitchBackend.disable()` to turn this off and force all execution to occur in Snowflake. |
| 68 | +- Added a session parameter `pandas_hybrid_execution_enabled` to enable/disable hybrid execution as an alternative to using `AutoSwitchBackend`. |
| 69 | +- Removed an unnecessary `SHOW OBJECTS` query issued from `read_snowflake` under certain conditions. |
| 70 | + |
| 71 | +## 1.39.0 (2025-09-17) |
| 72 | + |
| 73 | +### Snowpark Python API Updates |
| 74 | + |
| 75 | +#### New Features |
| 76 | + |
| 77 | +- Added support for unstructured data engineering in Snowpark, powered by Snowflake AISQL and Cortex functions: |
| 78 | + - `DataFrame.ai.complete`: Generate per-row LLM completions from prompts built over columns and files. |
| 79 | + - `DataFrame.ai.filter`: Keep rows where an AI classifier returns TRUE for the given predicate. |
| 80 | + - `DataFrame.ai.agg`: Reduce a text column into one result using a natural-language task description. |
| 81 | + - `RelationalGroupedDataFrame.ai_agg`: Perform the same natural-language aggregation per group. |
| 82 | + - `DataFrame.ai.classify`: Assign single or multiple labels from given categories to text or images. |
| 83 | + - `DataFrame.ai.similarity`: Compute cosine-based similarity scores between two columns via embeddings. |
| 84 | + - `DataFrame.ai.sentiment`: Extract overall and aspect-level sentiment from text into JSON. |
| 85 | + - `DataFrame.ai.embed`: Generate VECTOR embeddings for text or images using configurable models. |
| 86 | + - `DataFrame.ai.summarize_agg`: Aggregate and produce a single comprehensive summary over many rows. |
| 87 | + - `DataFrame.ai.transcribe`: Transcribe audio files to text with optional timestamps and speaker labels. |
| 88 | + - `DataFrame.ai.parse_document`: OCR/layout-parse documents or images into structured JSON. |
| 89 | + - `DataFrame.ai.extract`: Pull structured fields from text or files using a response schema. |
| 90 | + - `DataFrame.ai.count_tokens`: Estimate token usage for a given model and input text per row. |
| 91 | + - `DataFrame.ai.split_text_markdown_header`: Split Markdown into hierarchical header-aware chunks. |
| 92 | + - `DataFrame.ai.split_text_recursive_character`: Split text into size-bounded chunks using recursive separators. |
| 93 | + - `DataFrameReader.file`: Create a DataFrame containing all files from a stage as FILE data type for downstream unstructured data processing. |
9 | 94 | - Added a new datatype `YearMonthIntervalType` that allows users to create intervals for datetime operations. |
10 | 95 | - Added a new function `interval_year_month_from_parts` that allows users to easily create `YearMonthIntervalType` without using SQL. |
11 | 96 | - Added a new datatype `DayTimeIntervalType` that allows users to create intervals for datetime operations. |
| 97 | +- Added a new function `interval_day_time_from_parts` that allows users to easily create `DayTimeIntervalType` without using SQL. |
12 | 98 | - Added support for `FileOperation.list` to list files in a stage with metadata. |
13 | 99 | - Added support for `FileOperation.remove` to remove files in a stage. |
| 100 | +- Added an option to specify `copy_grants` for the following `DataFrame` APIs: |
| 101 | + - `create_or_replace_view` |
| 102 | + - `create_or_replace_temp_view` |
| 103 | + - `create_or_replace_dynamic_table` |
14 | 104 | - Added a new function `snowflake.snowpark.functions.vectorized` that allows users to mark a function as vectorized UDF. |
15 | 105 | - Added support for parameter `use_vectorized_scanner` in function `Session.write_pandas()`. |
16 | 106 | - Added support for the following scalar functions in `functions.py`: |
|
29 | 119 |
|
30 | 120 | #### Deprecations |
31 | 121 |
|
| 122 | +- Deprecated warnings will be triggered when using snowpark-python with Python 3.9. For more details, please refer to https://docs.snowflake.com/en/developer-guide/python-runtime-support-policy. |
| 123 | + |
32 | 124 | #### Dependency Updates |
33 | 125 |
|
34 | 126 | #### Improvements |
|
38 | 130 | - Added a new option `cacheResult` to `DataFrameReader.xml` that allows users to cache the result of the XML reader to a temporary table after calling `xml`. It helps improve performance when subsequent operations are performed on the same DataFrame. |
39 | 131 |
|
40 | 132 | ### Snowpark pandas API Updates |
| 133 | +- Added support for `DataFrame.eval()` for dataframes with single-level indexes. |
41 | 134 |
|
42 | 135 | #### New Features |
43 | 136 |
|
44 | 137 | #### Improvements |
45 | 138 |
|
46 | | -- Hybrid execution mode is now enabled by default. Certain operations on smaller data will now automatically execute in native pandas in-memory. Use `from modin.config import AutoSwitchBackend; AutoSwitchBackend.disable()` to turn this off and force all execution to occur in Snowflake. |
47 | 139 | - Downgraded to level `logging.DEBUG - 1` the log message saying that the |
48 | 140 | Snowpark `DataFrame` reference of an internal `DataFrameReference` object |
49 | 141 | has changed. |
|
54 | 146 | - The following operations are currently supported and can benefit from the optimization: `read_snowflake`, `repr`, `loc`, `reset_index`, `merge`, and binary operations. |
55 | 147 | - If a lazy object (e.g., DataFrame or Series) depends on a mix of supported and unsupported operations, the optimization will not be used. |
56 | 148 | - Updated the error message for when Snowpark pandas is referenced within apply. |
| 149 | +- Added a session parameter `dummy_row_pos_optimization_enabled` to enable/disable dummy row position optimization in faster pandas. |
57 | 150 |
|
58 | 151 | #### Dependency Updates |
59 | 152 |
|
|
0 commit comments