Notes de version de la bibliothèque Snowpark pour Python pour 2024¶
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.
Version 1.13.0 (2024-02-26)¶
La version 1.13.0 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.
Nouvelles fonctionnalités¶
Ajout de la prise en charge d’un argument facultatif
date_part
dans la fonctionlast_day
.SessionBuilder.app_name
définira lequery_tag
après la création de la session.Ajout de la prise en charge des fonctions de test locales suivantes :
current_timestamp
current_date
current_time
strip_null_value
upper
lower
length
initcap
Améliorations¶
Ajout d’une logique de nettoyage lors de l’arrêt de l’interpréteur pour fermer toutes les sessions actives.
Corrections de bogues¶
Correction d’un bogue dans
DataFrame.to_local_iterator
où l’itérateur pouvait produire des résultats erronés si une autre requête était exécutée avant la fin de l’itérateur en raison d’un mauvais niveau d’isolation.Correction d’un bogue qui tronquait les noms de tables dans les messages d’erreur lors de l’exécution d’un plan avec les tests locaux activés.
Correction d’un bogue qui faisait que
Session.range
renvoyait un résultat vide lorsque la plage était grande.
Version 1.12.1 (2024-02-08)¶
La version 1.12.1 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.
Améliorations¶
Utilisez
split_blocks=True
par défaut lors de la conversionto_pandas
pour une allocation optimale de la mémoire. Ce paramètre est transmis àpyarrow.Table.to_pandas
, ce qui permet àPyArrow
de diviser l’allocation de mémoire en blocs plus petits et plus faciles à gérer au lieu d’allouer un seul bloc contigu. Il en résulte une meilleure gestion de la mémoire lorsque l’on traite des ensembles de données plus importants.
Corrections de bogues¶
Correction d’un bogue dans
DataFrame.to_pandas
qui provoquait une erreur lors de l’évaluation d’un dataframe avec une colonneIntergerType
avec des valeurs nulles.
Version 1.12.0 (2024-01-29)¶
La version 1.12.0 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.
Changements de comportement (compatible API)¶
Lors de l’analyse des types de données au cours d’une opération
to_pandas
, nous nous appuyons sur la valeur de précision GS pour résoudre les problèmes de précision des grandes valeurs entières. Cela peut affecter les utilisateurs lorsqu’une colonne qui était précédemment renvoyée en tant queint8
est renvoyée en tant queint64
. Les utilisateurs peuvent remédier à ce problème en spécifiant explicitement des valeurs de précision pour leur colonne de retour.Comportement aligné pour
Session.call
dans le cas des procédures stockées de table où l’exécution deSession.call
ne déclencherait pas une procédure stockée à moins qu’une opérationcollect()
ne soit effectuée.StoredProcedureRegistration
ajoute désormais automatiquementsnowflake-snowpark-python
en tant que dépendance du paquet sur la version locale de la bibliothèque du client. Une erreur est générée si le serveur ne peut pas prendre en charge cette version.
Nouvelles fonctionnalités¶
Exposition de
statement_params
dansStoredProcedure.__call__
.Ajout de deux arguments facultatifs à
Session.add_import
:chunk_size
: le nombre d’octets à hacher par morceau des fichiers chargés.whole_file_hash
: par défaut, seul le premier morceau de l’importation chargée est haché pour gagner du temps. Lorsque ce paramètre est défini sur True, chaque fichier chargé est entièrement haché.
Ajout des paramètres
external_access_integrations
etsecrets
lors de la création d’un UDAF à partir de Snowpark Python pour permettre l’intégration avec un accès externe.Ajout d’une nouvelle méthode
Session.append_query_tag
, qui permet d’ajouter une balise supplémentaire à la balise de requête actuelle en l’ajoutant sous la forme d’une valeur séparée par des virgules.Ajout d’une nouvelle méthode
Session.update_query_tag
, qui permet de mettre à jour une balise de requête de dictionnaire encodée JSON.SessionBuilder.getOrCreate
tentera désormais de remplacer le singleton qu’il renvoie lorsque l’expiration du jeton a été détectée.Ajout des fonctions suivantes dans
snowflake.snowpark.functions
:array_except
create_map
sign
/signum
Les fonctions suivantes ont été ajoutées à
DataFrame.analytics
:Ajout de la fonction
moving_agg
dansDataFrame.analytics
pour permettre les agrégations mobiles telles que les sommes et les moyennes avec plusieurs tailles de fenêtres.Ajout de la fonction
cummulative_agg
dansDataFrame.analytics
pour permettre les agrégations mobiles telles que les sommes et les moyennes avec plusieurs tailles de fenêtres.
Corrections de bogues¶
Correction d’un bogue dans
DataFrame.na.fill
qui entraînait le remplacement erroné des valeurs booléennes par des valeurs entières.Correction d’un bogue dans
Session.create_dataframe
où le DataFrames Snowpark créé en utilisant les DataFrames pandas ne déduisait pas correctement le type pour les colonnes d’horodatage. Le comportement est le suivant :Auparavant, les colonnes d’horodatage sans fuseau horaire étaient converties en époques de nanosecondes et déduites comme
LongType()
, mais elles seront désormais correctement maintenues en tant que valeurs d’horodatage et déduites commeTimestampType(TimestampTimeZone.NTZ)
.Auparavant, les colonnes d’horodatage comportant un fuseau horaire étaient déduites comme
TimestampType(TimestampTimeZone.NTZ)
et perdaient les informations relatives au fuseau horaire, mais elles sont désormais correctement déduites commeTimestampType(TimestampTimeZone.LTZ)
et les informations relatives au fuseau horaire sont conservées correctement.Définissez le paramètre de session
PYTHON_SNOWPARK_USE_LOGICAL_TYPE_FOR_CREATE_DATAFRAME
pour revenir à l’ancien comportement. Snowflake vous recommande de mettre à jour votre code pour l’aligner sur le comportement correct, car le paramètre sera supprimé à l’avenir.
Correction d’un bogue qui faisait que
DataFrame.to_pandas
obtenait un type décimal lorsque l’échelle n’était pas 0, et créait un objet dtype danspandas
. Au lieu de cela, nous convertissons la valeur en un type float64.Correction de bogues qui aplatissaient à tort le SQL généré lorsque l’une des situations suivantes se produit :
DataFrame.filter()
est appelé aprèsDataFrame.sort().limit()
.DataFrame.sort()
oufilter()
est appelé sur un DataFrame qui possède déjà une fonction de fenêtre ou une colonne de générateur de données dépendant de la séquence. Par exemple,df.select("a", seq1().alias("b")).select("a", "b").sort("a")
n’aplatira plus la clause de tri.Une fenêtre ou une colonne de générateur de données dépendant de la séquence est utilisée après
DataFrame.limit()
. Par exemple,df.limit(10).select(row_number().over())
n’aplatira pas la limite et la sélection dans le SQL généré.
Correction d’un bogue où donner un alias à une colonne DataFrame provoquait une erreur lorsque le DataFame était copié à partir d’un autre DataFrame avec une colonne possédant un alias. Par exemple,
df = df.select(col("a").alias("b")) df = copy(df) df.select(col("b").alias("c")) # Threw an error. Now it's fixed.
Correction d’un bogue dans
Session.create_dataframe
qui faisait que le champ n’acceptant pas la valeur nulle dans un schéma n’était pas respecté pour le type booléen. Notez que cette solution n’est efficace que si l’utilisateur a le privilège de créer une table temporaire.Correction d’un bogue dans le simplificateur SQL où les instructions non sélectionnées dans
session.sql
supprimaient une requête SQL lorsqu’elles étaient utilisées aveclimit()
.Correction d’un bogue qui soulevait une exception lorsque le paramètre de session
ERROR_ON_NONDETERMINISTIC_UPDATE
est true.