Notes de version de la bibliothèque Snowpark pour Python pour 2024

Cet article contient les notes de version Snowpark Library for Python, y compris les éléments suivants, le cas échéant :

  • Changements de comportement

  • Nouvelles fonctionnalités

  • Corrections de bogues pour les clients

Snowflake utilise la version sémantique pour les mises à jour Snowpark Library for Python.

Voir Guide du développeur Snowpark pour Python pour la documentation.

Version 1.23.0 (2024-10-09)

Nouvelles fonctionnalités

  • Ajout des nouvelles fonctions suivantes dans snowflake.snowpark.functions :

    • make_interval

  • Ajout de la prise en charge de l’utilisation des constantes d’intervalle Snowflake avec Window.range_between() lorsque l’ordre par colonne est de type TIMESTAMP ou DATE.

  • Ajout de la prise en charge des écritures de fichiers. Cette fonctionnalité est actuellement proposée en avant-première privée.

  • Ajout de thread_id à QueryRecord pour suivre l’ID du thread soumettant l’historique des requêtes.

  • Ajout de la prise en charge de Session.stored_procedure_profiler.

Corrections de bogues

  • Correction d’un bogue où l’enregistrement d’une procédure stockée ou d’une UDxF avec des annotations de type générait un avertissement NoneType has no len() lors de la tentative de lecture des valeurs par défaut de la fonction.

Mises à jour de l’API pandas Snowpark

Nouvelles fonctionnalités

  • Ajout de la prise en charge de la méthode TimedeltaIndex.mean.

  • Ajout de la prise en charge de certains cas de colonnes Timedelta d’agrégation sur axis=0 avec agg ou aggregate.

  • Prise en charge de by, left_by, right_by, left_index, et right_index pour pd.merge_asof.

  • Ajout de la prise en charge de la transmission de paramètres include_describe à Session.query_history.

  • Ajout de la prise en charge de DatetimeIndex.mean, et DatetimeIndex.std.

  • Ajout de la prise en charge de Resampler.asfreq, Resampler.indices, Resampler.nunique, et Resampler.quantile.

  • Ajout de la prise en charge de la fréquence resample W, ME, YE avec closed = "left".

  • Ajout de la prise en charge de DataFrame.rolling.corr et Series.rolling.corr pour pairwise = False et int window.

  • Ajout de la prise en charge de la chaîne window basée sur le temps et de min_periods = None pour Rolling.

  • Prise en charge de DataFrameGroupBy.fillna et SeriesGroupBy.fillna.

  • Ajout de la prise en charge de la construction d’objets Series et DataFrame avec l’objet Index paresseux utilisé comme arguments data, index, et columns.

  • Ajout de la prise en charge de la construction d’objets Series et DataFrame avec des valeurs index et column non présentes dans DataFrame/Series data.

  • Ajout de la prise en charge de pd.read_sas (utilise des pandas natifs pour le traitement).

  • Ajout de la prise en charge de l’application de rolling().count() et expanding().count() à des séries et colonnes Timedelta.

  • Ajout de la prise en charge de tz dans pd.bdate_range et pd.date_range.

  • Ajout de la prise en charge de Series.items.

  • Ajout de la prise en charge de errors="ignore" dans pd.to_datetime.

  • Prise en charge de DataFrame.tz_localize et Series.tz_localize.

  • Prise en charge de DataFrame.tz_convert et Series.tz_convert.

  • Ajout de la prise en charge de l’application des fonctions Python Snowpark (par exemple, sin) dans Series.map, Series.apply, DataFrame.apply et DataFrame.applymap.

Améliorations

  • Amélioration de to_pandas pour conserver le décalage horaire d’origine pour le type TIMESTAMP_TZ.

  • Amélioration des résultats de dtype pour le type TIMESTAMP_TZ pour afficher le décalage horaire correct.

  • Amélioration des résultats de dtype pour le type TIMESTAMP_LTZ pour afficher le fuseau horaire correct.

  • Amélioration du message d’erreur lors de la transmission d’une valeur non booléenne à numeric_only pour les agrégations groupby.

  • Suppression de l’avertissement inutile concernant l’algorithme de tri dans sort_values.

  • Utilisation de l’objet SCOPED pour la création de tables temporaires internes. Les objets SCOPED seront limités à la portée de la procédure stockée s’ils sont créés dans une procédure stockée, sinon ils seront limités à la session. L’objet sera automatiquement nettoyé à la fin de la portée.

  • Amélioration des messages d’avertissement pour les opérations qui conduisent à une matérialisation avec une lenteur involontaire.

  • Suppression d’un message d’avertissement inutile concernant convert_dtype dans Series.apply.

Corrections de bogues

  • Correction d’un bogue où un objet Index créé à partir d’un Series/DataFrame met à jour de manière incorrecte le nom de l’index de Series/DataFrame après qu’une mise à jour sur place a été appliquée aux Series/DataFrame d’origine.

  • Suppression d’un SettingWithCopyWarning inutile qui apparaissait parfois lors de l’affiche de colonnes Timedelta.

  • Correction de l’argument inplace pour les objets Series dérivés d’autres objets Series.

  • Correction d’un bogue où Series.sort_values échouait si le nom de la série chevauchait le nom de la colonne d’index.

  • Correction d’un bogue où la transposition d’un dataframe mappait des niveaux d’index Timedelta aux niveaux de colonnes d’entiers.

  • Correction d’un bogue où des méthodes Resampler sur des colonnes timedelta produisaient des résultats entiers.

  • Correction d’un bogue où pd.to_numeric() laissait les entrées Timedelta en Timedelta au lieu de les convertir en entiers.

  • Correction de la définition de loc lors de la définition d’une ou plusieurs lignes d’un DataFrame avec une valeur de type Series.

Version 1.22.1 (2024-09-11)

  • Il s’agit d’une republication de la version 1.22.0. Veuillez vous référer aux notes de version 1.22.0 pour le contenu détaillé de la version.

Version 1.22.0 (2024-09-10)

Nouvelles fonctionnalités

  • Ajout des nouvelles fonctions suivantes dans snowflake.snowpark.functions :

    • array_remove

    • ln

Améliorations

  • Amélioration de la documentation pour Session.write_pandas en rendant l’option use_logical_type plus explicite.

  • Ajout de la prise en charge de la spécification des éléments suivants pour DataFrameWriter.save_as_table :

    • enable_schema_evolution

    • data_retention_time

    • max_data_extension_time

    • change_tracking

    • copy_grants

    • iceberg_config - Un dictionnaire pouvant contenir les options de configuration Iceberg suivantes :

      • external_volume

      • catalog

      • base_location

      • catalog_sync

      • storage_serialization_policy

  • Ajout de la prise en charge de la spécification des éléments suivants pour DataFrameWriter.copy_into_table :

    • iceberg_config - Un dictionnaire pouvant contenir les options de configuration Iceberg suivantes :

      • external_volume

      • catalog

      • base_location

      • catalog_sync

      • storage_serialization_policy

  • Ajout de la prise en charge de la spécification des paramètres suivants pour DataFrame.create_or_replace_dynamic_table :

    • mode

    • refresh_mode

    • initialize

    • clustering_keys

    • is_transient

    • data_retention_time

    • max_data_extension_time

Corrections de bogues

  • Correction d’un bogue dans session.read.csv qui provoquait une erreur lors de la définition de PARSE_HEADER = True dans un format de fichier défini en externe.

  • Correction d’un bogue dans la génération de requêtes à partir d’opérations d’ensemble qui permettait la génération de requêtes en double lorsque les enfants avaient des sous-requêtes communes.

  • Correction d’un bogue dans session.get_session_stage qui faisait référence à une zone de préparation inexistante après le changement de base de données ou de schéma.

  • Correction d’un bogue où l’appel de DataFrame.to_snowpark_pandas sans initialiser explicitement le plugin Snowpark pandas provoquait une erreur.

  • Correction d’un bogue où l’utilisation de la fonction explode dans la création de table dynamique provoquait une erreur de compilation SQL due à une conversion de type booléen incorrect sur le paramètre outer.

Mises à jour des tests locaux Snowpark

Nouvelles fonctionnalités

  • Ajout de la prise en charge de la coercition de type lors de la transmission de colonnes en entrée à des appels d’UDF.

  • Ajout de la prise en charge de Index.identical.

Corrections de bogues

  • Correction d’un bogue où le mode tronqué dans DataFrameWriter.save_as_table ne gérait pas correctement les DataFrames contenant uniquement un sous-ensemble de colonnes de la table existante.

  • Correction d’un bogue où la fonction to_timestamp ne définissait pas le fuseau horaire par défaut du type de données de la colonne.

Mises à jour de l’API pandas Snowpark

Nouvelles fonctionnalités

  • Ajout de la prise en charge limitée du type Timedelta , incluant les caractéristiques suivantes. Les pandas Snowpark vont lever NotImplementedError pour des cas d’utilisation Timedelta non pris en charge.

    • prise en charge du suivi du type Timedelta via copy, cache_result, shift, sort_index, assign, bfill, ffill, fillna, compare, diff, drop, dropna, duplicated, empty, equals, insert, isin, isna, items, iterrows, join, len, mask, melt, merge, nlargest, nsmallest, to_pandas.

    • prise en charge de la conversion de non-timedelta en timedelta via astype.

    • NotImplementedError sera levé pour le reste des méthodes qui ne prennent pas en charge Timedelta.

    • prise en charge de la soustraction de deux horodatages pour obtenir un Timedelta.

    • prise en charge l’indexation avec les colonnes de données Timedelta.

    • prise en charge de l’ajout ou de la soustraction d’horodatages et de Timedelta.

    • prise en charge de l’arithmétique binaire entre deux valeurs Timedelta.

    • prise en charge de l’arithmétique binaire et des comparaisons entre des valeurs Timedelta et des valeurs numériques.

    • prise en charge de TimedeltaIndex paresseux.

    • prise en charge de pd.to_timedelta.

    • prise en charge d’agrégations GroupBy, min, max, mean, idxmax, idxmin, std, sum, median, count, any, all, size, nunique, head, tail, aggregate.

    • prise en charge de filtrations GroupBy first et last.

    • prise en charge d’attributs TimedeltaIndex : days, seconds, microseconds et nanoseconds.

    • prise en charge de diff avec des colonnes d’horodatage axis=0 et axis=1.

    • prise en charge de méthodes TimedeltaIndex : ceil, floor et round.

    • prise en charge de méthode TimedeltaIndex.total_seconds.

  • Ajout de la prise en charge des opérateurs arithmétiques et de comparaison d’index.

  • Ajout de la prise en charge de Series.dt.round.

  • Ajout de pages de documentation pour DatetimeIndex.

  • Ajout de la prise en charge de Index.name, Index.names, Index.rename, et Index.set_names.

  • Ajout de la prise en charge de Index.__repr__.

  • Prise en charge de DatetimeIndex.month_name et DatetimeIndex.day_name.

  • Prise en charge de Series.dt.weekday, Series.dt.time et DatetimeIndex.time.

  • Prise en charge de Index.min et Index.max.

  • Ajout de la prise en charge de pd.merge_asof.

  • Prise en charge de Series.dt.normalize et DatetimeIndex.normalize.

  • Ajout de la prise en charge de Index.is_boolean, Index.is_integer, Index.is_floating, Index.is_numeric, et Index.is_object.

  • Ajout de la prise en charge de DatetimeIndex.round, DatetimeIndex.floor et DatetimeIndex.ceil.

  • Prise en charge de Series.dt.days_in_month et Series.dt.daysinmonth.

  • Prise en charge de DataFrameGroupBy.value_counts et SeriesGroupBy.value_counts.

  • Prise en charge de Series.is_monotonic_increasing et Series.is_monotonic_decreasing.

  • Prise en charge de Index.is_monotonic_increasing et Index.is_monotonic_decreasing.

  • Ajout de la prise en charge de pd.crosstab.

  • Ajout de la prise en charge de pd.bdate_range et de fréquences commerciales (B, BME, BMS, BQE, BQS, BYE, BYS) pour les deux pd.date_range et pd.bdate_range.

  • Ajout de la prise en charge d’objets Index comme labels dans DataFrame.reindex et Series.reindex.

  • Ajout de la prise en charge de Series.dt.days, Series.dt.seconds, Series.dt.microseconds, et Series.dt.nanoseconds.

  • Ajout de la prise en charge de la création d’un DatetimeIndex d’un Index de type numérique ou chaîne.

  • Ajout de la prise en charge de l’indexation des chaînes avec des objets Timedelta.

  • Ajout de la prise en charge de la méthode Series.dt.total_seconds.

Améliorations

  • Amélioration des performances de concaténation et de jointure lorsque des opérations sont effectuées sur une série provenant du même DataFrame en évitant les jointures inutiles.

  • Refactorisation de quoted_identifier_to_snowflake_type pour éviter de faire des requêtes de métadonnées si les types ont été mis en cache localement.

  • Amélioration de pd.to_datetime pour gérer tous les cas d’entrée locaux.

  • Création d’un index paresseux à partir d’un autre index paresseux sans extraire les données vers le client.

  • Élévation de NotImplementedError pour les opérateurs binaires d’index.

  • Affichage d’un message d’erreur plus clair lorsque Index.names est défini avec un objet qui n’est pas de type liste.

  • Émission d’un avertissement chaque fois que des valeurs MultiIndex sont extraites localement.

  • Amélioration du message d’avertissement pour pd.read_snowflake afin d’inclure la raison de la création lorsque la création d’une table temporaire est déclenchée.

  • Amélioration des performances pour DataFrame.set_index, ainsi que pour la définition de DataFrame.index ou Series.index en évitant les vérifications nécessitant des opérations coûteuses. Par conséquent, lorsque le nouvel index ne correspond pas à la longueur d’objet Series ou DataFrame actuelle, une ValueError n’est plus générée. Au lieu de cela, lorsque l’objet Series ou DataFrame est plus long que l’index fourni, le nouvel index de Series ou DataFrame est rempli avec des valeurs NaN pour les éléments « supplémentaires ». Dans le cas contraire, les valeurs supplémentaires dans l’index fourni sont ignorées.

Corrections de bogues

  • Arrêt de l’ignorance des nanosecondes dans les scalaires pd.Timedelta.

  • Correction de AssertionError dans l’arborescence des opérations binaires.

  • Correction d’un bogue dans Series.dt.isocalendar en utilisant une Series nommée

  • Correction de l’argument inplace pour les objets Series dérivés de colonnes DataFrame.

  • Correction d’un bogue où Series.reindex et DataFrame.reindex ne mettaient pas à jour correctement le nom de l’index des résultats.

  • Correction d’un bogue où Series.take ne donnait pas d’erreur lorsque axis=1 était spécifié.

Version 1.21.1 (2024-09-05)

Corrections de bogues

  • Correction d’un bogue où l’utilisation de to_pandas_batches avec des tâches asynchrones causait une erreur en raison d’une mauvaise gestion de l’attente de la fin de la requête asynchrone.

Version 1.21.0 (2024-08-19)

Nouvelles fonctionnalités

  • Ajout de la prise en charge de snowflake.snowpark.testing.assert_dataframe_equal, qui est une fonction utilitaire pour vérifier l’égalité de deux DataFrames Snowpark.

Améliorations

  • Ajout de la prise en charge des limitations de taille de chaîne côté serveur.

  • Ajout de la prise en charge de la création et de l’appel de procédures stockées, d’UDFs et d’UDTFs avec des arguments facultatifs.

  • Ajout de la prise en charge de la lignée de colonnes dans l’API DataFrame.lineage.trace.

  • Ajout de la prise en charge de la transmission d’options INFER_SCHEMA à DataFrameReader via INFER_SCHEMA_OPTIONS.

  • Ajout de la prise en charge de la transmission du paramètre parameters à Column.rlike et Column.regexp.

  • Ajout de la prise en charge du nettoyage automatique des tables temporaires créées par df.cache_result() dans la session en cours lorsque le DataFrame n’est plus référencé (c’est-à-dire lorsqu’il est récupéré lors du ramassage). Il s’agit d’une fonction encore expérimentale qui n’est pas activée par défaut. Elle peut être activée en définissant session.auto_clean_up_temp_table_enabled sur True.

  • Ajout de la prise en charge des littéraux de chaîne pour le paramètre fmt de snowflake.snowpark.functions.to_date.

Corrections de bogues

  • Correction d’un bogue où le SQL généré pour la sélection de la colonne * contenait une sous-requête incorrecte.

  • Correction d’un bogue dans DataFrame.to_pandas_batches où l’itérateur pouvait générer une erreur si une certaine transformation était apportée aux DataFrame pandas en raison d’un niveau d’isolation incorrect.

  • Correction d’un bogue dans DataFrame.lineage.trace pour séparer correctement le nom et la version de la vue de fonctionnalité entre guillemets.

  • Correction d’un bogue dans Column.isin qui causait une génération SQL non valide lorsqu’une liste vide était transmise.

  • Correction d’un bogue qui n’élevait pas NotImplementedError lors de la définition d’une cellule avec un élément de type liste.

Mises à jour des tests locaux Snowpark

Nouvelles fonctionnalités

  • Ajout de la prise en charge des APIs suivantes :

    • snowflake.snowpark.functions

      • rank

      • dense_rank

      • percent_rank

      • cume_dist

      • ntile

      • datediff

      • array_agg

    • snowflake.snowpark.column.Column.within_group

  • Ajout de la prise en charge de l’analyse des indicateurs dans les instructions Regex pour les plans simulés. Cela maintient la parité avec les changements de rlike et regexp ci-dessus.

Corrections de bogues

  • Correction d’un bogue où les fonctions de fenêtre LEAD et LAG ne géraient pas correctement l’option ignore_nulls.

  • Correction d’un bogue où les valeurs n’étaient pas renseignées dans le DataFrame de résultat lors de l’insertion d’une opération de fusion de table.

Améliorations

  • Correction de l’indice entier dans pandas FutureWarning.

Mises à jour de l’API pandas Snowpark

Nouvelles fonctionnalités

  • Ajout de la prise en charge de DataFrame.backfill, DataFrame.bfill, Series.backfill, et Series.bfill.

  • Ajout de la prise en charge de DataFrame.compare et Series.compare avec les paramètres par défaut.

  • Prise en charge de Series.dt.microsecond et Series.dt.nanosecond.

  • Prise en charge de Index.is_unique et Index.has_duplicates.

  • Ajout de la prise en charge de Index.equals.

  • Ajout de la prise en charge de Index.value_counts.

  • Prise en charge de Series.dt.day_name et Series.dt.month_name.

  • Ajout de la prise en charge de l’indexation sur l’index, par exemple, df.index[:10].

  • Prise en charge de DataFrame.unstack et Series.unstack.

  • Prise en charge de DataFrame.asfreq et Series.asfreq.

  • Prise en charge de Series.dt.is_month_start et Series.dt.is_month_end.

  • Prise en charge de Index.all et Index.any.

  • Prise en charge de Series.dt.is_year_start et Series.dt.is_year_end.

  • Prise en charge de Series.dt.is_quarter_start et Series.dt.is_quarter_end.

  • Ajout de la prise en charge de DatetimeIndex paresseux.

  • Prise en charge de Series.argmax et Series.argmin.

  • Ajout de la prise en charge de Series.dt.is_leap_year.

  • Ajout de la prise en charge de DataFrame.items.

  • Prise en charge de Series.dt.floor et Series.dt.ceil.

  • Ajout de la prise en charge de Index.reindex.

  • Ajout de la prise en charge des propriétés DatetimeIndex : year, month, day, hour, minute, second, microsecond, nanosecond, date, dayofyear, day_of_year, dayofweek, day_of_week, weekday, quarter, is_month_start, is_month_end, is_quarter_start, is_quarter_end, is_year_start, is_year_end et is_leap_year

  • Prise en charge de Resampler.fillna et Resampler.bfill.

  • Ajout de la prise en charge limitée du type Timedelta, incluant la création de colonnes Timedelta et to_pandas.

  • Prise en charge de Index.argmax et Index.argmin.

Améliorations

  • Suppression du message d’avertissement de l’avant-première publique lors de l’importation de pandas Snowpark.

  • Suppression de la requête de comptage inutile dans la méthode SnowflakeQueryCompiler.is_series_like.

  • Dataframe.columns renvoie désormais un objet Index pandas natif au lieu d’un objet Index Snowpark.

  • Refactorisation et introduction de l’argument query_compiler dans le constructeur Index pour créer Index à partir du compilateur de requêtes.

  • pd.to_datetime renvoie maintenant un objet DatetimeIndex au lieu d’un objet Series.

  • pd.date_range renvoie maintenant un objet DatetimeIndex au lieu d’un objet Series.

Corrections de bogues

  • Modification pour que la transmission d’une fonction d’agrégation non prise en charge à pivot_table lève une erreur NotImplementedError au lieu de KeyError.

  • Suppression des étiquettes d’axe et des noms appelables des messages d’erreur et de la télémétrie concernant les agrégations non prises en charge.

  • Correction de AssertionError dans Series.drop_duplicates et DataFrame.drop_duplicates lorsqu’appelé après sort_values.

  • Correction d’un bogue dans Index.to_frame où le nom de la colonne du cadre de résultat pouvait être erroné lorsque le nom n’est pas spécifié.

  • Correction d’un bogue où certaines docstrings d’index sont ignorées.

  • Correction d’un bogue dans Series.reset_index(drop=True) où le nom du résultat peut être erroné.

  • Correction d’un bogue dans Groupby.first/last concernant le tri par les bonnes colonnes dans l’expression de fenêtre sous-jacente.

Version 1.20.0 (2024-07-17)

La version 1.20.0 de la bibliothèque Snowpark pour Python ajoute de nouvelles fonctionnalités.

Nouvelles fonctionnalités

  • Ajout du traçage distribué à l’aide des APIs de télémétrie ouverte pour les fonctions de procédure stockée de table dans DataFrame :

    • _execute_and_get_query_id

  • Ajout de la prise en charge de la fonction arrays_zip.

  • Amélioration des performances pour les expressions de colonnes binaires et df._in en évitant les conversions inutiles pour les valeurs numériques. Vous pouvez activer cette optimisation en définissant session.eliminate_numeric_sql_value_cast_enabled = True.

  • Améliorations des messages d’erreur pour write_pandas lorsque la table cible n’existe pas et auto_create_table=False.

  • Ajout du traçage de télémétrie ouverte sur les fonctions UDxF dans Snowpark.

  • Ajout du traçage de télémétrie ouverte lors de l’enregistrement des procédures stockées dans Snowpark.

  • Ajout d’un nouveau paramètre facultatif appelé format_json à la fonction Session.SessionBuilder.app_name qui définit le nom de l’application dans le Session.query_tag dans le format JSON. Par défaut, ce paramètre est défini sur False.

Corrections de bogues

  • Correction d’un bogue où le SQL généré pour lag(x, 0) était incorrect et échouait avec le message d’erreur argument 1 to function LAG needs to be constant, found 'SYSTEM$NULL_TO_FIXED(null)'.

Mises à jour des tests locaux Snowpark

Nouvelles fonctionnalités

  • Ajout de la prise en charge des APIs suivantes :

    • snowflake.snowpark.functions

      • random

  • Ajout de nouveaux paramètres à la fonction patch lors de l’enregistrement d’une fonction simulée :

    • distinct permet de spécifier une fonction alternative lorsqu’une fonction SQL doit être distincte.

    • pass_column_index transmet un paramètre nommé, column_index, à la fonction simulée qui contient le pandas.Index pour les données d’entrée.

    • pass_row_index transmet un paramètre nommé, row_index, à la fonction simulée qui est le numéro de ligne indexé 0 sur lequel la fonction fonctionne actuellement.

    • pass_input_data transmet un paramètre nommé, input_data, à la fonction simulée qui contient l’intégralité du dataframe d’entrée pour l’expression actuelle.

    • Ajout de la prise en charge du paramètre column_order dans la méthode DataFrameWriter.save_as_table.

Corrections de bogues

  • Correction d’un bogue qui entraînait une troncature incorrecte des colonnes DecimalType à une précision entière lorsqu’elles étaient utilisées dans BinaryExpressions.

Mises à jour de l’API pandas Snowpark

Nouvelles fonctionnalités

  • Ajouté de la prise en charge de la nouvelle API pour les éléments suivants :

    • DataFrames

      • DataFrame.nlargest et DataFrame.nsmallest

      • DataFrame.assign

      • DataFrame.stack

      • DataFrame.pivot

      • DataFrame.to_csv

      • DataFrame.corr

      • DataFrame.corr

      • DataFrame.equals

      • DataFrame.reindex

      • DataFrame.at et DataFrame.iat

    • Série

      • Series.nlargest et Series.nsmallest

      • Series.at et Series.iat

      • Series.dt.isocalendar

      • Series.equals

      • Series.reindex

      • Series.to_csv

      • Series.case_when sauf lorsque la condition ou le remplacement peut être appelé

      • series.plot() avec des données matérialisées vers le client local.

    • GroupBy

      • DataFrameGroupBy.all et DataFrameGroupBy.any

      • Agrégations DataFrameGroupBy et SeriesGroupBy first et last

      • DataFrameGroupBy.get_group

      • SeriesGroupBy.all et SeriesGroupBy.any

    • Général

      • pd.pivot

      • read_excel (utilise pandas localement pour le traitement)

      • df.plot() avec des données matérialisées vers le client local.

  • APIs existantes étendues comme suit :

    • Prise en charge de replace et frac > 1 dans DataFrame.sample et Series.sample.

    • Ajout de la prise en charge de partielle de Series.str.translate où les valeurs dans la table sont des chaînes à point de code unique.

    • Ajout de la prise en charge du paramètre limit lorsque le paramètre method est utilisé dans fillna.

  • Ajout de pages de documentation pour Index et ses APIs.

Corrections de bogues

  • Correction d’un problème lors de l’utilisation de np.where et df.where lorsque le scalaire other est le littéral 0.

  • Correction d’un bogue concernant la perte de précision lors de la conversion en DataFrame pandas Snowpark ou Series avec dtype=np.uint64.

  • Correction d’un bogue où values est défini sur index quand index et columns contiennent toutes les colonnes de DataFrame pendant pivot_table.

Améliorations

  • Ajout de la prise en charge de Index.copy().

  • Ajout de la prise en charge des APIs Index : dtype, values, item(), tolist(), to_series() et to_frame().

  • Prise en charge étendue de DataFrames sans aucune ligne dans pd.pivot_table et DataFrame.pivot_table.

  • Ajout de la prise en charge du paramètre inplace dans DataFrame.sort_index et Series.sort_index.

Version 1.19.0 (2024-06-25)

La version 1.19.0 de la bibliothèque Snowpark pour Python ajoute de nouvelles fonctionnalités.

Nouvelles fonctionnalités

  • Ajout de la prise en charge de la fonction to_boolean.

  • Ajout de pages de documentation pour Index et ses APIs.

Corrections de bogues

  • Correction d’un bogue où les procédures stockées Python avec le type de retour de tables échouent lorsqu’elles sont exécutées dans une tâche.

  • Correction d’un bogue où df.dropna échouait à cause de RecursionError: maximum recursion depth exceeded quand le DataFrame comportait plus de 500 colonnes.

  • Correction d’un bogue où AsyncJob.result("no_result") n’attendait pas que la requête termine son exécution.

Mise à jour des tests locaux

Nouvelles fonctionnalités

  • Ajout de la prise en charge du paramètre strict lors de l’inscription d’UDFs et de procédures stockées.

Corrections de bogues

  • Correction d’un bogue dans convert_timezone qui provoquait une erreur lors de la définition du paramètre source_timezone.

  • Correction d’un bogue où la création d’un DataFrame avec des données vides de type DateType levait AttributeError.

  • Correction d’un bogue où la fusion de table échouait lorsqu’une clause de mise à jour existait, mais qu’aucune mise à jour n’avait lieu.

  • Correction d’un bogue dans l’implémentation simulée de to_char qui levait IndexError lorsqu’une colonne entrante avait un index de lignes non consécutif.

  • Correction d’un bogue dans la gestion d’expressions CaseExpr qui levait IndexError lorsqu’une colonne entrante avait un index de ligne non consécutif.

  • Correction d’un bogue dans l’implémentation de Column.like qui levait IndexError lorsqu’une colonne entrante avait un index de ligne non consécutif.

Améliorations

  • Ajout de la prise en charge de la coercition de type dans l’implémentation de DataFrame.replace, DataFrame.dropna, et dans la fonction simulée iff.

Mises à jour de l’API pandas Snowpark

Nouvelles fonctionnalités

  • Ajout de la prise en charge partielle de DataFrame.pct_change et Series.pct_change sans les paramètres freq et limit.

  • Ajout de la prise en charge de Series.str.get.

  • Ajout de la prise en charge de Series.dt.dayofweek, Series.dt.day_of_week, Series.dt.dayofyear, et Series.dt.day_of_year.

  • Ajout de la prise en charge de Series.str.__getitem__ (Series.str[...]).

  • Ajout de la prise en charge de Series.str.lstrip et Series.str.rstrip.

  • Ajout de la prise en charge de DataFrameGroupby.size et SeriesGroupby.size.

  • Ajout de la prise en charge de DataFrame.expanding et Series.expanding pour les agrégations count, sum, min, max, mean, std, et var avec axis=0.

  • Ajout de la prise en charge de DataFrame.rolling and Series.rolling pour le comptage d’agrégation avec axis=0

  • Ajout de la prise en charge de Series.str.match.

  • Ajout de la prise en charge de DataFrame.resample et Series.resample pour la taille d’agrégation.

Corrections de bogues

  • Correction d’un bogue qui provoquait un ordre incorrect des colonnes GroupBy.aggregate dans la sortie.

  • Correction d’un bogue lors de l’appel de DataFrame.describe sur un cadre avec des colonnes dupliquées de différente*s dtypes qui pouvait entraîner une erreur ou des résultats incorrects.

  • Correction d’un bogue dans DataFrame.rolling et Series.rolling pour que window=0 lève désormais une erreur NotImplementedError au lieu d’une ValueError

Améliorations

  • Ajout de la prise en charge des agrégations nommées dans DataFrame.aggregate et Series.aggregate avec axis=0.

  • pd.read_csv lit en utilisant l’analyseur CSV pandas natif, puis charge les données sur Snowflake à l’aide de parquet. Cela active la plupart des paramètres pris en charge par read_csv, y compris l’analyse des dates et les conversions numériques. Le chargement via parquet est environ deux fois plus rapide que le chargement via CSV.

  • Travaux initiaux pour la prise en charge d’un pd.Index directement dans Snowpark pandas. La rise en charge de pd.Index en tant que composant de premier ordre de Snowpark pandas est en cours de développement actif.

  • Ajout d’un constructeur d’index paresseux et prise en charge de len, shape, size, empty, to_pandas(), et names. Pour df.index, Snowpark pandas crée un objet d’index paresseux.

  • Pour df.columns, Snowpark pandas prend en charge une version non paresseuse d’un Index car les données sont déjà stockées localement.

Version 1.18.0 (2024-05-28)

La version 1.18.0 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.

Nouvelles fonctionnalités

  • Ajout des méthodes DataFrame.cache_result et Series.cache_result permettant aux utilisateurs de faire persister les objets DataFrame et Series dans une table temporaire pour la durée d’une session afin d’améliorer la latence des opérations ultérieures.

Améliorations

  • Ajout de la prise en charge de DataFrame.pivot_table sans paramètre index et avec le paramètre margins.

  • Mise à jour de la signature de DataFrame.shift, Series.shift, DataFrameGroupBy.shift, et SeriesGroupBy.shift pour correspondre à pandas 2.2.1. Snowpark pandas ne prend pas encore en charge l’argument de suffixe nouvellement ajouté ou les valeurs de séquence des périodes.

  • Nouvel ajout de la prise en charge de Series.str.split.

Corrections de bogues

  • Correction d’un problème avec les colonnes mixtes pour les méthodes de chaînes (Series.str.*).

Mise à jour des tests locaux

Nouvelles fonctionnalités

  • Ajout de la prise en charge des options de lecture DataFrameReader suivantes aux formats de fichiers CSV et JSON :

    • PURGE

    • PATTERN

    • INFER_SCHEMA avec valeur False

    • ENCODING avec valeur UTF8

  • Prise en charge de DataFrame.analytics.moving_agg et DataFrame.analytics.cumulative_agg_agg.

  • Ajout de la prise en charge du paramètre if_not_exists lors de l’enregistrement d’UDF et des procédures stockées.

Corrections de bogues

  • Correction d’un bogue dans le traitement des formats d’heure où la partie fractionnaire de la seconde n’était pas traitée correctement.

  • Correction d’un bogue qui provoquait l’échec des appels de fonctions sur *.

  • Correction d’un bogue qui empêchait la création d’objets de type map et struct.

  • Correction d’un bogue où la fonction date_add ne pouvait pas gérer certains types numériques.

  • Correction d’un bogue où le casting de TimestampType entraînait des données incorrectes.

  • Correction d’un bogue qui faisait que les données de DecimalType avaient une précision incorrecte dans certains cas.

  • Correction d’un bogue où le référencement d’une table ou d’une vue manquante générait un message d’erreur IndexError.

  • Correction d’un bogue où la fonction simulée to_timestamp_ntz ne pouvait pas gérer les données None.

  • Correction d’un bogue à cause duquel des UDFs factices géraient mal les données de sortie None.

  • Correction d’un bogue à cause duquel DataFrame.with_column_renamed ignorait les attributs de DataFrames parents après les opérations de jointure.

  • Correction d’un bogue où la précision à l’entier près des grandes valeurs était perdue lors de la conversion en DataFrame pandas.

  • Correction d’un bogue où le schéma d’un objet datetime était erroné lors de la création d’un DataFrame à partir d’un DataFrame pandas.

  • Correction d’un bogue dans l’implémentation de Column.equal_nan où les données nulles étaient traitées de manière incorrecte.

  • Correction d’un bogue à cause duquel DataFrame.drop ignorait les attributs de DataFrames parents après les opérations de jointure.

  • Correction d’un bogue dans la fonction factice date_part où le type de colonne était défini de manière incorrecte.

  • Correction d’un bogue à cause duquel DataFrameWriter.save_as_table ne soulevait pas d’exception lors de l’insertion de données nulles dans des colonnes non nulles.

  • Correction d’un bogue dans l’implémentation de DataFrameWriter.save_as_table où :

    • L’ajout ou la troncature échouait lorsque les données entrantes avaient un schéma différent de celui de la table existante.

    • Le truncate a échoué lorsque les données entrantes ne spécifiaient pas de colonnes pouvant être null.

Améliorations

  • Suppression de la vérification de la dépendance pour pyarrow car elle n’est pas utilisée.

  • Amélioration de la couverture des types cibles de Column.cast, en ajoutant la prise en charge du casting vers les types booléens et tous les types intégraux.

  • Alignement des erreurs lors de l’appel d’UDFs et de procédures stockées.

  • Ajout de messages d’erreur appropriés pour les options is_permanent et anonymous dans des UDFs et l’enregistrement des procédures stockées afin d’indiquer plus clairement que ces fonctions ne sont pas encore prises en charge.

  • Les opérations de lecture de fichiers avec des options et des valeurs non prises en charge génèrent désormais NotImplementedError au lieu d’avertissements et d’informations d’erreur peu claires.

Version 1.17.0 (2024-05-21)

La version 1.17.0 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.

Nouvelles fonctionnalités

  • Ajout de la possibilité d’ajouter un commentaire sur les tables et les vues à l’aide des fonctions listées ci-dessous :

    • DataFrameWriter.save_as_table

    • DataFrame.create_or_replace_view

    • DataFrame.create_or_replace_temp_view

    • DataFrame.create_or_replace_dynamic_table

Améliorations

  • Amélioration du message d’erreur pour rappeler aux utilisateurs de définir {"infer_schema": True} lorsqu’ils lisent un fichier CSV sans spécifier son schéma.

Mise à jour des tests locaux

Nouvelles fonctionnalités

  • Ajout de la prise en charge de la conversion des données NumericType et VariantType dans les fonctions factices to_timestamp_ltz, to_timestamp_ntz, to_timestamp_tz et to_timestamp.

  • Ajout de la prise en charge de la conversion des données pour DecimalType, BinaryType, ArrayType, MapType, TimestampType, DateType et TimeType dans la fonction factice to_char.

  • Ajout de la prise en charge des APIs suivantes :

    • snowflake.snowpark.functions.to_varchar

    • snowflake.snowpark.DataFrame.pivot

    • snowflake.snowpark.Session.cancel_all

  • Introduction d’une nouvelle classe d’exception snowflake.snowpark.mock.exceptions.SnowparkLocalTestingException.

  • Ajout de la prise en charge du casting vers FloatType.

Corrections de bogues

  • Correction d’un bogue qui empêchait les procédures stockées et les UDFs de supprimer les importations déjà présentes dans sys.path lors de l’étape de nettoyage.

  • Correction d’un bogue : lors du traitement du format datetime, la partie fractionnaire de la partie seconde n’est pas traitée correctement.

  • Correction d’un bogue qui empêchait les opérations de fichiers sur la plateforme Windows de gérer correctement les séparateurs de fichiers dans les noms de répertoire.

  • Correction d’un bogue sur la plateforme Windows qui, lors de la lecture d’un dataframe pandas, ne permettait pas de traiter une colonne IntervalType contenant des données d’entiers.

  • Correction d’un bogue qui empêchait les utilisateurs de sélectionner plusieurs colonnes avec le même alias.

  • Correction d’un bogue à cause duquel Session.get_current_[schema |database| role |user| account|warehouse] renvoie des identificateurs en majuscules lorsque les identificateurs sont entre guillemets.

  • Correction d’un bogue à cause duquel les fonctions substr et substring ne peuvent pas gérer un start_expr de base zéro.

Améliorations

  • Normalisation de l’expérience d’erreur en levant SnowparkLocalTestingException dans les cas d’erreur, ce qui correspond à la levée de SnowparkSQLException dans l’exécution non locale.

  • Amélioration de l’expérience d’erreur de la méthode Session.write_pandas de sorte que NotImplementError soit levée lorsqu’elle est appelée.

  • Alignement des erreurs liées à la réutilisation d’une session fermée dans le cadre d’une exécution non locale.

Version 1.16.0 (2024-05-08)

La version 1.16.0 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.

Nouvelles fonctionnalités

  • Ajout de snowflake.snowpark.Session.lineage.trace pour explorer la lignée des données des objets Snowflake.

  • Ajout de la prise en charge de l’enregistrement des procédures stockées avec des paquets donnés comme modules Python.

  • Ajout de la prise en charge de l’analyse des schémas de types structurés.

Corrections de bogues

  • Correction d’un bogue où, lors de la déduction d’un schéma, des guillemets simples étaient ajoutés aux fichiers de la zone de préparation qui en comportaient déjà.

Mise à jour des tests locaux

Nouvelles fonctionnalités

  • Ajout de la prise en charge de la conversion des données StringType, TimestampType et VariantType dans la fonction factice to_date.

  • Ajout de la prise en charge des APIs suivantes :

    • snowflake.snowpark.functions :

      • get

      • concat

      • concat_ws

Corrections de bogues

  • Correction d’un bogue qui empêchait la reconnaissance des valeurs NaT et NaN.

  • Correction d’un bogue où, lors de la déduction d’un schéma, des guillemets simples étaient ajoutés aux fichiers de la zone de préparation qui en comportaient déjà.

  • Correction d’un bogue qui empêchait DataFrameReader.csv de gérer les valeurs entre guillemets contenant un délimiteur.

  • Correction d’un bogue qui faisait que lorsqu’il y avait une valeur None dans un calcul arithmétique, la sortie devait rester None au lieu de math.nan.

  • Correction d’un bogue dans les fonctions sum et covar_pop : lorsqu’il y a une valeur math.nan dans les données, la sortie devrait également être math.nan.

  • Correction d’un bogue dans lequel les opérations de zone de préparation ne peuvent pas gérer les répertoires.

  • Correction d’un bogue qui faisait que DataFrame.to_pandas devait prendre les types numériques Snowflake avec une précision de 38 comme int64.

Version 1.15.0 (2024-04-24)

La version 1.15.0 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.

Nouvelles fonctionnalités

  • Ajout du mode de sauvegarde truncate dans DataFrameWrite pour écraser les tables existantes en tronquant la table sous-jacente au lieu de la supprimer.

  • Ajout de télémétrie pour calculer la hauteur du plan de requête et le nombre de nœuds en double pendant les opérations de collecte.

  • Ajout des fonctions ci-dessous pour décharger les données d’un DataFrame dans un ou plusieurs fichiers d’une zone de préparation :

    • DataFrame.write.json

    • DataFrame.write.csv

    • DataFrame.write.parquet

  • Ajout d’un traçage distribué utilisant des APIs de télémétrie ouverte pour les fonctions d’action dans DataFrame et DataFrameWriter :

    • snowflake.snowpark.DataFrame :

      • collect

      • collect_nowait

      • to_pandas

      • count

      • show

    • snowflake.snowpark.DataFrameWriter :

      • save_as_table

  • Prise en charge des snow:// URLs pour snowflake.snowpark.Session.file.get et snowflake.snowpark.Session.file.get_stream.

  • Ajout d’une prise en charge pour l’enregistrement des procédures stockées et d’UDFs avec comment.

  • La prise en charge des UDAF clientes est prête à être présentée en avant-première publique. Restez à l’écoute pour l’annonce par Snowflake de la disponibilité en avant-première des UDAF.

  • Ajout de la prise en charge du pivot dynamique. Cette fonctionnalité est actuellement proposée en avant-première privée.

Améliorations

  • Amélioration des performances des requêtes générées, tant au niveau de la compilation que de l’exécution, grâce à la conversion des sous-requêtes en double en expressions de tables communes (CTEs). Il s’agit d’une fonction encore expérimentale qui n’est pas activée par défaut. Vous pouvez l’activer en réglant session.cte_optimization_enabled sur True.

Corrections de bogues

  • Correction d’un bogue où statement_params n’est pas transmis aux exécutions de requêtes qui enregistrent des procédures stockées et des fonctions définies par l’utilisateur.

  • Correction d’un bogue provoquant l’échec de snowflake.snowpark.Session.file.get_stream pour les zones de préparation entre guillemets.

  • Correction d’un bogue qui faisait qu’une indication de type interne dans utils.py pouvait soulever AttributeError lorsque le module sous-jacent ne pouvait pas être trouvé.

Mise à jour des tests locaux

Nouvelles fonctionnalités

  • Ajout de la prise en charge de l’enregistrement des UDFs et des procédures stockées.

  • Ajout de la prise en charge des APIs suivantes :

    • snowflake.snowpark.Session :

      • file.put

      • file.put_stream

      • file.get

      • file.get_stream

      • read.json

      • add_import

      • remove_import

      • get_imports

      • clear_imports

      • add_packages

      • add_requirements

      • clear_packages

      • remove_package

      • udf.register

      • udf.register_from_file

      • sproc.register

      • sproc.register_from_file

    • snowflake.snowpark.functions

      • current_database

      • current_session

      • date_trunc

      • object_construct

      • object_construct_keep_null

      • pow

      • sqrt

      • udf

      • sproc

  • Ajout de la prise en charge de la conversion des données StringType, TimestampType et VariantType dans la fonction factice to_time.

Corrections de bogues

  • Correction d’un bogue qui remplissait en valeurs null les colonnes pour les fonctions constantes.

  • Correction de to_object, to_array et to_binary pour mieux gérer les entrées nulles.

  • Correction d’un bogue empêchant la comparaison des données d’horodatage de prendre en compte les années au-delà de 2262.

  • Correction d’un bogue selon lequel Session.builder.getOrCreate devrait renvoyer la session fictive créée.

Version 1.14.0 (2024-03-20)

La version 1.14.0 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.

Nouvelles fonctionnalités

  • Ajout de la prise en charge de la création d’UDTFs vectorisées avec la méthode process.

  • Ajout de la prise en charge des fonctions de dataframe :

    • to_timestamp_ltz

    • to_timestamp_ntz

    • to_timestamp_tz

    • locate

  • Ajout de la prise en charge du type ASOF JOIN.

  • Ajout de la prise en charge des APIs de test locales suivantes :

    • snowflake.snowpark.functions :

      • to_double

      • to_timestamp

      • to_timestamp_ltz

      • to_timestamp_ntz

      • to_timestamp_tz

      • greatest

      • least

      • convert_timezone

      • dateadd

      • date_part

    • snowflake.snowpark.Session :

      • get_current_account

      • get_current_warehouse

      • get_current_role

      • use_schema

      • use_warehouse

      • use_database

      • use_role

Améliorations

  • Ajout de la télémétrie pour les tests locaux.

  • Amélioration du message d’erreur de DataFrameReader pour faire apparaître l’erreur FileNotFound lors de la lecture d’un chemin qui n’existe pas ou lorsqu’il n’y a pas de fichiers sous le chemin.

Corrections de bogues

  • Correction d’un bogue dans SnowflakePlanBuildersave_as_table ne filtre pas correctement les colonnes dont le nom commence par $ et est suivi d’un chiffre.

  • Correction d’un bogue où les paramètres d’instruction pouvaient n’avoir aucun effet lors de la résolution des importations et des paquets.

  • Correction de bogues lors des tests locaux :

    • Les jointures LEFT ANTI et LEFT SEMI suppriment les lignes dont les valeurs sont nulles.

    • DataFrameReader.csv analyse incorrectement les données lorsque le paramètre facultatif field_optionally_enclosed_by est spécifié.

    • Column.regexp ne prend en compte que la première entrée lorsque pattern est un Column.

    • Table.update soulève KeyError lors de la mise à jour de valeurs nulles dans les lignes.

    • Les colonnes VARIANT soulèvent des erreurs dans DataFrame.collect.

    • count_distinct ne fonctionne pas correctement lors du comptage.

    • Les valeurs nulles dans les colonnes de nombres entiers soulèvent TypeError.

Version 1.13.0 (2024-02-26)

La version 1.13.0 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.

Nouvelles fonctionnalités

  • Ajout de la prise en charge d’un argument facultatif date_part dans la fonction last_day.

  • SessionBuilder.app_name définira le query_tag après la création de la session.

  • Ajout de la prise en charge des fonctions de test locales suivantes :

    • current_timestamp

    • current_date

    • current_time

    • strip_null_value

    • upper

    • lower

    • length

    • initcap

Améliorations

  • Ajout d’une logique de nettoyage lors de l’arrêt de l’interpréteur pour fermer toutes les sessions actives.

Corrections de bogues

  • Correction d’un bogue dans DataFrame.to_local_iterator où l’itérateur pouvait produire des résultats erronés si une autre requête était exécutée avant la fin de l’itérateur en raison d’un mauvais niveau d’isolation.

  • Correction d’un bogue qui tronquait les noms de tables dans les messages d’erreur lors de l’exécution d’un plan avec les tests locaux activés.

  • Correction d’un bogue qui faisait que Session.range renvoyait un résultat vide lorsque la plage était grande.

Version 1.12.1 (2024-02-08)

La version 1.12.1 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.

Améliorations

  • Utilisez split_blocks=True par défaut lors de la conversion to_pandas pour une allocation optimale de la mémoire. Ce paramètre est transmis à pyarrow.Table.to_pandas, ce qui permet à PyArrow de diviser l’allocation de mémoire en blocs plus petits et plus faciles à gérer au lieu d’allouer un seul bloc contigu. Il en résulte une meilleure gestion de la mémoire lorsque l’on traite des ensembles de données plus importants.

Corrections de bogues

  • Correction d’un bogue dans DataFrame.to_pandas qui provoquait une erreur lors de l’évaluation d’un dataframe avec une colonne IntergerType avec des valeurs nulles.

Version 1.12.0 (2024-01-29)

La version 1.12.0 de la bibliothèque Snowpark ajoute de nouvelles fonctionnalités.

Changements de comportement (compatible API)

  • Lors de l’analyse des types de données au cours d’une opération to_pandas , nous nous appuyons sur la valeur de précision GS pour résoudre les problèmes de précision des grandes valeurs entières. Cela peut affecter les utilisateurs lorsqu’une colonne qui était précédemment renvoyée en tant que int8 est renvoyée en tant que int64. Les utilisateurs peuvent remédier à ce problème en spécifiant explicitement des valeurs de précision pour leur colonne de retour.

  • Comportement aligné pour Session.call dans le cas des procédures stockées de table où l’exécution de Session.call ne déclencherait pas une procédure stockée à moins qu’une opération collect() ne soit effectuée.

  • StoredProcedureRegistration ajoute désormais automatiquement snowflake-snowpark-python en tant que dépendance du paquet sur la version locale de la bibliothèque du client. Une erreur est générée si le serveur ne peut pas prendre en charge cette version.

Nouvelles fonctionnalités

  • Exposition de statement_params dans StoredProcedure.__call__.

  • Ajout de deux arguments facultatifs à Session.add_import :

    • chunk_size : le nombre d’octets à hacher par morceau des fichiers chargés.

    • whole_file_hash : par défaut, seul le premier morceau de l’importation chargée est haché pour gagner du temps. Lorsque ce paramètre est défini sur True, chaque fichier chargé est entièrement haché.

  • Ajout des paramètres external_access_integrations et secrets lors de la création d’un UDAF à partir de Snowpark Python pour permettre l’intégration avec un accès externe.

  • Ajout d’une nouvelle méthode Session.append_query_tag, qui permet d’ajouter une balise supplémentaire à la balise de requête actuelle en l’ajoutant sous la forme d’une valeur séparée par des virgules.

  • Ajout d’une nouvelle méthode Session.update_query_tag, qui permet de mettre à jour une balise de requête de dictionnaire encodée JSON.

  • SessionBuilder.getOrCreate tentera désormais de remplacer le singleton qu’il renvoie lorsque l’expiration du jeton a été détectée.

  • Ajout des fonctions suivantes dans snowflake.snowpark.functions :

    • array_except

    • create_map

    • sign / signum

  • Les fonctions suivantes ont été ajoutées à DataFrame.analytics :

    • Ajout de la fonction moving_agg dans DataFrame.analytics pour permettre les agrégations mobiles telles que les sommes et les moyennes avec plusieurs tailles de fenêtres.

    • Ajout de la fonction cummulative_agg dans DataFrame.analytics pour permettre les agrégations mobiles telles que les sommes et les moyennes avec plusieurs tailles de fenêtres.

Corrections de bogues

  • Correction d’un bogue dans DataFrame.na.fill qui entraînait le remplacement erroné des valeurs booléennes par des valeurs entières.

  • Correction d’un bogue dans Session.create_dataframe où le DataFrames Snowpark créé en utilisant les DataFrames pandas ne déduisait pas correctement le type pour les colonnes d’horodatage. Le comportement est le suivant :

    • Auparavant, les colonnes d’horodatage sans fuseau horaire étaient converties en époques de nanosecondes et déduites comme LongType(), mais elles seront désormais correctement maintenues en tant que valeurs d’horodatage et déduites comme TimestampType(TimestampTimeZone.NTZ).

    • Auparavant, les colonnes d’horodatage comportant un fuseau horaire étaient déduites comme TimestampType(TimestampTimeZone.NTZ) et perdaient les informations relatives au fuseau horaire, mais elles sont désormais correctement déduites comme TimestampType(TimestampTimeZone.LTZ) et les informations relatives au fuseau horaire sont conservées correctement.

    • Définissez le paramètre de session PYTHON_SNOWPARK_USE_LOGICAL_TYPE_FOR_CREATE_DATAFRAME pour revenir à l’ancien comportement. Snowflake vous recommande de mettre à jour votre code pour l’aligner sur le comportement correct, car le paramètre sera supprimé à l’avenir.

  • Correction d’un bogue qui faisait que DataFrame.to_pandas obtenait un type décimal lorsque l’échelle n’était pas 0, et créait un objet dtype dans pandas. Au lieu de cela, nous convertissons la valeur en un type float64.

  • Correction de bogues qui aplatissaient à tort le SQL généré lorsque l’une des situations suivantes se produit :

    • DataFrame.filter() est appelé après DataFrame.sort().limit().

    • DataFrame.sort() ou filter() est appelé sur un DataFrame qui possède déjà une fonction de fenêtre ou une colonne de générateur de données dépendant de la séquence. Par exemple, df.select("a", seq1().alias("b")).select("a", "b").sort("a") n’aplatira plus la clause de tri.

    • Une fenêtre ou une colonne de générateur de données dépendant de la séquence est utilisée après DataFrame.limit(). Par exemple, df.limit(10).select(row_number().over()) n’aplatira pas la limite et la sélection dans le SQL généré.

  • Correction d’un bogue où donner un alias à une colonne DataFrame provoquait une erreur lorsque le DataFame était copié à partir d’un autre DataFrame avec une colonne possédant un alias. Par exemple,

    df = df.select(col("a").alias("b"))
    df = copy(df)
    df.select(col("b").alias("c"))  # Threw an error. Now it's fixed.
    
    Copy
  • Correction d’un bogue dans Session.create_dataframe qui faisait que le champ n’acceptant pas la valeur nulle dans un schéma n’était pas respecté pour le type booléen. Notez que cette solution n’est efficace que si l’utilisateur a le privilège de créer une table temporaire.

  • Correction d’un bogue dans le simplificateur SQL où les instructions non sélectionnées dans session.sql supprimaient une requête SQL lorsqu’elles étaient utilisées avec limit().

  • Correction d’un bogue qui soulevait une exception lorsque le paramètre de session ERROR_ON_NONDETERMINISTIC_UPDATE est true.