Notes de version de la bibliothèque Snowpark pour Python pour 2022¶
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.0.0 (2022-11-01)¶
Nouvelles fonctionnalités¶
Ajout de
Session.generator()
pour créer un nouveau DataFrame en utilisant la fonction de table GENERATOR.Ajout du paramètre SECURE aux fonctions qui créent une UDF ou une UDTF sécurisée.
Version 0.12.0 (2022-10-14)¶
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 l’utiliser avec l’instruction 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 pour
using_columns
et de how 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 de schémas 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 (2022-09-28)¶
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 argument int.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 classe DataFrame.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()
, etDataFrame.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()
, etTable.merge()
essayaient de faire référence à une table temporaire qui n’existait pas.
Version 0.10.0 (2022-09-16)¶
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()
, etTable.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 (2022-08-30)¶
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
comme False 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ées max_
et min_
et convertir les limites en IntegerType
ou FloatType
, 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 bogue dans lequel les noms de colonnes doivent être mis entre guillemets lorsque
session.create_dataframe()
est appelé avec desdicts
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 (2022-07-22)¶
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
query
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 Snowpark
function.sum()
.
Version 0.7.0 (2022-05-25)¶
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écifie partition by et order 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’argument imports ou l’argument packages 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 (2022-04-27)¶
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.
Ajout 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() à snowflake.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éthode Session.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 (2022-03-22)¶
Nouvelles fonctionnalités¶
Ajout d’API de procédures stockées.
Ajout de la propriété Session.sproc et de sproc() à 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.
Fourniture d’un mot-clé distinct dans array_agg().
Corrections de bogues¶
Correction d’un problème qui faisait que DataFrame.to_pandas() avait une colonne de type chaîne si Column.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 (2022-02-15)¶
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(), and remove_package() à la classe Session.
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 fonction snowflake.snowpark.functions.udf() et à la méthode UserDefinedFunction.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() et UserDefinedFunction.register() pour spécifier les importations de code au niveau d’une UDF.
Ajout d’un paramètre session aux fonctions udf() et UserDefinedFunction.register() afin que vous puissiez spécifier quelle session utiliser pour créer une UDF si vous avez plusieurs sessions.
Ajout des types Geography et Variant à 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 de DataFrame pour les opérations sur les tables.
Les méthodes update et delete mettent à jour et suppriment les lignes d’une table dans Snowflake.
La méthode merge fusionne les données d’un DataFrame avec une table.
Méthode DataFrame.sample() remplacée par un paramètre supplémentaire seed, qui fonctionne sur les tables, mais pas sur les vues et les sous-requêtes.
Ajout de DataFrame.to_local_iterator() et DataFrame.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 un DataFrame dans une table temporaire. Les opérations ultérieures sur le DataFrame d’origine n’ont aucun effet sur le DataFrame 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 le DataFrame.
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 les DataFrames 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 de session à partir d’une snowflake.connector.SnowflakeConnection établie existante. Utilisez le paramètre connection dans Session.builder.configs().
Ajout de use_database(), use_schema(), use_warehouse() et use_role() à la classe Session 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 un DataFrame 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() et factorial() à snowflake.snowpark.functions.
Ajout d’un argument optionnel ignore_nulls dans les fonctions lead() et lag().
Le paramètre de condition des fonctions when() et iff() 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() et getFullyQualifiedCurrentSchema().
Dépréciation de ces méthodes sur la classe DataFrame et remplacement par leurs équivalents snake case : groupingByGroupingSets(), naturalJoin(), withColumns() et joinTableFunction().
La propriété DataFrame.columns est maintenant cohérente avec DataFrame.schema.names et les exigences de l’identificateur de la base de données Snowflake.
Column.__bool__() génère maintenant un TypeError. Cela interdira l’utilisation des opérateurs logiques and, or, not sur l’objet Colonne. Par exemple, col(« a ») > 1 et col(« b ») > 2 provoqueront un TypeError. Utilisez plutôt (col(« a ») > 1) & (col(« b ») > 2).
Changement de PutResult et GetResult en sous-classe NamedTuple.
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 chaînes 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 (2022-01-09)¶
Nouvelles fonctionnalités¶
Ajout de Column.isin() avec un alias Column.in_().
Ajout de Column.try_cast(), qui est une version spéciale de cast(). Elle tente de convertir une expression de type chaîne en d’autres types et renvoie null si la conversion n’est pas possible.
Ajout de Column.startswith() et Column.substr() pour traiter les colonnes de chaînes.
Column.cast() accepte désormais une valeur str pour indiquer le type de conversion en plus d’une instance DataType.
Ajout de DataFrame.describe() pour synthétiser les statistiques d’un DataFrame.
Ajout de DataFrame.explain() pour afficher le plan de requête d’un DataFrame.
DataFrame.filter() et DataFrame.select_expr() acceptent désormais une expression SQL.
Ajout d’un nouveau paramètre bool appelé create_temp_table aux méthodes DataFrame.saveAsTable() et Session.write_pandas() pour créer facultativement une table temporaire.
Ajout de DataFrame.minus() et DataFrame.subtract() comme alias de DataFrame.except_().
Ajout de regexp_replace(), concat(), concat_ws(), to_char(), current_timestamp(), current_date(), current_time(), months_between(), cast(), try_cast(), greatest(), least() et hash() au module snowflake.snowpark.functions.
Corrections de bogues¶
Correction d’un problème où Session.createDataFrame(pandas_df) et Session.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 à niveau de snowflake-connector-python vers la version 2.7.2, qui met à niveau la dépendance pyarrow vers la version 6.0.x. Pour plus d’informations, consultez les notes de version du connecteur Python 2.7.2.
Version 0.2.0 (2021-12-02)¶
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, et row_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() et pivot() à la classe DataFrame.
Ajout de la classe GroupingSets, que vous pouvez utiliser avec la méthode DataFrame groupByGroupingSets pour effectuer un SQL 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 et otherwise acceptent désormais les types Python en plus des objets de colonne.
Lorsque vous enregistrez une UDF, vous pouvez maintenant, si vous le souhaitez, définir le paramètre replace sur True 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.