Changements dans l’API Python Snowpark¶
Cette rubrique fournit des informations sur la publication de versions.
Dans ce chapitre :
Version 1.1.0¶
La version 1.1.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités.
Nouvelles fonctionnalités¶
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()
pourfunctions.sql_expr()
.functions.date_format()
pourfunctions.to_date()
.functions.monotonically_increasing_id()
pourfunctions.seq8()
.functions.from_unixtime()
pourfunctions.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
etINF
.
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 surFalse
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.
Version 1.0.0¶
La version 1.0.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités.
Version 0.12.0¶
La version 0.12.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
Ajout de nouvelles APIs pour les tâches asynchrones :
Session.create_async_job()
pour créer une instanceAsyncJob
à partir d’un identifiant de requête.AsyncJob.result()
accepte maintenant l’argumentresult_type
pour renvoyer les résultats dans différents formats.AsyncJob.to_df()
renvoie unDataFrame
construit à partir du résultat de cette tâche asynchrone.AsyncJob.query()
renvoie le texte SQL de la requête exécutée.
DataFrame.agg()
etRelationalGroupedDataFrame.agg()
acceptent désormais des arguments de longueur variable.Ajout des paramètres
lsuffix
etrsuffix
àDataFrame.join()
etDataFrame.cross_join()
pour renommer plus facilement les colonnes qui se chevauchent.Ajout de
Table.drop_table()
pour que vous puissiez détruire la table temporaire après avoir appeléDataFrame.cache_result()
.Table
est également un gestionnaire de contexte, vous pouvez donc utiliser l’instructionwith
pour supprimer la table temporaire du cache après utilisation.Ajout de
Session.use_secondary_roles()
.Ajout des fonctions
first_value()
etlast_value()
. (contribution de @chasleslr)Ajout de
on
comme alias pourusing_columns
ethow
comme alias pourjoin_type
dansDataFrame.join()
.
Corrections de bogues¶
Correction d’un bogue dans
Session.create_dataframe()
qui générait une erreur lorsque les noms deschema
comportaient des caractères spéciaux.Correction d’un bogue dans lequel les options définies dans
Session.read.option()
n’étaient pas transmises àDataFrame.copy_into_table()
comme valeurs par défaut.Correction d’un bogue dans lequel
DataFrame.copy_into_table()
générait une erreur lorsqu’une option de copie avait des guillemets simples dans la valeur.
Version 0.11.0¶
La version 0.11.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Changements de comportement¶
Session.add_packages()
produit maintenant uneValueError
lorsque la version d’un package est introuvable dans le canal Anaconda de Snowflake. Auparavant,Session.add_packages()
réussissait et une exceptionSnowparkSQLException
était produite plus tard dans l’UDF ou à l’étape d’enregistrement de la procédure stockée.
Nouvelles fonctionnalités¶
Ajout de la méthode
FileOperation.get_stream()
pour prendre en charge le téléchargement de fichiers de zone de préparation sous forme de flux.Ajout de la prise en charge dans
functions.ntiles()
de l’acceptation d’un argumentint
.Ajout des alias suivants :
functions.call_function()
pourfunctions.call_builtin()
.functions.function()
pourfunctions.builtin()
.DataFrame.order_by()
pourDataFrame.sort()
DataFrame.orderBy()
pourDataFrame.sort()
Amélioration de
DataFrame.cache_result()
pour renvoyer une classeTable
plus précise au lieu d’une classeDataFrame
.Ajout de la prise en charge de l’autorisation de
session
comme premier argument lors de l’appel deStoredProcedure
.
Améliorations¶
Amélioration de la génération de requêtes imbriquées en aplatissant les requêtes lorsque c’est possible. Cette amélioration peut être activée en définissant
Session.sql_simplifier_enabled = True
.DataFrame.select()
,DataFrame.with_column()
,DataFrame.drop()
et d’autres APIs liées à la sélection ont dorénavant davantage de SQL aplati.DataFrame.union()
,DataFrame.union_all()
,DataFrame.except_()
,DataFrame.intersect()
,DataFrame.union_by_name()
ont aplati le SQL généré lorsque plusieurs opérateurs d’ensemble sont chaînés.Amélioration des annotations de type pour les APIs de tâches asynchrones.
Corrections de bogues¶
Correction d’un bogue dans lequel
Table.update()
,Table.delete()
,Table.merge()
essayaient de faire référence à une table temporaire qui n’existait pas.
Version 0.10.0¶
La version 0.10.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
Ajout d’APIs expérimentales pour l’évaluation de dataframes Snowpark avec des requêtes asynchrones :
Ajout de l’argument mot-clé
block
aux APIs d’action suivantes sur les dataframes Snowpark (qui exécutent des requêtes) pour permettre des évaluations asynchrones :DataFrame.collect()
,DataFrame.to_local_iterator()
,DataFrame.to_pandas()
,DataFrame.to_pandas_batches()
,DataFrame.count()
,DataFrame.first()
,DataFrameWriter.save_as_table()
,DataFrameWriter.copy_into_location()
,Table.delete()
,Table.update()
,Table.merge()
.
Ajout de la méthode
DataFrame.collect_nowait()
pour permettre des évaluations asynchrones.Ajout de la classe
AsyncJob
pour récupérer les résultats des requêtes exécutées de manière asynchrone et vérifier leur statut.
Ajout de la prise en charge de
table_type
dansSession.write_pandas()
. Vous pouvez maintenant choisir parmi ces optionstable_type
:temporary
,temp
, ettransient
.Ajout de la prise en charge de l’utilisation de données structurées Python (
list
,tuple
etdict
) comme valeurs littérales dans Snowpark.Ajout de l’argument mot-clé
execute_as
àfunctions.sproc()
etsession.sproc.register()
pour permettre l’enregistrement d’une procédure stockée en tant qu’appelant ou propriétaire.Ajout de la prise en charge de la spécification d’un format de fichier préconfiguré lors de la lecture de fichiers à partir d’une zone de préparation dans Snowflake.
Améliorations¶
Ajout de la prise en charge de l’affichage des détails d’une session Snowpark.
Corrections de bogues¶
Correction d’un bogue dans lequel
DataFrame.copy_into_table()
etDataFrameWriter.save_as_table()
créaient par erreur une nouvelle table si le nom de la table était entièrement qualifié et que la table existait déjà.
Dépréciations¶
Argument mot-clé
create_temp_table
obsolète dansSession.write_pandas()
.Obsolète : invocation d’UDFs en utilisant des arguments encapsulés dans une liste ou un tuple Python. Vous pouvez utiliser des arguments de longueur variable sans liste ou tuple.
Mises à jour des dépendances¶
Mise à jour du
snowflake-connector-python
vers la version 2.7.12.
Version 0.9.0¶
La version 0.9.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
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 d’UDFs. Cette fonction est activée par défaut. Pour la désactiver, transmettez le nouvel argument mot-clé
source_code_display
commeFalse
lors de l’appel deregister()
ou de@udf()
.Ajout de la prise en charge de l’appel de fonctions de table à partir de
DataFrame.select()
,DataFrame.with_column()
, etDataFrame.with_columns()
qui prennent désormais des paramètres de typetable_function.TableFunctionCall
pour les colonnes.Ajout d’un argument mot-clé
overwrite
àsession.write_pandas()
pour permettre de remplacer le contenu d’une table Snowflake avec celui d’un DataFrame Pandas.Ajout de l’argument mot-clé
column_order
àdf.write.save_as_table()
pour spécifier les règles de correspondance lors de l’insertion de données dans une table en mode Ajout.Ajout de la méthode
FileOperation.put_stream()
pour charger des fichiers locaux vers une zone de préparation via un flux de fichiers.Ajout des méthodes
TableFunctionCall.alias()
etTableFunctionCall.as_()
pour permettre de donner des alias aux noms des colonnes qui proviennent de la sortie des jointures de fonctions de table.Ajout de la fonction
get_active_session()
dans le modulesnowflake.snowpark.context
pour obtenir la session Snowpark active actuelle.
Améliorations¶
Amélioration de la fonction
function.uniform()
pour déduire les types des entréesmax_
etmin_
et convertir les limites enIntegerType
ouFloatType
, respectivement.
Corrections de bogues¶
Correction d’un bogue dans lequel l’insertion par lots ne doit pas produire d’erreur lorsque
statement_params
n’est pas transmis à la fonction.Correction d’un bug dans lequel les noms de colonnes doivent être mis entre guillemets lorsque
session.create_dataframe()
est appelé avec des dictionnaires et un schéma donné.Correction d’un bug dans lequel la création d’une table devrait être ignorée si la table existe déjà et est en mode Ajout lors de l’appel de
df.write.save_as_table()
.Correction d’un bogue dans lequel les packages tiers avec des traits de soulignement ne peuvent pas être ajoutés lors de l’enregistrement d’UDFs.
Version 0.8.0¶
La version 0.8.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
Ajout d’un argument de type mot-clé uniquement
statement_params
aux méthodes suivantes pour permettre de spécifier des paramètres de niveau instruction :collect
,to_local_iterator
,to_pandas
,to_pandas_batches
,count
,copy_into_table
,show
,create_or_replace_view
,create_or_replace_temp_view
,first
,cache_result
etrandom_split
sur la classesnowflake.snowpark.Dateframe
.update
,delete
etmerge
sur la classesnowflake.snowpark.Table
.save_as_table
etcopy_into_location
sur la classesnowflake.snowpark.DataFrameWriter
.approx_quantile
,statement_params
,cov
etcrosstab
sur la classesnowflake.snowpark.DataFrameStatFunctions
.register
etregister_from_file
sur la classesnowflake.snowpark.udf.UDFRegistration
.register
etregister_from_file
sur la classesnowflake.snowpark.udtf.UDTFRegistration
.register
etregister_from_file
sur la classesnowflake.snowpark.stored_procedure.StoredProcedureRegistration
.udf
,udtf
etsproc
danssnowflake.snowpark.functions
.
Ajout de la prise en charge de
Column
comme argument d’entrée desession.call()
.Ajout de la prise en charge de
table_type
dansdf.write.save_as_table()
. Vous pouvez maintenant choisir parmi ces optionstable_type
:temporary
,temp
, ettransient
.
Améliorations¶
Ajout de la validation du nom de l’objet dans les méthodes
session.use_*
.Mise à jour de la balise de requête en SQL pour l’échapper lorsqu’elle contient des caractères spéciaux.
Ajout d’une vérification pour voir si les conditions d’utilisation d’Anaconda sont acceptées lors de l’ajout de packages manquants.
Corrections de bogues¶
Correction de la longueur limitée de la colonne des chaînes dans
session.create_dataframe()
.Correction d’un bogue dans lequel
session.create_dataframe()
convertissait par erreur 0 etFalse
enNone
lorsque les données d’entrée étaient uniquement une liste.Correction d’un bogue dans lequel l’appel de
session.create_dataframe()
en utilisant un grand ensemble de données locales créait parfois une table temporaire deux fois.Alignement de la définition de
function.trim()
avec la définition de la fonction SQL.Correction d’un problème où snowpark-python se bloquait lors de l’utilisation de la fonction Python
sum
définie par le système (fonction intégrée) par rapport à la fonction Snowparkfunction.sum()
.
Version 0.7.0¶
La version 0.7.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
Ajout de la prise en charge des fonctions de table définies par l’utilisateur (UDTFs).
Utilisez la fonction
snowflake.snowpark.functions.udtf()
pour enregistrer une UDTF, ou utilisez-la comme décorateur pour enregistrer l’UDTF.Vous pouvez également utiliser
Session.udtf.register()
pour enregistrer une UDTF.Utilisez
Session.udtf.register_from_file()
pour enregistrer une UDTF à partir d’un fichier Python.
Mises à jour d’APIs pour interroger une fonction de table, y compris les fonctions de table intégrées à Snowflake et les UDTFs.
Utilisez la fonction
snowflake.snowpark.functions.table_function()
pour créer un objet appelable représentant une fonction de table et utilisez-le pour appeler la fonction de table dans une requête.Vous pouvez également utiliser la fonction
snowflake.snowpark.functions.call_table_function()
pour appeler une fonction de table.Ajout de la prise en charge de la clause
over
qui spécifiepartition by
etorder by
lors de la jointure latérale d’une fonction de table.Mise à jour de
Session.table_function()
etDataFrame.join_table_function()
pour accepter les instancesTableFunctionCall
.
Changements importants¶
Lors de la création d’une fonction avec
functions.udf()
etfunctions.sproc()
, vous pouvez désormais spécifier une liste vide pour l’argumentimports
ou l’argumentpackages
afin d’indiquer qu’aucune importation ou paquet n’est utilisé pour cette UDF ou procédure stockée. Auparavant, le fait de spécifier une liste vide signifiait que la fonction utiliserait les importations ou les paquets au niveau de la session.Amélioration de l’implémentation de
__repr__
des types de données danstypes.py
. Suppression de la propriététype_name
inutilisée.Ajout d’une classe d’exception spécifique à Snowpark pour les erreurs SQL. Cela remplace l’ancien
ProgrammingError
du connecteur Python.
Améliorations¶
Ajout d’un verrou à une UDF ou une UDTF lors de son premier appel par thread.
Amélioration du message d’erreur pour les erreurs de sérialisation survenues lors de la création d’une UDF.
Inclusion de l’ID de la requête lors de l’enregistrement de la requête échouée.
Corrections de bogues¶
Correction d’un bogue dans lequel les données non intégrales (telles que les horodatages) étaient occasionnellement converties en entier lors de l’appel de
DataFrame.to_pandas()
.Correction d’un bogue pour lequel
DataFrameReader.parquet()
ne parvenait pas à lire un fichier Parquet lorsque sa colonne contenait des espaces.Correction d’un bogue dans lequel
DataFrame.copy_into_table()
échouait lorsque le dataframe est créé en lisant un fichier avec des schémas inférés.
Dépréciations¶
Session.flatten()
etDataFrame.flatten()
.
Mises à jour des dépendances¶
Restriction de la version de
cloudpickle
<=2.0.0
.
Version 0.6.0¶
La version 0.6.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
Ajout de la prise en charge des UDFs vectorisées via l’API par lots UDF Python. L’API par lots UDF Python permet de définir des fonctions Python qui reçoivent des lots de lignes d’entrée sous forme de DataFrames Pandas et renvoient des lots de résultats sous forme de tableaux ou de séries Pandas. Cela peut améliorer les performances de vos UDFs dans Snowpark.
Ajout de la prise en charge de l’inférence de schéma d’un DataFrame par défaut lorsqu’il est créé par la lecture d’un fichier Parquet, Avro ou ORC dans la zone de préparation.
Ajouts des fonctions
current_session()
,current_statement()
,current_user()
,current_version()
,current_warehouse()
,date_from_parts()
,date_trunc()
,dayname()
,dayofmonth()
,dayofweek()
,dayofyear()
,grouping()
,grouping_id()
,hour()
,last_day()
,minute()
,next_day()
,previous_day()
,second()
,month()
,monthname()
,quarter()
,year()
,current_database()
,current_role()
,current_schema()
,current_schemas()
,current_region()
,current_avaliable_roles()
,add_months()
,any_value()
,bitnot()
,bitshiftleft()
,bitshiftright()
,convert_timezone()
,uniform()
,strtok_to_array()
,sysdate()
,time_from_parts()
,timestamp_from_parts()
,timestamp_ltz_from_parts()
,timestamp_ntz_from_parts()
,timestamp_tz_from_parts()
,weekofyear()
,percentile_cont()
tosnowflake.snowflake.functions
.
Améliorations¶
Ajout de la prise en charge de la création d’un
DataFrame
vide avec un schéma spécifique à l’aide de la méthodeSession.create_dataframe()
.Changement du niveau de journalisation de
INFO
àDEBUG
pour plusieurs journaux (par exemple, la requête exécutée) lors de l’évaluation d’un dataframe.Amélioration du message d’erreur lors de l’échec de la création d’une UDF en raison d’erreurs de sérialisation.
Suppression des APIs suivantes devenues obsolètes dans la version 0.4.0 :
DataFrame.groupByGroupingSets()
,DataFrame.naturalJoin()
,DataFrame.joinTableFunction
,DataFrame.withColumns()
,Session.getImports()
,Session.addImport()
,Session.removeImport()
,Session.clearImports()
,Session.getSessionStage()
,Session.getDefaultDatabase()
,Session.getDefaultSchema()
,Session.getCurrentDatabase()
,Session.getCurrentSchema()
,Session.getFullyQualifiedCurrentSchema()
.Ajout de
typing-extension
comme nouvelle dépendance avec la version >=4.1.0
.
Corrections de bogues¶
Suppression des dépendances matérielles de Pandas dans la méthode
Session.create_dataframe()
.
Version 0.5.0¶
La version 0.5.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
Ajout d’API de procédures stockées.
Ajout de la propriété
Session.sproc
et desproc()
àsnowflake.snowpark.functions
, afin de pouvoir enregistrer des procédures stockées.Ajout de
Session.call
pour appeler les procédures stockées par leur nom.Ajout de
UDFRegistration.register_from_file()
pour permettre l’enregistrement d’UDFs directement à partir de fichiers sources Python ou de fichiers zip.Ajout de
UDFRegistration.describe()
pour décrire une UDF.Ajout de
DataFrame.random_split()
pour fournir un moyen de diviser aléatoirement un dataframe.Ajout des fonctions
md5()
,sha1()
,sha2()
,ascii()
,initcap()
,length()
,lower()
,lpad()
,ltrim()
,rpad()
,rtrim()
,repeat()
,soundex()
,regexp_count()
,replace()
,charindex()
,collate()
,collation()
,insert()
,left()
,right()
,endswith()
àsnowflake.snowpark.functions
.La fonction
call_udf()
accepte désormais aussi les valeurs littérales.Mot-clé
distinct
fourni dansarray_agg()
.
Corrections de bogues¶
Correction d’un problème qui faisait que
DataFrame.to_pandas()
avait une colonne de type chaîne siColumn.cast(IntegerType())
était utilisé.Correction d’un bogue dans
DataFrame.describe()
lorsqu’il y a plus d’une colonne de chaîne.
Version 0.4.0¶
La version 0.4.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
Vous pouvez maintenant spécifier les paquets Anaconda à utiliser lors de la définition d’UDFs.
Ajout de
add_packages()
,get_packages()
,clear_packages()
, etremove_package()
à la classeSession
.Ajout de
add_requirements()
àSession
pour que vous puissiez utiliser un fichier d’exigences pour spécifier les paquets que cette session utilisera.Ajout d’un paramètre
packages
à la fonctionsnowflake.snowpark.functions.udf()
et à la méthodeUserDefinedFunction.register()
pour indiquer les dépendances des paquets Anaconda au niveau de l’UDF lors de la création d’une UDF.Ajout du paramètre
imports
àsnowflake.snowpark.functions.udf()
etUserDefinedFunction.register()
pour spécifier les importations de code au niveau de l’UDF.Ajout d’un paramètre
session
aux fonctionsudf()
etUserDefinedFunction.register()
afin que vous puissiez spécifier quelle session utiliser pour créer une UDF si vous avez plusieurs sessions.Ajout des types
Geography
etVariant
àsnowflake.snowpark.types
pour qu’ils soient utilisés comme indications de type pour les données Geography et Variant lors de la définition d’une UDF.Ajout de la prise en charge des données geoJSON Geography.
Ajout de
Table
, une sous-classe deDataFrame
pour les opérations sur les tables.Les méthodes
update
etdelete
mettent à jour et suppriment les lignes d’une table dans Snowflake.La méthode
merge
fusionne les données d’unDataFrame
avec unTable
.Méthode
DataFrame.sample()
remplacée par un paramètre supplémentaireseed
, qui fonctionne sur les tables, mais pas sur les vues et les sous-requêtes.Ajout de
DataFrame.to_local_iterator()
etDataFrame.to_pandas_batches()
pour permettre l’obtention de résultats à partir d’un itérateur lorsque le jeu de résultats renvoyé par la base de données Snowflake est trop grand.Ajout de
DataFrame.cache_result()
pour mettre en cache les opérations effectuées sur unDataFrame
dans une table temporaire. Les opérations ultérieures sur leDataFrame
d’origine n’ont aucun effet sur leDataFrame
de résultat mis en cache.Ajout de la propriété
DataFrame.queries
pour obtenir les requêtes SQL qui seront exécutées pour évaluer leDataFrame
.Ajout de
Session.query_history()
comme gestionnaire de contexte pour suivre les requêtes SQL exécutées sur une session, y compris toutes les requêtes SQL pour évaluer lesDataFrames
créés à partir d’une session. L’ID de la requête et le texte de la requête sont tous deux enregistrés.Vous pouvez maintenant créer une instance
Session
à partir d’unesnowflake.connector.SnowflakeConnection
établie existante. Utilisation du paramètreconnection
dansSession.builder.configs()
.Ajout de
use_database()
,use_schema()
,use_warehouse()
, etuse_role()
à la classeSession
pour changer de base de données/schéma/entrepôt/rôle après la création d’une session.Ajout de
DataFrameWriter.copy_into_table()
pour décharger unDataFrame
dans des fichiers en zone de préparation.Ajout de
DataFrame.unpivot()
.Ajout de
Column.within_group()
pour trier les lignes par colonnes avec certaines fonctions d’agrégation.Ajout des fonctions
listagg()
,mode()
,div0()
,acos()
,asin()
,atan()
,atan2()
,cos()
,cosh()
,sin()
,sinh()
,tan()
,tanh()
,degrees()
,radians()
,round()
,trunc()
, etfactorial()
àsnowflake.snowpark.functions
.Ajout d’un argument facultatif
ignore_nulls
dans les fonctionslead()
etlag()
.Le paramètre
condition
des fonctionswhen()
etiff()
accepte désormais les expressions SQL.
Améliorations¶
Tous les noms de fonctions et de méthodes ont été renommés pour utiliser le style de dénomination « snake case », qui est plus orienté Python. Pour des raisons de commodité, certains noms en camel case sont conservés comme alias dans les APIs snake case. Il est recommandé d’utiliser les APIs snake case.
Dépréciation de ces méthodes sur la classe
Session
et remplacement par leurs équivalents snake case :getImports()
,addImports()
,removeImport()
,clearImports()
,getSessionStage()
,getDefaultSchema()
,getDefaultSchema()
,getCurrentDatabase()
, etgetFullyQualifiedCurrentSchema()
.Les méthodes suivantes sont devenues obsolètes dans la classe
DataFrame
et sont remplacées par leurs équivalents snake case :groupingByGroupingSets()
,naturalJoin()
,withColumns()
, etjoinTableFunction()
.La propriété
DataFrame.columns
est maintenant cohérente avecDataFrame.schema.names
et les exigences de l’identificateur de la base de données Snowflake.Column.__bool__()
génère maintenant unTypeError
. Cela interdira l’utilisation des opérateurs logiquesand
,or
,not
sur l’objetColumn
. Par exemple,col("a") > 1 and col("b") > 2
génèrera uneTypeError
. Utilisez(col("a") > 1) & (col("b") > 2)
à la place.Changement de
PutResult
etGetResult
en sous-classeNamedTuple
.Correction d’un bogue qui générait une erreur lorsque le chemin local ou l’emplacement de la zone de préparation comporte un espace ou d’autres caractères spéciaux.
Modification de
DataFrame.describe()
de sorte que les colonnes qui ne sont pas numériques et qui ne sont pas des chaines soient ignorées au lieu de générer une exception.
Mises à jour des dépendances¶
Mise à jour de
snowflake-connector-python
vers la version 2.7.4.
Version 0.3.0¶
La version 0.3.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
Ajout de
Column.isin()
avec un aliasColumn.in_()
.Ajout de
Column.try_cast()
, qui est une version spéciale decast()
. Elle tente de convertir une expression de type chaîne en d’autres types et renvoienull
si la conversion n’est pas possible.Ajout de
Column.startswith()
etColumn.substr()
pour traiter les colonnes de type chaîne.Column.cast()
accepte désormais une valeurstr
pour indiquer le type de conversion en plus d’une instanceDataType
.Ajout de
DataFrame.describe()
pour synthétiser les statistiques d’unDataFrame
.Ajout de
DataFrame.explain()
pour afficher le plan de requête d’unDataFrame
.DataFrame.filter()
etDataFrame.select_expr()
acceptent maintenant une expression SQL.Ajout d’un nouveau paramètre
bool
appelécreate_temp_table
aux méthodesDataFrame.saveAsTable()
etSession.write_pandas()
pour créer facultativement une table temporaire.Ajout de
DataFrame.minus()
etDataFrame.subtract()
comme alias deDataFrame.except_()
.Ajout de
regexp_replace()
,concat()
,concat_ws()
,to_char()
,current_timestamp()
,current_date()
,current_time()
,months_between()
,cast()
,try_cast()
,greatest()
,least()
, ethash()
au modulesnowflake.snowpark.functions
.
Corrections de bogues¶
Correction d’un problème où
Session.createDataFrame(pandas_df)
etSession.write_pandas(pandas_df)
généraient une exception lorsque le DataFrame Pandas avait des espaces dans le nom de la colonne.Correction d’un problème où
DataFrame.copy_into_table()
affichait parfois de manière erronée une entrée de journal de niveau d’erreur.Correction d’un problème de documentation de l’API où certaines APIs de DataFrame étaient absentes de la documentation.
Mises à jour des dépendances¶
Mise à jour de
snowflake-connector-python
vers la version 2.7.2, ce qui met à niveau la dépendance depyarrow
vers la version 6.0.x. Pour plus d’informations, consultez les notes de mise à jour du connecteur Python 2.7.2.
Version 0.2.0¶
La version 0.2.0 de la bibliothèque Snowpark introduit de nouvelles fonctionnalités et améliorations.
Nouvelles fonctionnalités¶
Ajout de la méthode
createDataFrame()
pour créer un DataFrame à partir d’un DataFrame Pandas.Ajout de la méthode
write_pandas()
pour écrire un DataFrame Pandas dans une table dans Snowflake et récupérer un objet DataFrame Snowpark.Ajout de nouvelles classes et méthodes pour l’appel de fonctions de fenêtre.
Ajout des nouvelles fonctions
cume_dist()
, pour trouver la distribution cumulative d’une valeur par rapport aux autres valeurs dans une partition de fenêtre, etrow_number()
, qui renvoie un numéro de ligne unique pour chaque ligne dans une partition de fenêtre.Ajout de fonctions pour le calcul de statistiques pour DataFrames dans la classe
DataFrameStatFunctions
.Ajout de fonctions pour traiter les valeurs manquantes dans un DataFrame de la classe
DataFrameNaFunctions
.Ajout de nouvelles méthodes :
rollup()
,cube()
etpivot()
à la classe DataFrame.Ajout de la classe
GroupingSets
, que vous pouvez utiliser avec la méthode DataFramegroupByGroupingSets
pour effectuer unSQL GROUP BY GROUPING SETS
.Ajout de la nouvelle classe
FileOperation(session)
que vous pouvez utiliser pour charger et télécharger des fichiers vers et depuis une zone de préparation.Ajout de la méthode
copy_into_table()
pour charger les données des fichiers d’une zone de préparation dans une table.Dans les expressions CASE, les fonctions
when
etotherwise
acceptent désormais les types Python en plus des objetsColumn
.Lorsque vous enregistrez une UDF , vous pouvez maintenant, si vous le souhaitez, définir le paramètre
replace
surTrue
pour remplacer une UDF existante avec une autre qui porte le même nom.
Améliorations¶
Les UDFs sont désormais compressées avant d’être chargées sur le serveur. Ils sont ainsi environ 10 fois plus petits, ce qui peut s’avérer utile lorsque vous utilisez des fichiers de modèles ML volumineux.
Lorsque la taille d’une UDF est inférieure à 8 196 octets, celle-ci sera chargée en tant que code en ligne au lieu d’être chargée dans une zone de préparation.
Corrections de bogues¶
Correction d’un problème où l’instruction
df.select(when(col("a") == 1, 4).otherwise(col("a"))), [Row(4), Row(2), Row(3)]
générait une exception.Correction d’un problème où
df.toPandas()
générait une exception lorsqu’un DataFrame était créé à partir de données locales volumineuses.