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.
Voir Guide du développeur Snowpark pour Python pour la documentation.
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 àpivotdans 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_objectdanssnowflake.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_metadatacré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_namesdansUDTFRegistration.register,UDTFRegistration.register_file, etfunctions.pandas_udtf. Par défaut,RelationalGroupedDataFrame.applyInPandasdéduit le nom des colonnes du schéma DataFrame actuel.Ajout des attributs
sql_error_codeetraw_messageàSnowflakeSQLExceptionlorsque 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_packagesqui 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()lorsqueoffsetest utilisé et que le parentDataFrameutiliselimit. Désormais, le siteoffsetn’aura pas d’impact sur le sitelimitdu DataFrame parent.Correction d’un bogue dans
DataFrame.write.save_as_tableoù 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
formatest 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
PythonObjJSONEncoderJSON-sérialisables pour les littérauxARRAYetOBJECT.
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_tablequi 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
VOLATILEetIMMUTABLElors 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
Iterableen entrée deschemalors de la création de dataframes à l’aide deSession.create_dataframe.Ajout de la propriété
DataFrame.sessionpour renvoyer un objetSession.Ajout de la propriété
Session.session_idpour renvoyer un nombre entier représentant l’ID de session.Ajout de la propriété
Session.connectionpour 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-pythonvers la version 3.2.0.
Corrections de bogues¶
Correction d’un bogue où un chargement automatique de paquets générait
ValueErrormê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 à cause duquel
DataFrame.copydésactivait la simplification de 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_nameest fourni. La valeur par défaut deis_permanentestFalse, c’est pourquoi si cette valeur n’est pas explicitement définie surTruepour les objets permanents, les utilisateurs remarqueront un changement de comportement.types.StructFieldmet désormais l’identificateur de la colonne entre guillemets par défaut.
Nouvelles fonctionnalités¶
Ajout des paramètres
external_access_integrationsetsecretsqui 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_flattenetflatten.Ajout de la prise en charge de
apply_in_pandasdanssnowflake.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_dataframene 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.selectd’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_tablerespecte 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_sortsort_arrayarray_minarray_maxexplode_outer
Ajout de la prise en charge des paquets Python purs spécifiés via
Session.add_requirementsouSession.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_enabledetcustom_packages_force_upload_enabledpour 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,TZet Timestamp pour annoter les fonctions lors de l’enregistrement d’UDFs.
Améliorations¶
Suppression de la dépendance redondante typing-extensions.
DataFrame.cache_resultcré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.unionne générait pas la bonneSelectable.schema_querylorsque le simplificateur SQL était activé.
Mises à jour des dépendances¶
Mise à jour de
snowflake-connector-pythonvers 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.aggetDataFrame.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_rangearray_unique_aggcollect_setsequenceAjout 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.containspourfunctions.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.addafin d’ajouter des champs aux objetsStructTypeexistants.Ajout de la prise en charge du paramètre
execute_asdansStoredProcedureRegistration.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_functionn’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,LiteralTypeetColumnOrLiteralqui rompaient les vérifications demypy.Correction d’un bogue dans lequel
DataFrameWriter.save_as_tableetDataFrame.copy_into_tablene 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_addetdate_subpour faciliter les opérations d’addition et de soustraction.ddaydiffdexplodedarray_distinctdregexp_extractdstructdformat_numberdbrounddsubstring_index
Ajout du paramètre
skip_upload_on_content_matchlors de la création d’UDFs, d’UDTFs et de procédures stockées utilisantregister_from_filepour 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_tablepour 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_arrayoù une exception était levée lorsqu’un délimiteur était transmis.Correction d’un bogue dans
session.add_importoù 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.confpour 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
RowdeDataFrame.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.collectetDataframe.collect_no_waitpour é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.selectouDataFrame.with_columnlè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=Falselors de l’enregistrement.Ajout d’un paramètre
if_not_existslors 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.getpour extraire une valeur d’un tableau.Ajout de
functions.reversedans les fonctions pour ouvrir l’accès à la fonction intégrée de Snowflake REVERSE.Ajout du paramètre
require_scoped_urldanssnowflake.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
paramstyleparqmarklors 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
DataFramecréé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_timestampdans les fonctions.Ajout de la propriété
DataFrame.dtypespour 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_SIMPLIFIERseraTrueaprès la sortie de Snowflake 7.3. Dans snowpark-python,session.sql_simplifier_enabledlit la valeur dePYTHON_SNOWPARK_USE_SQL_SIMPLIFIERpar 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_SIMPLIFIERdans Snowflake sur False ou exécutezsession.sql_simplifier_enabled = Falsedans Snowpark. Il est recommandé d’utiliser le simplificateur SQL, car il permet de générer du code SQL plus concis.