Notes de version de la bibliothèque Snowpark pour Python pour 2023¶
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.11.1 (2023-12-07)¶
La version 1.11.1 de la bibliothèque Snowpark lance de nouvelles fonctionnalités.
Nouvelles fonctionnalités¶
Ajout de l’attribut
conn_error
àSnowflakeSQLException
, qui stocke l’ensemble de l’exception sous-jacente desnowflake-connector-python
.Ajout de la prise en charge de
RelationalGroupedDataframe.pivot()
pour accéder àpivot
dans le modèle suivantDataframe.group_by(...).pivot(...)
.Ajout d’une fonctionnalité expérimentale, Mode de test local, qui vous permet de créer et d’agir sur des DataFrames Python Snowpark localement sans vous connecter à un compte Snowflake. Vous pouvez utiliser le cadre de test local pour tester vos opérations DataFrame localement, sur votre poste de développement ou dans un pipeline CI (intégration continue), avant de déployer les changements de code sur votre compte.
Ajout de la prise en charge de nouvelles fonctions
arrays_to_object
danssnowflake.snowpark.functions
.Ajout de la prise en charge du type de données vectoriel.
Mises à jour des dépendances¶
Modification de la dépendance cloudpickle de sorte qu’elle fonctionne avec
cloudpickle==2.2.1
.Mise à jour de
snowflake-connector-python
à la version3.4.0
.
Corrections de bogues¶
La vérification de la citation des noms de colonne DataFrame prend désormais en charge les caractères de nouvelle ligne.
Correction d’un bogue selon lequel un DataFrame généré par
session.read.with_metadata
créait une table incohérente lors de l’exécution dedf.write.save_as_table
.
Version 1.10.0 (03-11-2023)¶
La version 1.10.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités.
Nouvelles fonctionnalités¶
Ajout de la prise en charge de la gestion de la sensibilité à la casse dans
DataFrame.to_local_iterator()
.Ajout de la prise en charge de la spécification des noms des colonnes d’entrée d’UDTF vectorisée en utilisant le paramètre optionnel
input_names
dansUDTFRegistration.register
,UDTFRegistration.register_file
, etfunctions.pandas_udtf
. Par défaut,RelationalGroupedDataFrame.applyInPandas
déduit le nom des colonnes du schéma DataFrame actuel.Ajout des attributs
sql_error_code
etraw_message
àSnowflakeSQLException
lorsque le cas est causé par une exception SQL.
Corrections de bogues¶
Correction d’un bogue dans
DataFrame.to_pandas()
où la conversion de DataFrames Snowpark en DataFrames Pandas perdait de la précision sur les entiers de plus de 19 chiffres.Correction d’un bogue dans
session.add_packages
qui ne pouvait pas gérer un spécificateur d’exigences contenant un nom de projet avec un trait de soulignement et une version.Correction d’un bogue dans
DataFrame.limit()
lorsqueoffset
est utilisé et que le parentDataFrame
utiliselimit
. Désormais, le siteoffset
n’aura pas d’impact sur le sitelimit
du DataFrame parent.Correction d’un bogue dans
DataFrame.write.save_as_table
où les DataFrames créés à partir de la lecture API ne pouvait pas enregistrer les données dans Snowflake à cause d’un nom de colonne invalide$1
.
Changements de comportement¶
Modification du comportement de
date_format
:L’argument
format
est passé de facultatif à obligatoire.Le résultat renvoyé est passé d’un objet « date » à une chaîne formatée en date.
Lorsqu’une fonction de fenêtre ou de générateur de données dépendant de la séquence (
normal
,zipf
,uniform
,seq1
,seq2
,seq4
,seq8
) est utilisée, l’opération de tri et de filtrage ne sera plus aplatie lors de la génération de la requête.
Version 1.9.0 (2023-10-16)¶
La version 1.9.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités.
Nouvelles fonctionnalités¶
Ajout de la prise en charge de l’environnement d’exécution Python 3.11.
Prise en charge des objets
PythonObjJSONEncoder
JSON-sérialisables pour les littérauxARRAY
etOBJECT
.
Mises à jour des dépendances¶
Ré-ajout de la dépendance de
typing-extensions
.
Corrections de bogues¶
Correction d’un bogue où les importations à partir d’emplacements de zone de préparation permanents étaient ignorées pour des procédures stockées, UDTFs, UDFs et UDAFs temporaires.
Revenez à l’utilisation de l’instruction CTAS (CREATE TABLE AS SELECT) pour
DataFrameWriter.save_as_table
qui n’a pas besoin d’autorisation d’insertion pour écrire dans des tables.
Version 1.8.0 (2023-09-14)¶
La version 1.8.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités.
Nouvelles fonctionnalités¶
Prise en charge des mots-clés
VOLATILE
etIMMUTABLE
lors de l’enregistrement d’UDFs.Ajout de la prise en charge de la spécification des clés de clustering lors de l’enregistrement des dataframes à l’aide de
DataFrame.save_as_table
.Accepter les objets
Iterable
en entrée deschema
lors de la création de dataframes à l’aide deSession.create_dataframe
.Ajout de la propriété
DataFrame.session
pour renvoyer un objetSession
.Ajout de la propriété
Session.session_id
pour renvoyer un nombre entier représentant l’ID de session.Ajout de la propriété
Session.connection
pour renvoyer un objetSnowflakeConnection
.Ajout de la possibilité de créer une session Snowpark à partir d’un fichier de configuration ou de variables d’environnement.
Mises à jour des dépendances¶
Mise à jour de
snowflake-connector-python
vers la version 3.2.0.
Corrections de bogues¶
Correction d’un bogue où un chargement automatique de paquets générait
ValueError
même si des versions de paquets compatibles avaient été ajoutées danssession.add_packages
.Correction d’un bogue où les procédures stockées de table n’étaient pas enregistrées correctement lors de l’utilisation de
register_from_file
.Correction d’un bogue où les jointures de dataframes échouaient avec l’erreur
invalid_identifier
.Correction d’un bogue où
DataFrame.copy
désactivait le simplificateur SQL pour la copie renvoyée.Correction d’un bogue où
session.sql().select()
échouait si des paramètres étaient spécifiés danssession.sql()
.
Version 1.7.0 (2023-08-28)¶
La version 1.7.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités.
Changements de comportement¶
Lors de la création des procédures stockées, d’UDFs, d’UDTFs et d’UDAFs avec le paramètre
is_permanent=False
, des objets temporaires sont créés même sistage_name
est fourni. La valeur par défaut deis_permanent
estFalse
, c’est pourquoi si cette valeur n’est pas explicitement définie surTrue
pour les objets permanents, les utilisateurs remarqueront un changement de comportement.types.StructField
met désormais l’identificateur de la colonne entre guillemets par défaut.
Nouvelles fonctionnalités¶
Ajout des paramètres
external_access_integrations
etsecrets
qui peuvent être utilisés lors de la création d’une UDF, d’une UDTF ou d’une procédure stockée à partir de Snowpark Python pour permettre l’intégration avec un accès externe.Ajout de la prise en charge des nouvelles fonctions suivantes dans
snowflake.snowpark.functions
:array_flatten
etflatten
.Ajout de la prise en charge de
apply_in_pandas
danssnowflake.snowpark.relational_grouped_dataframe
.Ajout de la prise en charge de la réplication de votre environnement Python local sur Snowflake via
Session.replicate_local_environment
.
Corrections de bogues¶
Correction d’un bogue dans lequel
session.create_dataframe
ne parvenait pas à définir correctement les colonnes pouvant être nulles lorsque la nullité était affectée par l’ordre ou lorsque les données étaient données.Correction d’un bogue qui empêchait
DataFrame.select
d’identifier et d’aliaser les colonnes lors de l’utilisation de fonctions de table lorsque les colonnes de sortie de la fonction de table chevauchaient les colonnes du DataFrame.
Version 1.6.1 (2023-08-02)¶
Changements de comportement¶
DataFrameWriter.save_as_table
respecte maintenant le champ nullable du schéma fourni par l’utilisateur ou du schéma déduit sur la base des données provenant de l’entrée de l’utilisateur.
Nouvelles fonctionnalités¶
Ajout de la prise en charge de nouvelles fonctions dans
snowflake.snowpark.functions
:array_sort
sort_array
array_min
array_max
explode_outer
Ajout de la prise en charge des paquets Python purs spécifiés via
Session.add_requirements
ouSession.add_packages
. Ils sont désormais utilisables dans les procédures stockées et les UDFs même si les paquets ne sont pas présents sur le canal Anaconda de Snowflake.Ajout des paramètres de session
custom_packages_upload_enabled
etcustom_packages_force_upload_enabled
pour activer la prise en charge de la fonction des paquets purement Python mentionnée ci-dessus. Les deux paramètres sont définis par défaut surFalse
.Ajout de la prise en charge de la spécification des exigences de paquets en transmettant un fichier YAML d’environnement conda à
Session.add_requirements
.Ajout de la prise en charge de l’exécution asynchrone des dataframes à requêtes multiples contenant des variables de liaison.
Ajout de la prise en charge du renommage de plusieurs colonnes dans
DataFrame.rename
.Ajout de la prise en charge des types de données Geometry.
Ajout de la prise en charge de params dans
session.sql()
dans les procédures stockées.Ajout de la prise en charge des fonctions agrégées définies par l’utilisateur (UDAFs). Cette fonctionnalité est actuellement proposée en avant-première privée.
Ajout de la prise en charge des fonctions de tables vectorisées définis par l’utilisateur (UDTFs vectorisées). Cette fonctionnalité est actuellement proposée en avant-première publique.
Prise en charge des variantes de l’horodatage Snowflake (c’est-à-dire
TIMESTAMP_NTZ
,TIMESTAMP_LTZ
,TIMESTAMP_TZ
) :Ajout de TimestampTimezone comme argument dans le constructeur de
TimestampType
.Ajout d’indications de type :
NTZ
,LTZ
,TZ
et Timestamp pour annoter les fonctions lors de l’enregistrement d’UDFs.
Améliorations¶
Suppression de la dépendance redondante typing-extensions.
DataFrame.cache_result
crée maintenant une table temporaire de noms pleinement qualifiés sous la base de données et le schéma actuels.
Corrections de bogues¶
Correction d’un bogue où la vérification du type se fait sur pandas avant qu’il ne soit importé.
Correction d’un bogue lors de la création d’une UDF à partir de
numpy.ufunc
.Correction d’un bogue où
DataFrame.union
ne générait pas la bonneSelectable.schema_query
lorsque le simplificateur SQL était activé.
Mises à jour des dépendances¶
Mise à jour de
snowflake-connector-python
vers la version 3.0.4.
Version 1.5.1 (20/06/2023)¶
Nouvelles fonctions et mises à jour¶
Ajout de la prise en charge de l’environnement d’exécution Python 3.10.
Version 1.5.0 (13/06/2023)¶
Changements de comportement¶
Les résultats de l’agrégation, obtenus à partir de fonctions telles que
DataFrame.agg
etDataFrame.describe
, ne suppriment plus les caractères non imprimables des noms de colonnes.
Nouvelles fonctions et mises à jour¶
Ajout de la prise en charge de l’environnement d’exécution Python 3.9.
Ajout de la prise en charge de nouvelles fonctions dans
snowflake.snowpark.functions
:array_generate_range
array_unique_agg
collect_set
sequence
Ajout de la prise en charge de l’enregistrement et de l’appel de procédures stockées avec le type de retour
TABLE
.Ajout de la prise en charge du paramètre length dans
StringType()
pour spécifier le nombre maximal de caractères pouvant être stockés par la colonne.Ajout de l’alias
functions.element_at()
pourfunctions.get()
.Ajout de l’alias
Column.contains
pourfunctions.contains
.Ajout de la fonction expérimentale
DataFrame.alias
.Ajout de la prise en charge de l’interrogation des colonnes de métadonnées en zone de préparation lors de la création de
DataFrame
à l’aide deDataFrameReader
.Ajout de la prise en charge de
StructType.add
afin d’ajouter des champs aux objetsStructType
existants.Ajout de la prise en charge du paramètre
execute_as
dansStoredProcedureRegistration.register_from_file()
pour spécifier les droits de l’appelant de la procédure stockée.
Corrections de bogues¶
Correction d’un bogue à cause duquel la fonction
Dataframe.join_table_function
n’exécutait pas toutes les requêtes nécessaires pour configurer la fonction de table de jointure lorsque le simplificateur SQL était activé.Correction de la déclaration de l’indication de type pour les types personnalisés :
ColumnOrName
,ColumnOrLiteralStr
,ColumnOrSqlExpr
,LiteralType
etColumnOrLiteral
qui rompaient les vérifications demypy
.Correction d’un bogue dans lequel
DataFrameWriter.save_as_table
etDataFrame.copy_into_table
ne parvenaient pas à analyser les noms complets des tables.
Version 1.4.0 (24/04/2023)¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge de
session.getOrCreate
.Ajout de la prise en charge de l’alias
Column.getField
.Ajout de la prise en charge de nouvelles fonctions dans
snowflake.snowpark.functions
:date_add
etdate_sub
pour faciliter les opérations d’addition et de soustraction.ddaydiff
dexplode
darray_distinct
dregexp_extract
dstruct
dformat_number
dbround
dsubstring_index
Ajout du paramètre
skip_upload_on_content_match
lors de la création d’UDFs, d’UDTFs et de procédures stockées utilisantregister_from_file
pour ne pas charger de fichiers dans une zone de préparation scène si la même version des fichiers se trouve déjà dans la zone de préparation.Ajout de la prise en charge de la méthode
DataFrame.save_as_table
pour les noms de tables contenant des points.Génération de SQL aplati lorsque
DataFrame.filter()
ouDataFrame.order_by()
est suivi d’une instruction de projection (par exemple,DataFrame.select()
,DataFrame.with_column()
).Ajout de la prise en charge de la création de tables dynamiques (en avant-première privée) à l’aide de
Dataframe.create_or_replace_dynamic_table
.Ajout d’un argument facultatif,
params
, danssession.sql()
pour prendre en charge les variables de liaison. Notez que cet argument n’est pas encore pris en charge dans les procédures stockées.
Corrections de bogues¶
Correction d’un bogue dans
strtok_to_array
où une exception était levée lorsqu’un délimiteur était transmis.Correction d’un bogue dans
session.add_import
où le module avait le même espace de noms que d’autres dépendances.
Version 1.3.0 (28/03/2023)¶
Nouvelles fonctionnalités¶
Ajout de la prise en charge du paramètre delimiters dans
functions.initcap()
.Ajout de la prise en charge de
functions.hash()
pour accepter un nombre variable d’expressions d’entrée.Ajout de l’API
Session.conf
pour obtenir, définir ou vérifier la mutabilité de toute configuration d’exécution.Ajout de la prise en charge de la gestion de la sensibilité à la casse dans les résultats
Row
deDataFrame.collect
à l’aide du paramètrecase_sensitive
.Ajout de la prise en charge de l’indexeur pour
snowflake.snowpark.types.StructType
.Ajout d’un argument mot-clé
log_on_exception
àDataframe.collect
etDataframe.collect_no_wait
pour éventuellement désactiver la journalisation des erreurs pour les exceptions SQL.
Corrections de bogues¶
Correction d’un bogue où une opération d’ensemble DataFrame (
DataFrame.subtract
,DataFrame.union
, etc.) était appelée après une autre opération d’ensemble DataFrame etDataFrame.select
ouDataFrame.with_column
lève une exception.Correction d’un bogue où les instructions de tri chaînées étaient remplacées par le simplificateur SQL.
Améliorations¶
Requêtes JOIN simplifiées pour utiliser des alias de sous-requête constants (
SNOWPARK_LEFT
,SNOWPARK_RIGHT
) par défaut. Les utilisateurs peuvent désactiver cela au moment de l’exécution avecsession.conf.set('use_constant_subquery_alias', False)
pour utiliser à la place des noms d’alias générés de manière aléatoire.Autorisé à spécifier des paramètres d’instruction dans
session.call()
.Activation du chargement de grands DataFrames pandas dans les procédures stockées en utilisant par défaut une taille de bloc de 100 000 lignes.
Version 1.2.0 (2023-03-02)¶
Nouvelles fonctions et mises à jour¶
Ajout de la prise en charge de l’affichage du code source sous forme de commentaires dans les scripts générés lors de l’enregistrement de procédures stockées. Cette fonction est activée par défaut ; elle peut être désactivée en spécifiant
source_code_display=False
lors de l’enregistrement.Ajout d’un paramètre
if_not_exists
lors de la création d’une UDF, d’une UDTF ou d’une procédure stockée à partir de Snowpark Python pour ignorer la création de la fonction ou de la procédure spécifiée si elle existe déjà.Accepter les entiers lors de l’appel de
snowflake.snowpark.functions.get
pour extraire une valeur d’un tableau.Ajout de
functions.reverse
dans les fonctions pour ouvrir l’accès à la fonction intégrée de Snowflake REVERSE.Ajout du paramètre
require_scoped_url
danssnowflake.snowflake.files.SnowflakeFile.open()
(en aperçu privé) pour remplaceris_owner_file
, qui est signalé comme obsolète.
Corrections de bogues¶
Correction d’un bug qui remplaçait
paramstyle
parqmark
lors de la création d’une session Snowpark.Correction d’un bug où
df.join(..., how="cross")
échoue avecSnowparkJoinException: (1112): Unsupported using join type 'Cross'
.Correction d’un bogue où l’interrogation d’une colonne
DataFrame
créée à partir d’appels de fonctions enchaînés utilisait un nom de colonne erroné.
Version 1.1.0 (2023-01-26)¶
Nouvelles fonctions et mises à jour¶
Ajout de
asc
,asc_nulls_first
,asc_nulls_last
,desc
,desc_nulls_first
,desc_nulls_last
,date_part
, etunix_timestamp
dans les fonctions.Ajout de la propriété
DataFrame.dtypes
pour retourner une liste de paires de noms de colonnes et de types de données.Ajout des alias suivants :
functions.expr() for functions.sql_expr()
.functions.date_format() for functions.to_date()
.functions.monotonically_increasing_id() for functions.seq8()
.functions.from_unixtime() for functions.to_timestamp()
.
Corrections de bogues¶
Correction d’un bogue dans le simplifieur SQL qui ne gérait pas bien l’alias de colonne et la jointure dans certains cas. Voir https://github.com/snowflakedb/snowpark-python/issues/658 pour plus de détails.
Correction d’un bogue dans le simplificateur SQL qui générait des noms de colonnes erronés pour les appels de fonction, NaN et INF.
Améliorations¶
Le paramètre de session
PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER
seraTrue
après la sortie de Snowflake 7.3. Dans snowpark-python,session.sql_simplifier_enabled
lit la valeur dePYTHON_SNOWPARK_USE_SQL_SIMPLIFIER
par défaut, ce qui signifie que le simplificateur SQL est activé par défaut après la version 7.3 de Snowflake. Pour désactiver cette fonction, réglezPYTHON_SNOWPARK_USE_SQL_SIMPLIFIER
dans Snowflake sur False ou exécutezsession.sql_simplifier_enabled = False
dans Snowpark. Il est recommandé d’utiliser le simplificateur SQL, car il permet de générer du code SQL plus concis.