Notes de version de Snowpark Library for Scala and Java pour 2022

Cet article contient les notes de versions de la bibliothèque Snowpark pour Scala et de la bibliothèque Snowpark pour Java, 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 Scala and Java.

Version 1.6.2 (26 octobre 2022)

Version compatible avec Snowflake : 6.35.x

Améliorations

  • Améliorations internes des procédures stockées écrites en Java ou Scala.

Version 1.6.1 (30 septembre 2022)

Version compatible avec Snowflake : 6.31.x

Cette version présente un problème connu qui pourrait interrompre la création d’objets temporaires. Veuillez utiliser la version 1.6.2 à la place.

Améliorations

  • Améliorations internes des procédures stockées écrites en Java ou Scala.

Version 1.6.0 (12 août 2022)

Version compatible avec Snowflake : 6.27.x

Améliorations

  • Améliorations internes des UDTFs.

Version 1.5.0 (1er juillet 2022)

Version compatible avec Snowflake : 6.22.x

Nouvelles fonctionnalités

  • Prise en charge de l’écriture de DataFrames dans des fichiers sur une zone de préparation ajoutée à l’API Scala et à l’API Java.

Améliorations

  • Optimisation des requêtes SQL générées par la bibliothèque client Snowpark.

  • Amélioration du message d’erreur qui est enregistré lorsque la bibliothèque Snowpark ne parvient pas à résoudre le nom d’une colonne dans

  • un DataFrame (par exemple, lorsque vous tentez d’accéder à une colonne qui n’existe pas).

Version 1.4.1 (26 mai 2022)

Version compatible avec Snowflake : 6.17.x

Changements

  • Mise à jour de la version de jackson-core et jackson-annotations dont dépend la bibliothèque Snowpark vers la version 2.13.2.

  • Mise à jour de la version de jackson-databind dont dépend la bibliothèque Snowpark vers la version 2.13.2.2.

  • Suppression des classes jackson-core, jackson-databind, et jackson-annotations du fichier JAR Snowpark.

    Si vous avez téléchargé le fichier .tar.gz / .zip, les fichiers JAR pour les classes Jackson sont maintenant fournis séparément dans le sous-répertoire lib/ (jackson-core-2.13.2.jar, jackson-databind-2.13.2.2.jar, et jackson-annotations-2.13.2.jar).

    Si vous spécifiez la bibliothèque Snowpark comme dépendance dans votre fichier pom.xml et que vous voulez dépendre d’une version différente des bibliothèques Jackson dans votre fichier pom.xml, vous pouvez exclure la dépendance sur les bibliothèques Jackson de la dépendance sur la bibliothèque Snowpark.

Version 1.4.0 (28 avril 2022)

Version compatible avec Snowflake : 6.14.x

Nouvelles fonctionnalités

  • Mise à disposition de l’API Snowpark Java sur AWS et Azure.

  • L’API est encore disponible en tant que fonction de prévisualisation dans GCS.

  • L’API Scala de Snowpark est maintenant disponible de manière générale sur Azure.

    Avant cette version, l’API n’était généralement disponible que sur AWS. L’API est toujours disponible en tant que fonction en avant-première sur GCS.

  • Ajout d’une API Java pour créer des UDTFs. Notez qu’il s’agit d’une fonctionnalité en avant-première.

  • Ajout de nouvelles APIs dans Scala et Java pour le chargement et le téléchargement de données à partir d’une zone de préparation (FileOperation.uploadStream and FileOperation.downloadStream).

  • Ajout de la méthode DataFrameWriter.option dans Scala et Java pour spécifier comment les valeurs des colonnes du DataFrame doivent être mappées vers les colonnes de la table. La méthode option vous permet de spécifier que le DataFrameWriter doit utiliser le nom de la colonne plutôt que l’ordre de la colonne.

Améliorations

  • Désactivation du Closure Cleaner dans les sessions Java. Le Closure Cleaner ne fonctionne que dans les programmes Scala.

  • Amélioration de la prise en charge de Array et Map dans l’API Java Row.

Version 1.3.0 (18 mars 2022)

Version compatible avec Snowflake : 6.8.x

Nouvelles fonctionnalités

Version 1.2.0 (2 mars 2022)

Version compatible avec Snowflake : 6.5.x

Nouvelles fonctionnalités

  • Ajout de l’API Java pour Snowpark.

  • Ajout de la prise en charge de l’avant-première dans l’API Scala pour la création d’UDTFs.

  • Ajout d’une version distincte de la bibliothèque conforme aux exigences de sécurité de FIPS (Federal Information Processing Standard). Vous pouvez télécharger cette bibliothèque à partir des emplacements suivants :

    Pour pointer vers la bibliothèque conforme-FIPS à partir d’un fichier de compilation sbt ou d’un projet Maven, utilisez snowpark-fips comme artifactId.

Version 1.1.0 (4 février 2022)

Version de Snowflake compatible : 6.2.x

Ajout de la prise en charge de Écriture de procédures stockées en Scala.

L’API de référence pour cette version est disponible dans la documentation Snowflake et dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Version 1.0.0 (26 janvier 2022)

Version de Snowflake compatible : 6.1.x

Version en disponibilité générale (GA) sur AWS. (Snowpark est encore une fonction en avant-première sur Azure et GCP.)

L’API de référence pour cette version est disponible dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Version 0.12.0 (4 janvier 2022)

Version compatible avec Snowflake : 5.45.x

L’API de référence pour cette version est disponible dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Nouvelles fonctionnalités

  • Ajout de la fonction listagg à l’objet functions.

  • Prise en charge des UDFs avec 11 à 22 arguments.

  • Ajout de la fonction any_value à la classe RelationalGroupedDataFrame.

Améliorations

  • Dans le code généré pour les UDFs, remplacez un bloc de code statique par une fonction d’instance d’objet.

  • Réorganisation des messages d’erreur.

  • Modification de la fonction saveAsTable afin qu’une nouvelle table ne soit pas créée en mode Ajout.

  • Amélioration de la fonction callUDF pour prendre en charge n’importe quel type d’argument.

  • Modification de la bibliothèque pour définir la balise de requête au niveau de l’instruction, plutôt qu’au niveau de la session.

Version 0.11.0 (16 novembre 2021)

Version compatible avec Snowflake : 5.45.x

L’API de référence pour cette version est disponible dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Nouvelles fonctionnalités

Améliorations

Mise à niveau du pilote JDBC Snowflake vers la version 3.13.9. Amélioration du message d’erreur signalé lorsqu’aucune base de données actuelle n’est sélectionnée pour être utilisée.

Version 0.10.1 (27 octobre 2021)

Version compatible avec Snowflake : 5.38.x

L’API de référence pour cette version est disponible dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Corrections de bogues

  • Correction d’un problème de chargement de fichiers vers une zone de préparation GCP où le mauvais préfixe était utilisé.

  • Correction d’un problème dans lequel une réponse 403 HTTP était renvoyée lors de l’accès à une URL pré-signée pour GCP.

Version 0.10.0 (18 octobre 2021)

Version compatible avec Snowflake : 5.37.x

L’API de référence pour cette version est disponible dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Nouvelles fonctionnalités

  • Ajout de la nouvelle méthode dropDuplicates à la classe DataFrame.

  • Ajout de la prise en charge des expressions in à la classe Column (avec la méthode in) et à l’objet functions (avec la fonction in).

  • Extension de l’itérateur renvoyé par DataFrame.toLocalIterator pour prendre en charge l’interface Closeable , ce qui vous permet d’appeler la méthode close sur l’itérateur.

  • Ajout de la prise en charge de la nouvelle propriété de configuration snowpark_request_timeout_in_seconds. Vous pouvez la définir dans la carte / le fichier de configuration pour ajuster le délai d’expiration que la bibliothèque utilise lors du chargement des dépendances vers une zone de préparation. Par défaut, le délai est de 86400 (1 jour).

Améliorations

Changements de comportement

  • Suppression des APIs destinées uniquement à Java de l’API Scala .

  • Remplacement du journaliseur par défaut log4j par SLF4J SimpleLogger.

Corrections de bogues

  • Mise à jour de la bibliothèque pour fermer automatiquement les instructions inutilisées afin de réduire l’utilisation de la mémoire.

  • Correction de l’ordre des colonnes dans le résultat de la méthode DataFrame.withColumns.

Version 0.9.0 (20 septembre 2021)

Version compatible avec Snowflake : 5.34.x

L’API de référence pour cette version est disponible dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Nouvelles fonctionnalités

Changements de comportement

  • Modification des méthodes DataFrame.union() et DataFrame.unionByName() pour utiliser UNION, au lieu de UNION ALL.

Corrections de bogues

  • Correction de l’erreur SQL compilation error: Missing column specification qui pouvait survenir lorsque la bibliothèque Snowpark créait une vue temporaire.

Version 0.8.0 (9 août 2021)

Version compatible avec Snowflake : 5.30.x

L’API de référence pour cette version est disponible dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Améliorations

  • Refonte de certains codes internes pour supprimer certaines dépendances.

Corrections de bogues

  • Correction d’un problème avec les littéraux BigDecimal dans les cas où l’échelle peut être plus grande que la précision.

  • Correction d’un problème qui pouvait survenir lors de l’exécution de plusieurs opérations sur les ensembles (par exemple, union, intersection, etc.).

Version 0.7.0 (23 juillet 2021)

Version compatible avec Snowflake : 5.29.x

L’API de référence pour cette version est disponible dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Nouvelles APIs

  • Introduction de la nouvelle méthode Session.close(). Appelez cette méthode pour fermer la session Snowpark, ce qui annule toutes les requêtes en cours et empêche l’utilisation ultérieure de cette session pour exécuter des requêtes.

  • Introduction de la nouvelle classe Updatable. Updatable étend la nouvelle classe DataFrame et fournit des capacités supplémentaires liées aux tables (par exemple, la possibilité de mettre à jour et de supprimer des valeurs).

  • La méthode Session.table() renvoie désormais un objet Updatable, plutôt qu’un objet DataFrame.

  • Introduction de nouvelles signatures pour les méthodes registerTemporary de la classe UDFRegistration. Ces signatures ne comportent pas de paramètre pour le nom de l’UDF, ce qui signifie que vous pouvez les utiliser pour enregistrer une UDF temporaire anonyme.

Changements au niveau de l’API

  • Comme mentionné ci-dessus, la méthode Session.table() renvoie maintenant un objet Updatable qui étend DataFrame.

  • Dans la classe Geography, suppression de la prise en charge des formats autres que GeoJSON. Maintenant, Geography ne prend en charge que le format de données GeoJSON.

Améliorations

  • Amélioration de la méthode DataFrame.cacheResult() pour réduire la possibilité d’erreurs de type « L’objet existe déjà ».

  • Amélioration de certains messages d’erreur.

  • Ajout d’un nouveau message de journal qui imprime les informations de session après la connexion.

Corrections de bogues

  • Correction d’un problème dans lequel la méthode DataFrame.show() n’affichait pas correctement les données binaires.

  • Correction d’une erreur qui se produisait lors de l’obtention du numéro de version.

Version 0.6.0 (14 juin 2021)

Version de Snowflake compatible : 5.21.x

Version en avant-première sur AWS

L’API de référence pour cette version est disponible dans un fichier .zip ou .tar.gz dans le Snowflake Client Repository.

Changements au niveau de l’API

Dans cette version, les méthodes suivantes de RelationalGroupedDataFrame nécessitent désormais un argument :

  • moy

  • max

  • median

  • min

  • sum

Dans les versions précédentes, si vous appeliez ces méthodes sans argument, elles étaient appliquées à toutes les colonnes numériques du DataFrame. Par exemple, pour un DataFrame df avec les colonnes (a int, b string, c float), appeler df.groupBy("a").max() équivalait à appeler df.groupBy("a").max(col("a"), col("c")).

Avec cette version, l’appel de ces méthodes sans argument donne lieu à une SnowparkClientException.

Version 0.5.0

Nouvelles fonctionnalités

  • Ajout d’un paramètre maxWidth à la méthode DataFrame.show(). Vous pouvez utiliser ce paramètre pour ajuster le nombre de caractères imprimés dans la sortie pour chaque colonne.

  • Ajout de la méthode Session.cancelAll(), que vous pouvez utiliser pour annuler toutes les actions en cours sur cette session.

  • Ajout de la méthode DataFrame.toLocalIterator(), qui renvoie un itérateur que vous pouvez utiliser pour récupérer des données, ligne par ligne. Vous pouvez utiliser ceci plutôt que DataFrame.collect(), si vous ne voulez pas charger toutes les données en mémoire en une seule fois.

  • Ajout de la méthode médiane à la classe RelationalGroupedDataFrame.

Améliorations

  • Amélioration du message d’erreur renvoyé lorsqu’un identificateur n’est pas valide.

  • Amélioration de la vérification des erreurs pour signaler une erreur lorsqu’aucun nom de base de données ou de schéma n’est spécifié.

  • Ajout d’une amélioration des performances lors de l’insertion d’un grand nombre de valeurs dans une table.

  • Mise à jour de la bibliothèque pour gérer de manière cohérente les identificateurs d’objets Snowflake (noms de tables et de vues). Désormais, tous les paramètres qui spécifient des noms de tables ou de vues prennent en charge l’utilisation des éléments suivants :

    • Noms courts (par exemple, nom_table et nom_vue)

    • Noms complets (par exemple, database.schema.nom_table)

    • Identificateurs en plusieurs parties (par exemple Seq(« base de données », « schéma », « nom_vue »))

  • Ajout d’un contrôle pour vérifier que la version prise en charge de Scala est utilisée. La bibliothèque signalera une erreur si la version de Scala n’est pas compatible.

Corrections de bogues

  • Correction d’un problème d’enregistrement d’UDFs sous Microsoft Windows.

  • Correction d’un problème avec l’ordre des résultats lors de l’utilisation de DataFrame.sort() avec DataFrame.limit().

  • Correction de Session.range() pour générer une séquence de chiffres sans trous.

Version 0.4.1

Dans cette version, il n’est plus nécessaire de spécifier un schéma temporaire ou une base de données temporaire pour les objets Snowpark (les paramètres TEMP_SCHEMA et TEMP_DB). La bibliothèque Snowpark crée automatiquement des versions temporaires des objets nécessaires.

Changements au niveau de l’API

Remplacement de la méthode DataFrame.cache() par la méthode DataFrame.cacheResult().

La nouvelle méthode crée et renvoie un nouveau DataFrame avec les résultats mis en cache et n’a aucun effet sur le DataFrame actuel. Suite à cette modification, l’objet DataFrame est désormais immuable.

Nouvelles APIs

  • Ajout des nouvelles méthodes suivantes à la classe RelationalGroupedDataFrame :

    • moy

    • max

  • Ajout des nouvelles méthodes suivantes à la classe DataFrame :

    • groupByGroupingSets

    • clone

    • createOrReplaceTempView

  • Ajout des nouvelles fonctions suivantes à l’objet fonctions :

    • toScalar

  • Ajout d’un objet Session.file, qui fournit les nouvelles méthodes suivantes pour effectuer des opérations sur les fichiers :

    • get

    • put

  • Ajout des modifications suivantes à la méthode Session.createDataFrame :

    • Ajout de la prise en charge des schémas fournis par les utilisateurs.

    • Ajout de la prise en charge de la spécification d’un tableau/d’une carte de données de variantes/géographie.

    • Ajout de la prise en charge des types de données Géographie/Variante dans des UDFs.

  • Ajout des méthodes registerPermanent à la classe UDFRegistration.

Corrections de bogues

  • Correction d’un problème lorsque le nom de la colonne DataFrame contient des guillemets.

  • Correction d’un problème d’impossibilité d’échapper aux données contenant des barres obliques inverses, des guillemets simples et des caractères de saut de ligne.

  • Correction d’un problème où la création d’UDF échoue avec le message d’erreur indiquant « code trop long ».

  • Correction d’un problème où la fermeture de l’UDF ne capturait pas la valeur d’une variable locale de type chaîne.

  • Ajout du schéma de résultat pour les clauses SQL suivantes :

    • GRANT/REVOKE

    • DESCRIBE

    • CREATE

    • USE

  • Correction d’un problème lors de l’utilisation de Snowpark dans Visual Studio Code avec l’extension Metals pour créer une UDF.