Notes de version de la bibliothèque Snowpark pour Python pour 2025¶
Cet article contient les notes de version Snowpark Library for Python, y compris les éléments suivants, le cas échéant :
Changements de comportement
Nouvelles fonctionnalités
Corrections de bogues pour les clients
Snowflake utilise la version sémantique pour les mises à jour Snowpark Library for Python.
Voir Guide du développeur Snowpark pour Python pour la documentation.
Avertissement
Python 3.8 ayant atteint sa fin de vie, des avertissements d’obsolescence seront déclenchés lors de l’utilisation de snowpark-python avec Python 3.8. Pour plus d’informations, voir Prise en charge de l’environnement d’exécution Snowflake Python. Snowpark Python 1.24.0 sera la dernière version du client et du serveur à prendre en charge Python 3.8, conformément à la politique d’Anaconda. Passez vos objets Python 3.8 existants vers la version Python 3.9 ou une version plus récente.
Version 1.37.0 (18 août 2025)¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge des
xpath`fonctions suivantes dans :code:`functions.py
:xpath
xpath_string
xpath_boolean
xpath_int
xpath_float
xpath_double
xpath_long
xpath_short
Ajout de la prise en charge du paramètre
use_vectorized_scanner
dans la fonctionSession.write_arrow()
.Le profileur DataFrame ajoute les informations suivantes à chaque requête :
describe query time
,execution time
etsql query text
. Pour consulter ces informations, appelezsession.dataframe_profiler.enable()
et appelezget_execution_profile
sur un DataFrame.Ajout de la prise en charge de
DataFrame.col_ilike
.Ajout de la prise en charge des appels de procédures stockées non bloquants qui renvoient les objets
AsyncJob
.Ajout du paramètre
block: bool = True
àSession.call()
. Siblock=False
, renvoie unAsyncJob
au lieu de bloquer jusqu’à la fin.Ajout du paramètre
block: bool = True
àStoredProcedure.__call__()
pour la prise en charge asynchrone des procédures stockées nommées et anonymes.Ajout de
Session.call_nowait()
qui est équivalent àSession.call(block=False)
.
Corrections de bogues¶
Correction d’un bogue dans la zone de préparation d’optimisation CTE où
deepcopy
des plans internes entraînerait un pic de mémoire lorsqu’un DataFrame est créé localement en utilisantsession.create_dataframe()
et engendrerait de grandes quantités de données d’entrée.Correction d’un bogue dans
DataFrameReader.parquet
où l’optionignore_case
dans le:code:infer_schema_options
n’était pas respectée.Correction d’un bogue à cause duquel
to_pandas()
avait un format de nom de colonne différent lorsque le format de résultat de la requête est défini surJSON
etARROW
.
Dépréciations¶
pkg_resources
rendu obsolète.
Mises à jour des dépendances¶
Ajout d’une dépendance sur
protobuf<6.32
Mises à jour de l’API pandas Snowpark¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge du transfert efficace des données entre Snowflake et <Ray avec la méthode
DataFrame.set_backend
. La version installée demodin
doit être au moins 0.35.0, etray
doit être installé.
Mises à jour des dépendances¶
Mise à jour des versions de modin prises en charge vers >=0.34.0, = 0,33.0 et <0.35.0.
Ajout de la prise en charge de pandas 2.3 lorsque la version de modin installée est 0.35.0 ou supérieure.
Corrections de bogues¶
Correction d’un problème en mode d’exécution hybride (Avant-première privée) où
pd.to_datetime
etpd.to_timedelta
déclenchaient de manière inattendueIndexError
.Correction d’un bogue à cause duquel
pd.explain_switch
déclencheIndexError
ou renvoieNone
s’il est appelé avant que toute opération de basculement potentielle soit effectuée.
Version 1.36.0 (5 août 2025)¶
Nouvelles fonctionnalités¶
Session.create_dataframe
accepte désormais des arguments de type mot-clé qui sont transmis dans l’appel interne àSession.write_pandas
ouSession.write_arrow
lors de la création d’un DataFrame depuis un pandas DataFrame ou une tablepyarrow
.Ajout de nouvelles APIs pour AsyncJob :
AsyncJob.is_failed()
renvoie un valeur bool indiquant si la tâche est en échec. Peut être utilisé en combinaison avecAsyncJob.is_done()
pour déterminer si une tâche est terminée et erronée.AsyncJob.status()
renvoie une chaîne représentant l’état actuel de la requête (par exemple, « RUNNING », « SUCCESS », « FAILED_WITH_ERROR ») pour une surveillance détaillée sans appelerresult()
.
Ajout d’un profileur DataFrame. Pour l’utiliser, vous pouvez appeler
get_execution_profile()
sur le DataFrame souhaité. Ce profileur rend compte des requêtes exécutées pour évaluer un DataFrame et les statistiques sur chacun des opérateurs de requête. Il s’agit actuellement d’une fonctionnalité expérimentale.Ajout de la prise en charge des fonctions suivantes dans
functions.py
:ai_sentiment
Mise à jour de l’interface pour la fonctionnalité expérimentale
context.configure_development_features
. Toutes les fonctions de développement sont désactivées par défaut, sauf si elles sont explicitement activées par l’utilisateur.
Améliorations¶
Améliorations de l’estimation des lignes de l’exécution hybride et réduction des appels exigeants.
Ajout d’une nouvelle variable de configuration pour contrôler les coûts de transfert hors de Snowflake lors de l’utilisation d’une exécution hybride.
Ajout de la prise en charge de la création des UDFs/UDTFs permanentes et immuables avec DataFrame/Série/GroupBy.apply, mappent et transforment en transmettant l’argument de mot-clé
snowflake_udf_params
.Ajout de la prise en charge de
mapping np.unique
dans DataFrame et Entrées de séries en utilisantpd.unique
.
Corrections de bogues¶
Correction d’un problème où le plugin Snowpark pandas se désactivait inconditionnellement
AutoSwitchBackend
même lorsque les utilisateurs l’avaient explicitement configuré de manière programmatique ou avec des variables d’environnement.
Version 1.35.0 (24 juillet 2025)¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge des fonctions suivantes dans
functions.py
:ai_embed
try_parse_json
Améliorations¶
Amélioration du paramètre
query
dansDataFrameReader.dbapi
(Avant-première privée) pour que les parenthèses ne soient pas nécessaires autour de la requête.Amélioration de l’expérience d’erreur dans
DataFrameReader.dbapi
(Avant-première privée) pour les exceptions levées lors de l’inférence du schéma de la source de données cible.
Corrections de bogues¶
Correction d’un bogue dans
DataFrameReader.dbapi
(Avant-première privée) qui fait échouerdbapi
avec le code de sortie de processus 1 dans une procédure stockée Python.Correction d’un bogue dans
DataFrameReader.dbapi
(Avant-première privée) oùcustom_schema
accepte un schéma illégal.Correction d’un bogue dans
DataFrameReader.dbapi
(Avant-première privée) oùcustom_schema
ne fonctionne pas lors de la connexion à Postgres et MySQL.Correction d’un bogue dans l’inférence de schéma qui l’entraînait à échouer pour les zones de préparation externes.
Mises à jour des tests locaux Snowpark¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge de tests locaux pour la lecture de fichiers avec
SnowflakeFile
. La prise en charge des tests utilise des chemins de fichiers locaux, la sémantique Snow URL (snow://...
), des zones de préparation de cadre de test local et des zones de préparation Snowflake (@stage/file_path
).
Version 1.34.0 (14 juillet 2025)¶
Nouvelles fonctionnalités¶
Ajout d’une nouvelle option
TRY_CAST
dansDataFrameReader
. LorsqueTRY_CAST
estTrue
, les colonnes sont groupées dans unTRY_CAST
au lieu d’une conversion matérielle lors du chargement des données.Ajout d’une nouvelle option
USE_RELAXED_TYPES
auINFER_SCHEMA_OPTIONS
deDataFrameReader
. Lorsqu’elle est définie surTrue
, cette option convertit toutes les chaînes en chaînes de longueur maximale et tous les types numériques enDoubleType
.Ajout d’améliorations de débogabilité pour valider immédiatement les métadonnées des schémas de dataframe. Activez-la en utilisant
snowflake.snowpark.context.configure_development_features()
.Ajout d’une nouvelle fonction
snowflake.snowpark.dataframe.map_in_pandas
qui permet aux utilisateurs de mapper une fonction à travers un dataframe. La fonction de mappage prend un itérateur de pandas DataFrames en entrée et en fournit un en sortie.Ajout d’un
ttl cache
pour décrire les requêtes. Les requêtes répétées dans un intervalle de 15 secondes utilisent la valeur mise en cache plutôt que d’interroger Snowflake.Ajout d’un paramètre
fetch_with_process
dansDataFrameReader.dbapi
(PrPr) pour activer le multitraitement pour la récupération de données en parallèle dans l’ingestion locale. Par défaut, l’ingestion locale utilise le multithreading. Le multitraitement peut améliorer les performances pour les tâches liées aux CPU, telles que la génération de fichiers Parquet.Ajout d’une nouvelle fonction
snowflake.snowpark.functions.model
qui permet aux utilisateurs de nommer les méthodes d’un modèle.
Améliorations¶
Ajout de la prise en charge de la validation des lignes à l’aide d’un schéma XSD utilisant l’option
rowValidationXSDPath
lors de la lecture de fichiers XML avec une balise de ligne utilisant l’optionrowTag
.Amélioration de la génération de SQL pour que
session.table().sample()
génère une instruction SQL.Ajout de la prise en charge de l’expression de colonne complexe comme entrée pour
functions.explode
.Ajout d’améliorations de débogabilité pour montrer à quelles lignes Python une erreur de compilation SQL correspond. Activez-le en utilisant
snowflake.snowpark.context.configure_development_features()
. Cette fonctionnalité dépend également des collections AST à activer dans la session, ce qui peut être fait en utilisantsession.ast_enabled = True
.Définissez
enforce_ordering=True
lors de l’appel deto_snowpark_pandas():code:
à partir d’un DataFrame Snowpark contenant des requêtes DML/DDL au lieu de renvoyer uneNotImplementedError
.
Corrections de bogues¶
Correction d’un bogue causé par une validation redondante lors de la création d’une table Iceberg.
Correction d’un bogue dans
DataFrameReader.dbapi
(Avant-première privée), où la fermeture du curseur ou de la connexion pouvait générer de manière inattendue une erreur et mettre fin au programme.Correction d’erreurs de colonnes ambiguës lors de l’utilisation de fonctions de table dans
DataFrame.select()
dont les colonnes de sortie correspondent aux colonnes d’entrée du DataFrame. Cette amélioration fonctionne lorsque les colonnes DataFrame sont fournies sous la forme d’objetsColumn
.Correction d’un bogue où le fait d’avoir une valeur NULL dans une colonne avec desDecimalTypes convertissait la colonne en FloatTypes, entraînant une perte de précision.
Mises à jour des tests locaux Snowpark¶
Correction d’un bogue lors du traitement des fonctions fenêtrées qui entraînait une indexation incorrecte des résultats.
Lorsqu’un numérique scalaire sera transmis à
fillna
, Snowflake ignorera les colonnes non numériques au lieu de produire une erreur.
Mises à jour de l’API pandas Snowpark¶
Nouvelles fonctionnalités¶
Prise en charge de
DataFrame.to_excel
etSeries.to_excel
.Prise en charge de
pd.read_feather
,pd.read_orc
etpd.read_stata
.Ajout de la prise en charge de
pd.explain_switch()
pour renvoyer des informations de débogage sur les décisions d’exécution hybride.Assistance
pd.read_snowflake
lorsque le backend global modin estPandas
.Prise en charge de
pd.to_dynamic_table
,pd.to_iceberg
etpd.to_view
.
Améliorations¶
Ajout de la télémétrie modin sur les appels API et les compartiments de moteur hybrides.
Afficher des messages d’erreur plus utiles aux utilisateurs de Snowflake Notebook lorsque les versions
modin
oupandas
ne correspondent pas à nos exigences.Ajout d’une protection des types de données aux fonctions de coûts pour le mode d’exécution hybride (Avant-première privée) qui vérifie la compatibilité des types de données.
Ajout du basculement automatique vers le backend pandas en mode d’exécution hybride (Avant-première privée) pour de nombreuses méthodes qui ne sont pas directement implémentées dans pandas on Snowflake.
Définition du
type
et d’autres champs standard pour pandas sur la télémétrie Snowflake.
Mises à jour des dépendances¶
Ajout de
tqdm
etipywidgets
en tant que dépendances afin que des barres de progression apparaissent lorsque l’utilisateur passe d’un backend à un autre.Mise à jour des versions
modin
prises en charges vers >=0.33.0 et <0.35.0 (was previously >= 0.32.0 et <0.34.0).
Corrections de bogues¶
Correction d’un bogue dans le mode d’exécution hybride (Avant-première privée) où certaines opérations de séries généraient des
TypeError: numpy.ndarray object is not callable
.Correction d’un bogue dans le mode d’exécution hybride (Avant-première privée) où l’appel d’opérations
numpy
commenp.where
sur les objets modins avec le backend Pandas déclenchait uneAttributeError
. Ce correctif nécessite la version 0.34.0 demodin
ou ultérieure.Correction d’un problème dans
df.melt
où les valeurs résultantes possédaient un suffixe supplémentaire appliqué.
Version 1.33.0 (2025-06-19)¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge de MySQL dans
DataFrameWriter.dbapi
(Avant-première privée) pour Parquet et l’ingestion basée sur les UDTF.Ajout de la prise en charge de PostgreSQL dans
DataFrameReader.dbapi
(Avant-première privée) pour Parquet et l’ingestion basée sur les UDTF.Ajout de la prise en charge de Databricks dans
DataFrameWriter.dbapi
(Avant-première privée) pour l’ingestion basée sur les UDTF, se renforçant avec d’autres mentions de la prise en charge de Databricks.Ajout de la prise en charge à
DataFrameReader
pour activer l’utilisation dePATTERN
lors de la lecture de fichiers oùINFER_SCHEMA
est activé.Ajout de la prise en charge des fonctions suivantes optimisées par l’AI dans:code:
functions.py
:ai_complete
ai_similarity
ai_summarize_agg
(à l’originesummarize_agg
)différentes options de configuration pour
ai_classify
Ajout de la prise en charge de plus d’options lors de la lecture de fichiers XML avec une balise de ligne utilisant l’option
rowTag
.Ajout de la prise en charge de la suppression des préfixes d’espace de noms des noms de colonnes à l’aide de l’option
ignoreNamespace
.Ajout de la prise en charge de la spécification du préfixe de la colonne d’attributs dans la table de résultats à l’aide de l’option
attributePrefix
.Ajout de la prise en charge de l’exclusion des attributs de l’élément XML utilisant l’option
excludeAttributes
.Ajout de la prise en charge de la spécification du nom de colonne pour la valeur lorsqu’il y a des attributs dans un élément qui n’a pas d’éléments enfants utilisant l’option
valueTag
.Ajout de la prise en charge de la spécification de la valeur à traiter comme une valeur nulle à l’aide de l’option
nullValue
.Ajout de la prise en charge de la spécification de l’encodage des caractères pour le fichier XML à l’aide de l’option
charset
.Ajout de la prise en charge du fait d’ignorer les espaces blancs environnants dans l’élément XML à l’aide de l’option
ignoreSurroundingWhitespace
.
Ajout de la prise en charge du paramètre
return_dataframe
dansSession.call
, qui peut être utilisé pour définir le type de renvoi des fonctions sur un objetDataFrame
.Ajout d’un nouvel argument à
Dataframe.describe
appeléstrings_include_math_stats
, qui déclenche le calculstddev
etmean
pour les colonnes de type chaîne.Ajout de la prise en charge de la récupération des
Edge.properties
lors de la récupération de la lignée deDGQL
dansDataFrame.lineage.trace
.Ajout d’un paramètre
table_exists
dansDataFrameWriter.save_as_table
qui permet de spécifier si une table existe déjà. Cela permet d’ignorer une recherche dans la table qui peut s’avérer coûteuse.
Corrections de bogues¶
Correction d’un bogue dans
DataFrameReader.dbapi
(Avant-première privée) où lecreate_connection
définie comme fonction locale était incompatible avec le multitraitement.Correction d’un bogue dans
DataFrameReader.dbapi
(Avant-première privée) où le type DatabricksTIMESTAMP
était converti en type SnowflakeTIMESTAMP_NTZ
, lequel devrait être de typeTIMESTAMP_LTZ
.Correction d’un bogue dans
DataFrameReader.json
où des lectures répétées avec le même objet de lecteur créaient des colonnes mal citées.Correction d’un bogue dans
DataFrame.to_pandas()
qui entraînait l’abandon des noms de colonnes lors de la conversion d’un DataFrame qui ne provient pas d’une instruction de sélection.Correction d’un bogue à cause duquel
DataFrame.create_or_replace_dynamic_table
signalait une erreur lorsque le DataFrame contenait une UDTF etSELECT *
dans la UDTF n’était pas analysé correctement.Correction d’un bogue où les colonnes converties ne pouvaient pas être utilisées dans la clause valeurs des fonctions.
Améliorations¶
Amélioration du message d’erreur pour
Session.write_pandas()
etSession.create_dataframe()
lorsque le pandas d’entrée DataFrame n’a pas de colonne.Amélioration de
DataFrame.select
lorsque les arguments contiennent une fonction de table avec des colonnes de sortie qui coïncident avec les colonnes du DataFrame actuel. Avec l’amélioration, si l’utilisateur fournit des colonnes non coïncidentes dansdf.select("col1", "col2", table_func(...))
comme arguments de chaîne, la requête générée par le client Snowpark ne lèvera pas d’erreur de colonne ambiguë.Amélioration de
DataFrameReader.dbapi
(Avant-première privée) pour utiliser l’ingestion en mémoire basée sur Parquet et améliorer les performances et la sécurité.Amélioration de
DataFrameReader.dbapi
(Avant-première privée) pour utiliserMATCH_BY_COLUMN_NAME=CASE_SENSITIVE
dans l’opération de copie dans la table.
Mises à jour des tests locaux Snowpark¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge des URLs snow (
snow://
) dans le test de fichier local.
Corrections de bogues¶
Correction d’un bogue dans
Column.isin
qui entraînait un filtrage incorrect des données jointes ou précédemment filtrées.Correction d’un bogue dans :code:`snowflake.snowpark.functions.concat_ws`ce qui entraînait un index incorrect des résultats.
Mises à jour de l’API pandas Snowpark¶
Mises à jour des dépendances¶
Mise à jour de la contrainte de dépendance de
modin
de 0.32.0 à >=0.32.0, <0.34.0. La dernière version testée avec Snowpark pandas estmodin
0.33.1.
Nouvelles fonctionnalités¶
Ajout de la prise en charge de l’Exécution hybride (Avant-première privée). En exécutant
from modin.config import AutoSwitchBackend; AutoSwitchBackend.enable()
, pandas on Snowflake choisit automatiquement d’exécuter certaines opérations pandas localement ou sur Snowflake. Cette fonction est désactivée par défaut.
Améliorations¶
Définition de la valeur par défaut du paramètre
index
sur:code:False
pourDataFrame.to_view
,Series.to_view
,DataFrame.to_dynamic_table
etSeries.to_dynamic_table
.Ajout de l’option
iceberg_version
aux fonctions de création de table.Réduction du nombre de requêtes pour de nombreuses opérations, dont:code:
insert
,repr
etgroupby
, qui émettaient précédemment une requête pour récupérer la taille des données d’entrée.
Corrections de bogues¶
Correction d’un bogue dans
Series.where
lorsque le paramètreother
est unSeries
sans nom.
Version 1.32.0 (2025-05-15)¶
Améliorations¶
L’invocation des procédures du système Snowflake n’entraîne pas d’appel supplémentaire à
describe procedure
pour vérifier le type de retour de la procédure.Ajout de la prise en charge de
Session.create_dataframe()
avec l’URL de la zone de préparation et le type de donnéesFILE
.Prise en charge de différents modes de traitement des enregistrements XML corrompus lors de la lecture d’un fichier XML à l’aide de
session.read.option('mode', <mode>), option('rowTag', <tag_name>).xml(<stage_file_path>)
. Actuellement,PERMISSIVE
,DROPMALFORMED
etFAILFAST
sont pris en charge.Amélioration du message d’erreur du lecteur XML lorsque
ROWTAG
spécifié n’est pas trouvé dans le fichier.Amélioration de la génération de requêtes pour
Dataframe.drop
afin d’utiliserSELECT * EXCLUDE ()
pour exclure les colonnes supprimées. Pour activer cette fonction, définissezsession.conf.set("use_simplified_query_generation", True)
.Ajout de la prise en charge de
VariantType
àStructType.from_json
.
Corrections de bogues¶
Correction d’un bogue dans
DataFrameWriter.dbapi
(Aperçu privé) où les noms de colonnes unicode ou entre guillemets doubles dans les bases de données externes provoquent des erreurs parce qu’ils ne sont pas cités correctement.Correction d’un bogue où les champs nommés dans les données imbriquées de
OBJECT
pouvaient provoquer des erreurs lorsqu’ils contenaient des espaces.
Mises à jour des tests locaux Snowpark¶
Corrections de bogues¶
Correction d’un bogue dans
snowflake.snowpark.functions.rank
qui ne respectait pas le sens du tri.Correction d’un bogue dans
snowflake.snowpark.functions.to_timestamp_*
qui provoquait des résultats incorrects sur les données filtrées.
Mises à jour de l’API pandas Snowpark¶
Nouvelles fonctionnalités¶
Prise en charge des valeurs dict dans
Series.str.get
,Series.str.slice
etSeries.str.__getitem__
(Series.str[...]
).Ajout de la prise en charge de
DataFrame.to_html
.Prise en charge de
DataFrame.to_string
etSeries.to_string
.Ajout de la prise en charge de la lecture de fichiers à partir de compartiments S3 à l’aide de
pd.read_csv
.
Améliorations¶
Faites de
iceberg_config
un paramètre obligatoire pourDataFrame.to_iceberg
etSeries.to_iceberg
.
Version 1.31.0 (2025-04-24)¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge de l’autorisation
restricted caller
de l’argumentexecute_as
dansStoredProcedure.register():code:
.Prise en charge des instructions de non-sélection dans
DataFrame.to_pandas()
.La prise en charge du paramètre
artifact_repository
a été ajoutée àSession.add_packages
,Session.add_requirements
,Session.get_packages
,Session.remove_package
etSession.clear_packages
.Ajout de la prise en charge de la lecture d’un fichier XML à l’aide d’une balise de ligne par
session.read.option('rowTag', <tag_name>).xml(<stage_file_path>)
(expérimental).Chaque enregistrement XML est extrait sous la forme d’une ligne distincte.
Chaque champ de cet enregistrement devient une colonne distincte de type
VARIANT
, qui peut faire l’objet d’une requête à l’aide de la notation par points, par exemplecol(a.b.c)
.
Ajout de mises à jour sur
DataFrameReader.dbapi
(PrPr) :Le paramètre
fetch_merge_count
a été ajouté pour optimiser les performances en fusionnant plusieurs données dans un seul fichier Parquet.Ajout de la prise en charge de Databricks.
Ajout de la prise en charge de l’ingestion avec Snowflake UDTF.
Ajout de la prise en charge des fonctions suivantes, activées par AI, dans
functions.py
(Aperçu privé) :prompt
ai_filter
(ajout de la prise en charge de la fonctionprompt()
et des fichiers image, et modification du nom du deuxième argument deexpr
àfile
)ai_classify
Améliorations¶
Changement de nom du paramètre
relaxed_ordering
enenforce_ordering
pourDataFrame.to_snowpark_pandas
. De même, la nouvelle valeur par défaut estenforce_ordering=False
, ce qui a l’effet inverse de la valeur par défaut précédente,relaxed_ordering=False
.Amélioration des performances de lecture de
DataFrameReader.dbapi
(PrPr) en définissant la valeur par défaut du paramètrefetch_size
sur 1000.Améliorez le message d’erreur pour l’erreur d’identificateur SQL non valide en suggérant les identificateurs potentiellement correspondants.
Réduction du nombre de requêtes de description émises lors de la création d’un DataFrame à partir d’une table Snowflake à l’aide de
session.table
.Amélioration des performances et de la précision de
DataFrameAnalyticsFunctions.time_series_agg()
.
Corrections de bogues¶
Correction d’un bogue dans
DataFrame.group_by().pivot().agg
lorsque la colonne pivot et la colonne agrégée sont identiques.Correction d’un bogue dans
DataFrameReader.dbapi
(PrPr) où une erreurTypeError
était soulevée lorsquecreate_connection
renvoyait un objet de connexion d’un type de pilote non pris en charge.Correction d’un bogue où l’appel à
df.limit(0)
ne s’appliquait pas correctement.Correction d’un bogue dans
DataFrameWriter.save_as_table
qui provoquait des erreurs dans les noms réservés lors de l’utilisation du mode append.
Dépréciations¶
Prise en charge obsolète de Python3.8.
Argument déprécié
sliding_interval
dansDataFrameAnalyticsFunctions.time_series_agg()
.
Mises à jour des tests locaux Snowpark¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge de l’expression Interval à
Window.range_between
.Ajout de la prise en charge de la fonction
array_construct
.
Corrections de bogues¶
Correction d’un bogue dans les tests locaux où le répertoire transitoire
__pycache__
était copié involontairement pendant l’exécution de la procédure stockée via l’importation.Correction d’un bogue dans les tests locaux qui créait des résultats incorrects pour les appels à
Column.like
.Correction d’un bogue dans les tests locaux qui faisait que
Column.getItem
etsnowpark.snowflake.functions.get
renvoyaientIndexError
au lieu denull
.Correction d’un bogue dans les tests locaux où l’appel à
df.limit(0)
ne s’appliquait pas correctement.Correction d’un bogue dans les tests locaux où un
Table.merge
dans une table vide provoquait une exception.
Mises à jour de l’API pandas Snowpark¶
Mises à jour des dépendances¶
Mise à jour de
modin
de 0.30.1 à 0.32.0.Ajout de la prise en charge de
numpy
2.0 et plus.
Nouvelles fonctionnalités¶
Prise en charge de
DataFrame.create_or_replace_view
etSeries.create_or_replace_view
.Prise en charge de
DataFrame.create_or_replace_dynamic_table
etSeries.create_or_replace_dynamic_table
.Prise en charge de
DataFrame.to_view
etSeries.to_view
.Prise en charge de
DataFrame.to_dynamic_table
etSeries.to_dynamic_table
.Ajout de la prise en charge de
DataFrame.groupby.resample
pour les agrégationsmax
,mean
,median
,min
etsum
.Ajout de la prise en charge de la lecture des fichiers de zone de préparation avec :
pd.read_excel
pd.read_html
pd.read_pickle
pd.read_sas
pd.read_xml
Prise en charge de
DataFrame.to_iceberg
etSeries.to_iceberg
.Prise en charge des valeurs dict dans
Series.str.len
.
Améliorations¶
Améliorez les performances de
DataFrame.groupby.apply
etSeries.groupby.apply
en évitant les étapes de pivot coûteuses.Ajout d’une estimation de la limite supérieure du nombre de lignes à
OrderedDataFrame
pour permettre un meilleur changement de moteur. Il pourrait en résulter une augmentation du nombre de requêtes.Changement de nom du paramètre
relaxed_ordering
enenforce_ordering
avecpd.read_snowflake
. En outre, la nouvelle valeur par défaut estenforce_ordering=False
, ce qui a l’effet inverse de la valeur par défaut précédente,relaxed_ordering=False
.
Corrections de bogues¶
Correction d’un bogue pour
pd.read_snowflake
lors de la lecture des tables d’icebergs etenforce_ordering=True
.
Version 1.30.0 (2025-03-27)¶
Nouvelles fonctionnalités¶
Prise en charge des garanties de cohérence et d’ordre relâchées dans
Dataframe.to_snowpark_pandas
en introduisant le paramètrerelaxed_ordering
.DataFrameReader.dbapi
(aperçu) accepte désormais une liste de chaînes pour le paramètresession_init_statement
, ce qui permet d’exécuter plusieurs instructions SQL lors de l’initialisation de la session.
Améliorations¶
Amélioration de la génération de requêtes pour
Dataframe.stat.sample_by
afin de générer une seule requête plate qui s’adapte bien à un large dictionnairefractions
par rapport à l’ancienne méthode qui consistait à créer une sous-requête UNION ALL pour chaque clé dansfractions
. Pour activer cette fonction, définissezsession.conf.set("use_simplified_query_generation", True)
.Amélioration des performances de
DataFrameReader.dbapi
en activant l’option vectorisée lors de la copie d’un fichier parquet dans une table.La génération de requêtes pour
DataFrame.random_split
a été améliorée de la manière suivante. Elles peuvent être activées en définissantsession.conf.set("use_simplified_query_generation", True)
:Suppression de la nécessité de
cache_result
dans l’implémentation interne de l’image de données d’entrée, ce qui permet une opération d’image de données paresseuse.L’argument
seed
se comporte désormais comme prévu, avec des résultats reproductibles sur plusieurs appels et sessions.
DataFrame.fillna
etDataFrame.replace
permettent désormais de faire rentrerint
etfloat
dans les colonnes deDecimal
siinclude_decimal
est défini surTrue
.Ajout de la documentation pour les UDF et les fonctions de procédure stockée suivantes dans
files.py
suite à leur disponibilité générale.SnowflakeFile.write
SnowflakeFile.writelines
SnowflakeFile.writeable
Changements mineurs dans la documentation pour
SnowflakeFile
etSnowflakeFile.open()
.
Corrections de bogues¶
Correction d’un bogue pour les fonctions suivantes qui soulevaient des erreurs.
.cast()
est appliqué à leur sortie :from_json
size
Mises à jour des tests locaux Snowpark¶
Corrections de bogues¶
Correction d’un bogue dans l’agrégation qui faisait que des groupes vides produisaient encore des lignes.
Correction d’un bogue dans
Dataframe.except_
qui provoquait la suppression incorrecte des lignes.Correction d’un bogue qui provoquait l’échec de
to_timestamp
lors de la conversion de colonnes filtrées.
Mises à jour de l’API pandas Snowpark¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge des valeurs de liste dans
Series.str.__getitem__
(Series.str[...]
).Ajout de la prise en charge des objets
pd.Grouper
dans les opérations GROUP BY. Lorsquefreq
est spécifié, les valeurs par défaut des argumentssort
,closed
,label
etconvention
sont prises en charge ;origin
est pris en charge lorsqu’il s’agit destart
oustart_day
.Prise en charge des garanties de cohérence et d’ordre relâchées dans
pd.read_snowflake
pour les sources de données nommées (par exemple, les tables et les vues) et les sources de données des requêtes, grâce à l’introduction du nouveau paramètrerelaxed_ordering
.
Améliorations¶
Émission d’un avertissement lorsque
QUOTED_IDENTIFIERS_IGNORE_CASE
est défini, demander à l’utilisateur de le désactiver.Amélioration de la manière dont un
index_label
manquant dansDataFrame.to_snowflake
etSeries.to_snowflake
est traité lorsqueindex=True
. Au lieu d’afficherValueError
, des étiquettes définies par le système sont utilisées pour les colonnes d’index.Amélioration du message d’erreur pour
groupby
,DataFrame
ouSeries.agg
lorsque le nom de la fonction n’est pas pris en charge.
Mises à jour des tests locaux Snowpark¶
Améliorations¶
Émission d’un avertissement lorsque
QUOTED_IDENTIFIERS_IGNORE_CASE
est défini, demander à l’utilisateur de le désactiver.Amélioration de la manière dont un
index_label
manquant dansDataFrame.to_snowflake
etSeries.to_snowflake
est traité lorsqueindex=True
. Au lieu d’afficherValueError
, des étiquettes définies par le système sont utilisées pour les colonnes d’index.Amélioration du message d’erreur pour
groupby or DataFrame or Series.agg
lorsque le nom de la fonction n’est pas pris en charge.
Version 1.29.1 (2025-03-12)¶
Corrections de bogues¶
Correction d’un bogue dans
DataFrameReader.dbapi
(aperçu privé) qui empêche l’utilisation dans les procédures stockées et les Snowbooks.
Version 1.29.0 (2025-03-05)¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge des fonctions suivantes, activées par AI, dans
functions.py
(Aperçu privé) :ai_filter
ai_agg
summarize_agg
Ajout de la prise en charge du nouveau type FILE SQL, avec les fonctions connexes suivantes dans
functions.py
(Aperçu privé) :
fl_get_content_type
fl_get_etag
fl_get_file_type
fl_get_last_modified
fl_get_relative_path
fl_get_scoped_file_url
fl_get_size
fl_get_stage
fl_get_stage_file_url
fl_is_audio
fl_is_compressed
fl_is_document
fl_is_image
fl_is_video
Ajout de la prise en charge de l’importation de paquets tiers depuis PyPi avec Artifact Repository (Aperçu privé) :
Utiliser des arguments de mots-clés
artifact_repository
etpackages
pour spécifier respectivement votre référentiel d’artefacts et vos paquets lors de l’enregistrement de procédures stockées ou de fonctions définies par l’utilisateur.Les APIs prises en charge sont :
Session.sproc.register
Session.udf.register
Session.udaf.register
Session.udtf.register
functions.sproc
functions.udf
functions.udaf
functions.udtf
functions.pandas_udf
functions.pandas_udtf
Améliorations¶
Amélioration des avertissements de validation de version pour la compatibilité avec le paquet
snowflake-snowpark-python
lors de l’enregistrement des procédures stockées. Désormais, les avertissements ne sont déclenchés que si la version majeure ou mineure ne correspond pas, tandis que les différences de version ne génèrent plus d’avertissements.Augmentation de la dépendance de cloudpickle pour prendre en charge
cloudpickle==3.0.0
en plus des versions précédentes.
Corrections de bogues¶
Correction d’un bogue où la création d’un Dataframe avec un grand nombre de valeurs soulevait l’erreur
Unsupported feature 'SCOPED_TEMPORARY'.
si la session thread-safe était désactivée.Correction d’un bogue à cause duquel
df.describe
soulevait une erreur d’exécution interne de SQL lorsque DataFrame était créé à partir de la lecture d’un fichier de zone de préparation et que l’optimisation de CTE était activée.Correction d’un bogue à cause duquel
df.order_by(A).select(B).distinct()
générait des SQL invalides lorsque la génération de requêtes simplifiées était activée à l’aide desession.conf.set("use_simplified_query_generation", True)
.
La génération de requêtes simplifiées est désactivée par défaut.
Mises à jour de l’API pandas Snowpark¶
Améliorations¶
Amélioration du message d’erreur pour
pd.to_snowflake
,DataFrame.to_snowflake
etSeries.to_snowflake
lorsque la table n’existe pas.Améliorez la lisibilité de docstring pour le paramètre
if_exists
danspd.to_snowflake
,DataFrame.to_snowflake
etSeries.to_snowflake
.Amélioration du message d’erreur pour toutes les fonctions pandas qui utilisent des UDFs avec des objets Snowpark.
Corrections de bogues¶
Correction d’un bogue dans
Series.rename_axis
où unAttributeError
était soulevé.Correction d’un bogue à cause duquel
pd.get_dummies
n’ignorait pas les valeurs NULL/NaN par défaut.Correction d’un bogue où des appels répétés à
pd.get_dummies
entraînaient une « erreur de nom de colonne dupliqué ».Correction d’un bogue dans
pd.get_dummies
où le passage d’une liste de colonnes générait des annonces de colonnes incorrectes dans la sortie DataFrame.Mise à jour de
pd.get_dummies
pour renvoyer des valeurs bool au lieu de int.
Mises à jour des tests locaux Snowpark¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge des valeurs littérales dans la fonction de fenêtre
range_between
.
Version 1.28.0 (2025-02-20)¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge des fonctions suivantes dans
functions.py
normal
randn
Ajout de la prise en charge du paramètre
allow_missing_columns
àDataframe.union_by_name
etDataframe.union_all_by_name
.
Améliorations¶
Amélioration de la génération de noms d’objets aléatoires pour éviter les collisions.
Amélioration de la génération de requêtes pour
Dataframe.distinct
afin de générer SELECT DISTINCT au lieu de SELECT avec GROUP BY toutes les colonnes. Pour désactiver cette fonction, définissezsession.conf.set("use_simplified_query_generation", False)
.
Dépréciations¶
Fonction Snowpark Python obsolète
snowflake_cortex_summarize
. Les utilisateurs peuvent installersnowflake-ml-python
et utiliser la fonctionsnowflake.cortex.summarize
à la place.Fonction Snowpark Python obsolète
snowflake_cortex_sentiment
. Les utilisateurs peuvent installersnowflake-ml-python
et utiliser la fonctionsnowflake.cortex.sentiment
à la place.
Corrections de bogues¶
Correction d’un bogue où la balise de requête au niveau de la session était remplacée par une trace de pile pour DataFrames qui génère plusieurs requêtes. Désormais, la balise de requête ne sera définie avec la trace de pile que si
session.conf.set("collect_stacktrace_in_query_tag", True)
.Correction d’un bogue dans
Session._write_pandas
qui passait par erreur le paramètreuse_logical_type
àSession._write_modin_pandas_helper
lors de l’écriture d’un objet pandas Snowpark.Correction d’un bogue dans la génération des options SQL qui pouvait entraîner un formatage incorrect des valeurs multiples.
Correction d’un bogue dans
Session.catalog
où les chaînes vides pour la base de données ou le schéma n’étaient pas gérées correctement et généraient des instructions SQL erronées.
Fonctions expérimentales¶
Ajout de la prise en charge pour l’écriture de tables pyarrow vers des tables Snowflake.
Mises à jour de l’API pandas Snowpark¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge pour appliquer les fonctions Snowflake Cortex
Summarize
etSentiment
.Ajout de la prise en charge des valeurs de liste dans
Series.str.get
.
Corrections de bogues¶
Correction d’un bogue dans
apply
où les kwargs n’étaient pas correctement passés dans la fonction appliquée.
Mises à jour des tests locaux Snowpark¶
Nouvelles fonctionnalités¶
- Ajout de la prise en charge des fonctions suivantes
hour
minute
Ajout de la prise en charge du paramètre NULL_IF par le lecteur CSV.
Ajout de la prise en charge des options
date_format
,datetime_format
ettimestamp_format
lors du chargement de CSVs.
Corrections de bogues¶
Correction d’un bogue dans
DataFrame.join
qui provoquait une mauvaise saisie des colonnes.Correction d’un bogue dans les instructions
when
qui entraînait des résultats incorrects dans la clauseotherwise
.
Version 1.27.0 (2025-02-05)¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge des fonctions suivantes dans functions.py
:
array_reverse
divnull
map_cat
map_contains_key
map_keys
nullifzero
snowflake_cortex_sentiment
acosh
asinh
atanh
bit_length
bitmap_bit_position
bitmap_bucket_number
bitmap_construct_agg
cbrt
equal_null
from_json
ifnull
localtimestamp
max_by
min_by
nth_value
nvl
octet_length
position
regr_avgx
regr_avgy
regr_count
regr_intercept
regr_r2
regr_slope
regr_sxx
regr_sxy
regr_syy
try_to_binary
base64
base64_decode_string
base64_encode
editdistance
hex
hex_encode
instr
log1p
log2
log10
percentile_approx
unbase64
Ajout de la prise en charge de la spécification d’une chaîne de schéma (y compris la syntaxe struct implicite) lors de l’appel de
DataFrame.create_dataframe
.Ajout de la prise en charge de
DataFrameWriter.insert_into/insertInto
. Cette méthode prend également en charge le mode de test local.Ajout de la prise en charge de
DataFrame.create_temp_view
pour créer une vue temporaire. L’opération échouera si la vue existe déjà.Ajout de la prise en charge de plusieurs colonnes dans les fonctions
map_cat
etmap_concat
.Ajout d’une option
keep_column_order
pour conserver l’ordre original des colonnes dansDataFrame.with_column
etDataFrame.with_columns
.Ajout d’options aux conversions de colonnes qui permettent de renommer ou d’ajouter des champs dans les colonnes
StructType
.Ajout de la prise en charge de
contains_null parameter
àArrayType
.Ajout de la prise en charge de la création d’une vue temporaire via
DataFrame.create_or_replace_temp_view
à partir d’un DataFrame créé par la lecture d’un fichier depuis une zone de préparation.Ajout de la prise en charge du paramètre
value_contains_null
àMapType
.Ajout d”« interactif » à la télémétrie qui indique si l’environnement actuel est interactif.
Autorisation de
session.file.get
dans une Native App à lire les chemins d’accès aux fichiers commençant par / à partir de la version actuelle.Ajout de la prise en charge de plusieurs fonctions d’agrégation après
DataFrame.pivot
.
Fonctions expérimentales¶
Ajout de la classe
Session.catalog
pour la gestion des objets Snowflake. Vous pouvez y accéder viaSession.catalog
.snowflake.core
est une dépendance nécessaire à cette fonction.
Autoriser les schémas d’entrée de l’utilisateur ou les schémas d’entrée de l’utilisateur lors de la lecture du fichier JSON sur la zone de préparation.
Ajout de la prise en charge de la spécification d’une chaîne de schéma (y compris la syntaxe struct implicite) lors de l’appel de
DataFrame.create_dataframe
.
Améliorations¶
Mise à jour de
README.md
de sorte à inclure des instructions sur la façon de vérifier les signatures des paquets à l’aide decosign
.
Corrections de bogues¶
Correction d’un bogue dans le mode de test local qui faisait qu’une colonne contenait None alors qu’elle aurait dû contenir 0.
Correction d’un bogue dans
StructField.from_json
qui empêchait l’analyse correcte deTimestampTypes
avectzinfo
.Correction d’un bogue dans
function date_format
qui provoquait une erreur lorsque la colonne d’entrée était de type date ou horodatage.Correction d’un bogue dans DataFrame qui permettait d’insérer des valeurs nulles dans une colonne non annulable.
Correction d’un bogue dans les fonctions
replace
etlit
qui provoquait une erreur d’assertion d’indication de type lors du passage d’objets d’expression de colonne.Correction d’un bogue dans
pandas_udf
etpandas_udtf
où les paramètres de session étaient ignorés par erreur.Correction d’un bogue qui provoquait une erreur de conversion de type pour les fonctions du système appelées par l’intermédiaire de
session.call
.
Mises à jour de l’API pandas Snowpark¶
Nouvelles fonctionnalités¶
Prise en charge de
Series.str.ljust
etSeries.str.rjust
.Ajout de la prise en charge de
Series.str.center
.Ajout de la prise en charge de
Series.str.pad
.Ajout de la prise en charge de l’application de la fonction Snowpark Python
snowflake_cortex_sentiment
.Ajout de la prise en charge de
DataFrame.map
.Prise en charge de
DataFrame.from_dict
etDataFrame.from_records
.Ajout de la prise en charge des noms de champ en casse mixte dans les colonnes de type struct.
Ajout de la prise en charge de
SeriesGroupBy.unique
.Ajout de la prise en charge de
Series.dt.strftime
avec les directives suivantes :%d : jour du mois sous forme de nombre décimal complété par des zéros.
%m : mois sous forme de nombre décimal complété par des zéros.
%Y : année avec le siècle sous forme de nombre décimal.
%H : heure (horloge de 24 heures) sous forme de nombre décimal complété par des zéros.
%M : minute sous forme de nombre décimal complété par des zéros.
%S : seconde sous forme de nombre décimal complété par des zéros.
%f : microseconde sous forme de nombre décimal complété par des zéros jusqu’à 6 chiffres.
%j : jour de l’année sous forme de nombre décimal complété par des zéros.
%X : représentation appropriée du temps conformément aux paramètres régionaux.
%% : caractère « % » littéral.
Ajout de la prise en charge de
Series.between
.Ajout de la prise en charge de
include_groups=False
dansDataFrameGroupBy.apply
.Ajout de la prise en charge de
expand=True
dansSeries.str.split
.Prise en charge de
DataFrame.pop
etSeries.pop
.Prise en charge de
first
etlast
dansDataFrameGroupBy.agg
etSeriesGroupBy.agg
.Ajout de la prise en charge de
Index.drop_duplicates
.Ajout de la prise en charge des agrégations
"count"
,"median"
,np.median
,"skew"
,"std"
,np.std
"var"
etnp.var
danspd.pivot_table()
,DataFrame.pivot_table()
etpd.crosstab()
.
Améliorations¶
Amélioration des performances des méthodes
DataFrame.map
,Series.apply
etSeries.map
en mappant les fonctions numpy avec les fonctions Snowpark si possible.Ajout de documentation pour
DataFrame.map
.Amélioration des performances de
DataFrame.apply
en mappant les fonctions numpy avec les fonctions Snowpark si possible.Ajout d’une documentation sur l’étendue de l’interopérabilité de Snowpark pandas avec scikit-learn.
Inférence du type de renvoi des fonctions dans
Series.map
,Series.apply
etDataFrame.map
si l’indice de type n’est pas fourni.Ajout de
call_count
à la télémétrie qui compte les appels de méthode, y compris les appels de protocole d’échange.