Änderungen an der Snowpark Python-API

Unter diesem Thema finden Sie Informationen zur Release-Version.

Unter diesem Thema:

Version 1.3.0 (2023-03-28)

Version 1.3.0 der Snowpark-Bibliothek enthält einige neue Features.

Neue Features

  • Unterstützung für den Parameter delimiters in functions.initcap() hinzugefügt.

  • Unterstützung für functions.hash() hinzugefügt, um eine variable Anzahl von Eingabeausdrücken zu akzeptieren.

  • API Session.conf hinzugefügt, um die Änderbarkeit einer beliebigen Laufzeitkonfiguration abzurufen, einzustellen oder zu überprüfen.

  • Unterstützung für die Verwaltung der Groß-/Kleinschreibung in Row-Ergebnissen von DataFrame.collect mithilfe des Parameters case_sensitive hinzugefügt.

  • Indexer-Unterstützung für snowflake.snowpark.types.StructType hinzugefügt.

  • Schlüsselwortargument log_on_exception zu Dataframe.collect und Dataframe.collect_no_wait hinzugefügt, um optional die Fehlerprotokollierung für SQL-Ausnahmen zu deaktivieren.

Fehlerkorrekturen

  • Fehler behoben, bei dem eine DataFrame-Mengenoperation (DataFrame.subtract, DataFrame.union usw.) nach einer anderen DataFrame-Mengenoperation aufgerufen wurde und DataFrame.select oder DataFrame.with_column eine Ausnahme auslöste.

  • Fehler behoben, bei dem verkettete Sortieranweisungen durch den SQL Simplifier überschrieben wurden.

Verbesserungen

  • JOIN-Abfragen vereinfacht, um standardmäßig konstante Aliasse für Unterabfragen (SNOWPARK_LEFT, SNOWPARK_RIGHT) zu verwenden. Benutzer können dies zur Laufzeit mit session.conf.set('use_constant_subquery_alias', False) deaktivieren, um stattdessen zufällig generierte Aliasnamen zu verwenden.

  • Angabe von Anweisungsparametern in session.call() zugelassen.

  • Hochladen von großen Pandas-DataFrames in gespeicherten Prozeduren aktiviert, indem standardmäßig eine Blockgröße von 100.000 Zeilen verwendet wird.

Version 1.2.0

Version 1.2.0 der Snowpark-Bibliothek enthält einige neue Features.

Neue Features

  • Unterstützung für das Anzeigen von Quellcode als Kommentar in generierten Skripten bei der Registrierung von gespeicherten Prozeduren hinzugefügt. Dieses Feature ist standardmäßig aktiviert und kann durch Angabe von source_code_display=False bei der Registrierung deaktiviert werden.

  • Parameter if_not_exists hinzugefügt, der beim Erstellen einer UDF, UDTF oder einer gespeicherten Prozedur mit Snowpark Python das Erstellen der angegebenen Funktion oder Prozedur ignoriert, wenn diese bereits vorhanden ist.

  • Akzeptieren beim Aufrufen von snowflake.snowpark.functions.get Ganzzahlen (Integer) für das Extrahieren eines Werts aus einem Array.

  • functions.reverse zu Funktionen hinzugefügt, um den Zugriff auf die in Snowflake integrierte REVERSE-Funktion zu ermöglichen.

  • Parameter require_scoped_url in snowflake.snowflake.files.SnowflakeFile.open() (in Private Preview) hinzugefügt, um is_owner_file zu ersetzen, das als veraltet markiert ist.

Fehlerkorrekturen

  • Fehler behoben, der beim Erstellen einer Snowpark-Sitzung paramstyle mit qmark überschrieb.

  • Fehler behoben, bei dem df.join(..., how="cross") mit SnowparkJoinException: (1112): Unsupported using join type 'Cross' fehlschlägt.

  • Fehler behoben, bei dem beim Abfragen einer DataFrame-Spalte, die aus verketteten Funktionsaufrufen erstellt wurde, ein falscher Spaltenname verwendet wurde.

Version 1.1.0

Version 1.1.0 der Snowpark-Bibliothek enthält einige neue Features.

Neue Features

  • asc, asc_nulls_first, asc_nulls_last, desc, desc_nulls_first, desc_nulls_last, date_part und unix_timestamp zu Funktionen hinzugefügt.

  • Eigenschaft DataFrame.dtypes zur Rückgabe einer Liste von Spaltenname/Datentyp-Paaren hinzugefügt.

  • Folgende Aliasse wurden hinzugefügt:

    • functions.expr() für functions.sql_expr()

    • functions.date_format() für functions.to_date()

    • functions.monotonically_increasing_id() für functions.seq8()

    • functions.from_unixtime() für functions.to_timestamp()

Fehlerkorrekturen

  • Fehler im SQL Simplifier behoben, der in einigen Fällen Probleme beim Verarbeiten von Spalten-Aliassen und Joins hatte. Weitere Informationen dazu finden Sie unter https://github.com/snowflakedb/snowpark-python/issues/658.

  • Fehler im SQL Simplifier behoben, der falsche Spaltennamen für Funktionsaufrufe, NaN und INF generierte.

Verbesserungen

  • Der Sitzungsparameter PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER hat nach Veröffentlichung von Snowflake 7.3 den Wert True. In snowpark-python liest session.sql_simplifier_enabled standardmäßig den Wert von PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER, was bedeutet, dass der SQL Simplifier nach Veröffentlichung von Snowflake 7.3 standardmäßig aktiviert ist. Um dies zu deaktivieren, setzen Sie PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER in Snowflake auf False, oder führen Sie session.sql_simplifier_enabled = False in Snowpark aus. Es wird empfohlen, den SQL Simplifier zu verwenden, da er hilft, präzisere SQL zu generieren.

Version 1.0.0

Version 1.0.0 der Snowpark-Bibliothek enthält einige neue Features.

Neue Features

  • Session.generator() zum Erstellen eines neuen DataFrame unter Verwendung der Tabellenfunktion GENERATOR hinzugefügt.

  • Parameter SECURE zu den Funktionen hinzugefügt, die eine sichere UDF oder UDTF erstellen.

Version 0.12.0

Version 0.12.0 der Snowpark-Bibliothek enthält einige neue Features und Verbesserungen.

Neue Features

  • Neue APIs für asynchrone Jobs hinzugefügt:

    • Session.create_async_job() ermöglicht das Erstellen einer AsyncJob-Instanz aus einer Abfrage-ID.

    • AsyncJob.result() akzeptiert jetzt das Argument result_type, um die Ergebnisse in verschiedenen Formaten zurückzugeben.

    • AsyncJob.to_df() gibt einen DataFrame zurück, der aus dem Ergebnis dieses asynchronen Auftrags erstellt wurde.

    • AsyncJob.query() gibt den SQL-Text der ausgeführten Abfrage zurück.

  • DataFrame.agg() und RelationalGroupedDataFrame.agg() akzeptieren jetzt Argumente mit variabler Länge.

  • Die Parameter lsuffix und rsuffix wurden zu DataFrame.join() und DataFrame.cross_join() hinzugefügt, um überlappende Spalten einfacher umbenennen zu können.

  • Table.drop_table() wurde hinzugefügt, damit Sie die temporäre Tabelle nach dem Aufruf von DataFrame.cache_result() löschen können. Table ist auch ein Kontextmanager, so dass mit der with-Anweisung auch die temporäre Cache-Tabelle nach der Verwendung gelöscht werden kann.

  • Session.use_secondary_roles() hinzugefügt.

  • Funktionen first_value() und last_value() hinzugefügt (Beitrag von @chasleslr).

  • on als Alias für using_columns und how als Alias für join_type in DataFrame.join() hinzugefügt.

Fehlerkorrekturen

  • Fehler in Session.create_dataframe() behoben, der einen Fehler ausgelöst hat, wenn schema-Namen Sonderzeichen enthielten.

  • Fehler behoben, bei dem in Session.read.option() festgelegte Optionen nicht als Standardwerte an DataFrame.copy_into_table() übergeben wurden.

  • Fehler behoben, bei dem DataFrame.copy_into_table() einen Fehler ausgelöst hat, wenn der Wert einer Kopieroption einfache Anführungszeichen enthielt.

Version 0.11.0

Version 0.11.0 der Snowpark-Bibliothek enthält einige neue Features und Verbesserungen.

Verhaltensänderungen

  • Session.add_packages() gibt jetzt einen ValueError-Fehler aus, wenn die Version eines Pakets nicht im Snowflake-Anaconda-Kanal gefunden werden kann. Zuvor war Session.add_packages() erfolgreich, und eine SnowparkSQLException-Ausnahme wurde erst später bei der Registrierung in der UDF oder der gespeicherten Prozedur ausgelöst.

Neue Features

  • Methode FileOperation.get_stream() hinzugefügt, um das Herunterladen von Stagingdateien als Stream zu unterstützen.

  • Unterstützung der Akzeptanz eines int-Arguments in functions.ntiles() hinzugefügt.

  • Folgende Aliasse wurden hinzugefügt:

    • functions.call_function() für functions.call_builtin()

    • functions.function() für functions.builtin()

    • DataFrame.order_by() für DataFrame.sort()

    • DataFrame.orderBy() für DataFrame.sort()

  • Verbesserung von DataFrame.cache_result(), um anstelle einer DataFrame-Klasse eine genauere Table-Klasse zurückzugeben.

  • Unterstützung hinzugefügt, um session beim Aufruf von StoredProcedure als erstes Argument zuzulassen.

Verbesserungen

  • Das Generieren von verschachtelten Abfragen wurde verbessert, indem Abfragen gegebenenfalls vereinfacht (Flattening) werden. Diese Verbesserung kann durch die Einstellung Session.sql_simplifier_enabled = True aktiviert werden. DataFrame.select(), DataFrame.with_column(), DataFrame.drop() und andere SELECT-bezogene APIs weisen jetzt vereinfachten SQL-Code auf. DataFrame.union(), DataFrame.union_all(), DataFrame.except_(), DataFrame.intersect(), DataFrame.union_by_name() weisen vereinfachten SQL-Code auf, der generiert wird, wenn mehrere Mengenoperatoren verkettet werden.

  • Verbesserte Typanmerkung für APIs asynchroner Jobs.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem Table.update(), Table.delete(), Table.merge() versuchten, auf eine nicht vorhandene, temporäre Tabelle zu verweisen.

Version 0.10.0

Version 0.10.0 der Snowpark-Bibliothek enthält einige neue Features und Verbesserungen.

Neue Features

  • Experimentelle APIs für die Auswertung von Snowpark-Datenframes mit asynchronen Abfragen hinzugefügt:

    • Schlüsselwortargument block für folgende Aktions-APIs auf Snowpark-Datenframes (die Abfragen ausführen) hinzugefügt, um asynchrone Auswertungen zu ermöglichen:

      • DataFrame.collect(), DataFrame.to_local_iterator(), DataFrame.to_pandas(), DataFrame.to_pandas_batches(), DataFrame.count(), DataFrame.first(), DataFrameWriter.save_as_table(), DataFrameWriter.copy_into_location(), Table.delete(), Table.update(), Table.merge().

    • Methode DataFrame.collect_nowait() hinzugefügt, um asynchrone Auswertungen zu ermöglichen.

    • Klasse AsyncJob hinzugefügt, um Ergebnisse von asynchron ausgeführten Abfragen abzurufen und deren Status zu überprüfen.

  • Unterstützung von table_type in Session.write_pandas() hinzugefügt. Folgende Tabellentypen stehen nun für table_type zur Verfügung: temporary, temp und transient.

  • Unterstützung der Verwendung von strukturierten Python-Daten (list, tuple und dict) als Literalwerte in Snowpark hinzugefügt.

  • Schlüsselwortargument execute_as zu functions.sproc() und session.sproc.register() hinzugefügt, um das Registrieren einer gespeicherten Prozedur als Aufrufer oder Eigentümer zu ermöglichen.

  • Unterstützung für das Angeben eines vorkonfigurierten Dateiformats beim Lesen von Dateien aus einem Stagingbereich in Snowflake hinzugefügt.

Verbesserungen

  • Unterstützung für das Anzeigen von Details einer Snowpark-Sitzung hinzugefügt.

Fehlerkorrekturen

  • Fehler behoben, bei dem DataFrame.copy_into_table() und DataFrameWriter.save_as_table() fälschlicherweise eine neue Tabelle erstellten, wenn der Tabellenname vollqualifiziert war und die Tabelle bereits existierte.

Veraltete Funktionen

  • Schlüsselwortargument create_temp_table in Session.write_pandas() veraltet.

  • Aufrufen von UDFs mit Argumenten veraltet, die in eine Python-Liste oder ein Tupel eingeschlossen sind. Sie können Argumente variabler Länge ohne eine Liste oder ein Tupel verwenden.

Aktualisierungen der Abhängigkeiten

  • snowflake-connector-python auf 2.7.12 aktualisiert.

Version 0.9.0

Version 0.9.0 der Snowpark-Bibliothek enthält einige neue Features und Verbesserungen.

Neue Features

  • Unterstützung für das Anzeigen von Quellcode als Kommentar in den generierten Skripten bei der Registrierung von UDFs hinzugefügt. Dieses Feature ist standardmäßig aktiviert. Um das Feature auszuschalten, übergeben Sie beim Aufrufen von register() oder @udf() das neue Schlüsselwortargument source_code_display mit False.

  • Unterstützung für das Aufrufen von Tabellenfunktionen aus DataFrame.select(), DataFrame.with_column() und DataFrame.with_columns() hinzugefügt, die jetzt Parameter vom Typ table_function.TableFunctionCall für Spalten akzeptieren.

  • Schlüsselwortargument overwrite zu session.write_pandas() hinzugefügt, um den Inhalt einer Snowflake-Tabelle mit dem eines Pandas DataFrame zu überschreiben.

  • Schlüsselwortargument column_order zu df.write.save_as_table() hinzugefügt, um Abgleichregeln anzugeben, die beim Einfügen von Daten in eine Tabelle im Anfügemodus gelten.

  • Methode FileOperation.put_stream() zum Hochladen lokaler Dateien in einen Stagingbereich über einen Dateistream hinzugefügt.

  • Methoden TableFunctionCall.alias() und TableFunctionCall.as_() hinzugefügt, um Aliasing der Namen von Spalten zu ermöglichen, die aus der Ausgabe von Tabellenfunktionsverknüpfungen stammen.

  • Funktion get_active_session() in Modul snowflake.snowpark.context hinzugefügt, um die aktuell aktive Snowpark-Sitzung zu ermitteln.

Verbesserungen

  • Funktion function.uniform() wurde verbessert, um die Typen von max_- und min_-Eingaben zu ermitteln und die Grenzwerte in IntegerType bzw. FloatType umzuwandeln.

Fehlerkorrekturen

  • Fehler behoben, bei dem Batch-Einfügungen nur Fehler auslösen sollten, wenn statement_params an die Funktion übergeben wird.

  • Fehler behoben, bei dem Spaltennamen in Anführungszeichen gesetzt werden sollten, wenn session.create_dataframe() mit „dicts“ und einem bestimmten Schema aufgerufen wird.

  • Fehler behoben, bei dem das Erstellen einer Tabelle übersprungen werden sollte, wenn die Tabelle bereits existiert und sich beim Aufruf von df.write.save_as_table() im Anfügemodus befindet.

  • Fehler behoben, bei dem beim Registrieren von UDFs Pakete von Drittanbietern mit Unterstrichen nicht hinzugefügt werden konnten.

Version 0.8.0

Version 0.8.0 der Snowpark-Bibliothek enthält einige neue Features und Verbesserungen.

Neue Features

  • Um die Angabe von Parametern auf Anweisungsebene zu ermöglichen, wurde das Nur-Schlüsselwort-Argument statement_params zu den folgenden Methoden hinzugefügt:

    • 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 und random_split in Klasse snowflake.snowpark.Dateframe.

    • update, delete und merge in Klasse snowflake.snowpark.Table.

    • save_as_table und copy_into_location in Klasse snowflake.snowpark.DataFrameWriter.

    • approx_quantile, statement_params, cov und crosstab in Klasse snowflake.snowpark.DataFrameStatFunctions.

    • register und register_from_file in Klasse snowflake.snowpark.udf.UDFRegistration.

    • register und register_from_file in Klasse snowflake.snowpark.udtf.UDTFRegistration.

    • register und register_from_file in Klasse snowflake.snowpark.stored_procedure.StoredProcedureRegistration.

    • udf, udtf und sproc in snowflake.snowpark.functions.

  • Unterstützung von Column als Eingabeargument für session.call() hinzugefügt.

  • Unterstützung von table_type in df.write.save_as_table() hinzugefügt. Folgende Tabellentypen stehen nun für table_type zur Verfügung: temporary, temp und transient.

Verbesserungen

  • Validierung des Objektnamens in session.use_*-Methoden hinzugefügt.

  • Abfrage-Tag in SQL wurde aktualisiert, um es mit einem Escapezeichen zu umschließen, wenn es Sonderzeichen enthält.

  • Prüfung hinzugefügt, um festzustellen, ob Anaconda-Bedingungen anerkannt werden, wenn fehlende Pakete hinzugefügt werden.

Fehlerkorrekturen

  • Die begrenzte Länge der Zeichenfolgenspalte in session.create_dataframe() wurde korrigiert.

  • Fehler wurde behoben, bei dem in session.create_dataframe() fälschlicherweise 0 und False in None konvertiert wurden, wenn die Eingabedaten nur aus einer Liste bestand.

  • Fehler behoben, bei dem bei Aufruf von session.create_dataframe() mit einem großen lokalen Dataset eine temporäre Tabelle manchmal zweimal erzeugt wurde.

  • Die Definition von function.trim() wurde an die Definition der SQL-Funktion angepasst.

  • Problem wurde behoben, bei dem snowpark-python hängen blieb, wenn die systemdefinierte (integrierte) Python-Funktion sum anstelle der Snowpark-Funktion function.sum() verwendet wurde.

Version 0.7.0

Version 0.7.0 der Snowpark-Bibliothek enthält einige neue Funktionen und Verbesserungen.

Neue Features

  • Unterstützung von benutzerdefinierten Tabellenfunktionen (UDTFs) hinzugefügt.

    • Verwenden Sie die Funktion snowflake.snowpark.functions.udtf(), um eine UDTF zu registrieren, oder verwenden Sie sie als Decorator-Element, um die UDTF zu registrieren.

    • Sie können auch Session.udtf.register() verwenden, um eine UDTF zu registrieren.

    • Verwenden Sie Session.udtf.register_from_file(), um eine UDTF aus einer Python-Datei zu registrieren.

  • APIs zur Abfrage einer Tabellenfunktion aktualisiert, einschließlich der in Snowflake integrierten Tabellenfunktionen und UDTFs.

    • Verwenden Sie die Funktion snowflake.snowpark.functions.table_function(), um ein aufrufbares Objekt zu erstellen, das eine Tabellenfunktion darstellt, und verwenden Sie es, um die Tabellenfunktion in einer Abfrage aufzurufen.

    • Alternativ können Sie auch die Funktion snowflake.snowpark.functions.call_table_function() verwenden, um eine Tabellenfunktion aufzurufen.

    • Unterstützung für die over-Klausel hinzugefügt, die bei der seitlichen Verknüpfung einer Tabellenfunktion partition by und order by angibt.

    • Session.table_function() und DataFrame.join_table_function() aktualisiert, um TableFunctionCall-Instanzen zu akzeptieren.

Grundlegende Änderungen

  • Wenn Sie eine Funktion mit functions.udf() und functions.sproc() erstellen, können Sie jetzt eine leere Liste für das imports- oder packages-Argument angeben, um anzuzeigen, dass kein Import oder Paket für diese UDF oder gespeicherte Prozedur verwendet wird. Bisher bedeutete die Angabe einer leeren Liste, dass die Funktion Importe oder Pakete auf Sitzungsebene verwendet.

  • Die __repr__-Implementierung von Datentypen in types.py wurde verbessert. Die nicht genutzte Eigenschaft type_name wurde entfernt.

  • Snowpark-spezifische Ausnahmeklasse für SQL-Fehler hinzugefügt. Dies ersetzt das bisherige ProgrammingError-Objekt aus dem Python-Konnektor.

Verbesserungen

  • Einer UDF oder UDTF wurde eine Sperre hinzugefügt, wenn diese erstmalig pro Thread aufgerufen wird.

  • Die Fehlermeldung für Pickle-Fehler, die bei der UDF-Erstellung auftreten, wurde verbessert.

  • Die Protokollierung der fehlgeschlagenen Abfrage enthält nun auch die Abfrage-ID.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem nicht ganzzahlige Daten (wie Zeitstempel) beim Aufruf von DataFrame.to_pandas() manchmal in Ganzzahlen umgewandelt wurden.

  • Es wurde ein Fehler behoben, bei dem DataFrameReader.parquet() eine Parquet-Datei nicht lesen konnte, wenn deren Spalte Leerzeichen enthielt.

  • Ein Fehler wurde behoben, bei dem DataFrame.copy_into_table() fehlschlug, wenn der Datenframe durch Lesen einer Datei mit abgeleiteten Schemas erstellt wurde.

Veraltete Funktionen

  • Session.flatten() und DataFrame.flatten().

Aktualisierungen der Abhängigkeiten

  • Version von cloudpickle <= 2.0.0 eingeschränkt.

Version 0.6.0

Version 0.6.0 der Snowpark-Bibliothek enthält einige neue Funktionen und Verbesserungen.

Neue Features

  • Unterstützung von vektorisierten UDFs über Python-UDF-Batch-API hinzugefügt. Die Python-UDF-Batch-API ermöglicht die Definition von Python-Funktionen, die Batches von Eingabezeilen als Pandas DataFrames erhalten und Batches von Ergebnissen als Pandas-Arrays oder Pandas Series zurückgeben. Dies kann die Leistung von UDFs in Snowpark verbessern.

  • Es wurde die standardmäßige Unterstützung für das Ableiten eines DataFrame-Schemas hinzugefügt, wenn es durch das Lesen einer Parquet-, Avro- oder ORC-Datei im Stagingbereich erstellt wird.

  • Funktionen 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() zu snowflake.snowflake.functions hinzugefügt.

Verbesserungen

  • Unterstützung für das Erstellen eines leeren DataFrame-Objekts mit einem bestimmten Schema unter Verwendung der Methode Session.create_dataframe() hinzugefügt.

  • Änderung des Protokolliergrads von INFO auf DEBUG für verschiedene Protokolle (z. B. zu den ausgeführten Abfragen) bei der Auswertung eines Datenframes.

  • Die Fehlermeldung für Pickle-Fehler, die bei der UDF-Erstellung auftreten, wurde verbessert.

  • Die folgenden APIs, die in 0.4.0 veraltet waren, wurden entfernt: 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().

  • typing-extension als neue Abhängigkeit mit der Version >= 4.1.0 hinzugefügt.

Fehlerkorrekturen

  • Harte Abhängigkeiten von Pandas in der Methode Session.create_dataframe() wurden entfernt.

Version 0.5.0

Version 0.5.0 der Snowpark-Bibliothek enthält einige neue Funktionen und Verbesserungen.

Neue Features

  • API für gespeicherte Prozeduren hinzugefügt.

  • Hinzufügen der Eigenschaften Session.sproc und sproc() zu snowflake.snowpark.functions hinzugefügt, sodass Sie gespeicherte Prozeduren registrieren können.

  • Session.call hinzugefügt, um gespeicherten Prozeduren mit Namen aufzurufen.

  • UDFRegistration.register_from_file() hinzugefügt, um die Registrierung von UDFs direkt aus Python-Quelldateien oder ZIP-Dateien zu ermöglichen.

  • UDFRegistration.describe() hinzugefügt, um eine UDF zu beschreiben.

  • DataFrame.random_split() hinzugefügt, um eine Möglichkeit für die zufällige Aufteilung von Datenframes bereitzustellen.

  • Funktionen md5(), sha1(), sha2(), ascii(), initcap(), length(), lower(), lpad(), ltrim(), rpad(), rtrim(), repeat(), soundex(), regexp_count(), replace(), charindex(), collate(), collation(), insert(), left(), right(), endswith() zu snowflake.snowpark.functions hinzugefügt.

  • Die Funktion call_udf() akzeptiert jetzt auch Literalwerte.

  • distinct-Schlüsselwort in array_agg() bereitgestellt.

Fehlerkorrekturen

  • Problem wurde behoben, das dazu führte, dass DataFrame.to_pandas() bei Verwendung von Column.cast(IntegerType()) eine Zeichenfolgen-Spalte aufwies.

  • Fehler in DataFrame.describe() wurde behoben, wenn es mehr als eine Zeichenfolgen-Spalte gibt.

Version 0.4.0

Version 0.4.0 der Snowpark-Bibliothek enthält einige neue Funktionen und Verbesserungen.

Neue Features

  • Sie können nun angeben, welche Anaconda-Pakete bei der Definition von UDFs verwendet werden sollen.

  • add_packages(), get_packages(), clear_packages() und remove_package() zur Klasse Session hinzugefügt.

  • add_requirements() zu Session hinzugefügt, sodass Sie eine Anforderungsdatei verwenden können, um anzugeben, welche Pakete diese Sitzung verwenden wird.

  • Parameter packages zu Funktion snowflake.snowpark.functions.udf() und Methode UserDefinedFunction.register() hinzugefügt, um beim Erstellen einer UDF Anaconda-Paketabhängigkeiten auf UDF-Ebene anzugeben.

  • Der Parameter imports wurde zu snowflake.snowpark.functions.udf() und UserDefinedFunction.register() hinzugefügt, um Code-Importe auf UDF-Ebene anzugeben.

  • Der Parameter session wurde zu den Funktionen udf() und UserDefinedFunction.register() hinzugefügt, damit beim Erstellen einer UDF angegeben werden kann, welche Sitzung verwendet werden soll, wenn Sie mehrere Sitzungen haben.

  • Die Typen Geography und Variant wurden zu snowflake.snowpark.types hinzugefügt, die beim Definieren einer UDF als Typhinweise für Geography- und Variant-Daten verwendet werden können.

  • Unterstützung von geoJSON-Geography-Daten wurde hinzugefügt.

  • Unterklasse Table zu Klasse DataFrame für Tabellenoperationen hinzugefügt.

  • Die Methoden update und delete aktualisieren und löschen Zeilen einer Tabelle in Snowflake.

  • Die Methode merge führt Daten eines DataFrame-Objekts in einer Table zusammen.

  • Methode DataFrame.sample() mit einem zusätzlichen Parameter seed überschrieben, der auf Tabellen, aber nicht auf Ansichten und Unterabfragen funktioniert.

  • DataFrame.to_local_iterator() und DataFrame.to_pandas_batches() hinzugefügt, um Ergebnisse von einem Iterator zu erhalten, wenn das von der Snowflake-Datenbank zurückgegebene Resultset zu groß ist.

  • DataFrame.cache_result() für das Zwischenspeichern von Operationen hinzugefügt, die auf einem DataFrame-Objekt in einer temporären Tabelle ausgeführt werden. Nachfolgende Operationen auf dem ursprünglichen DataFrame-Objekt haben keine Auswirkungen auf das zwischengespeicherte DataFrame-Ergebnisobjekt.

  • Eigenschaft DataFrame.queries hinzugefügt, um SQL-Abfragen zu erhalten, die zur Auswertung des DataFrame ausgeführt werden.

  • Session.query_history() als Kontextmanager zur Verfolgung der in einer Sitzung ausgeführten SQL-Abfragen hinzugefügt. Das schließt auch alle SQL-Abfragen ein, die von einer Sitzung zur Auswertung von DataFrames erstellt wurden. Sowohl die Abfrage-ID als auch der Abfragetext werden erfasst.

  • Sie können nun eine Session-Instanz aus einem bestehenden snowflake.connector.SnowflakeConnection-Objekt erstellen. Parameter connection in Session.builder.configs() verwenden.

  • Hinzufügen von use_database(), use_schema(), use_warehouse() und use_role() zur Klasse Session, um nach dem Erstellen einer Sitzung Datenbank/Schema/Warehouse/Rolle zu wechseln.

  • DataFrameWriter.copy_into_table() zum Entladen eines DataFrame-Objekts in Stagingdateien hinzugefügt.

  • DataFrame.unpivot() hinzugefügt.

  • Column.within_group() hinzugefügt, um mit einigen Aggregationsfunktionen Zeilen nach Spalten zu sortieren.

  • Funktionen listagg(), mode(), div0(), acos(), asin(), atan(), atan2(), cos(), cosh(), sin(), sinh(), tan(), tanh(), degrees(), radians(), round(), trunc() und factorial() zu snowflake.snowpark.functions hinzugefügt.

  • Ein optionales Argument ignore_nulls wurde den Funktionen lead() und lag() hinzugefügt.

  • Parameter condition der Funktionen when() und iff() akzeptiert jetzt auch SQL-Ausdrücke.

Verbesserungen

  • Alle Funktions- und Methodennamen wurden umbenannt, sodass sie nun dem in Python verwendeten Benamungsstil mit Unterstrichen (snake_case statt CamelCase) entsprechen. Der Einfachheit halber werden einige Camel-Case-Namen als Aliasse von Snake-Case-APIs beibehalten. Es wird empfohlen, die Snake-Case-APIs zu verwenden.

  • Folgende Methoden der Klasse Session sind veraltet und wurden durch deren Snake-Case-Äquivalente ersetzt: getImports(), addImports(), removeImport(), clearImports(), getSessionStage(), getDefaultSchema(), getDefaultSchema(), getCurrentDatabase() und getFullyQualifiedCurrentSchema().

  • Folgende Methoden der Klasse DataFrame sind veraltet und wurden durch ihre Snake-Case-Äquivalente ersetzt: groupingByGroupingSets(), naturalJoin(), withColumns() und joinTableFunction().

  • Die Eigenschaft DataFrame.columns mit der Eigenschaft DataFrame.schema.names konsistent und entspricht den Anforderungen an Snowflake-Datenbankbezeichner.

  • Column.__bool__() löst nun einen TypeError-Fehler aus. Dadurch wird die Verwendung der logischen Operatoren and, or, not auf dem Column-Objekt verhindert. So löst col("a") > 1 and col("b") > 2 beispielsweise einen TypeError-Fehler aus. Verwenden Sie stattdessen (col("a") > 1) & (col("b") > 2).

  • PutResult und GetResult wurden in Unterklassen von NamedTuple geändert.

  • Es wurde ein Fehler behoben, bei dem ein Fehler ausgelöst wurde, wenn der lokale Pfad oder der Speicherort eines Stagingbereichs ein Leerzeichen oder andere Sonderzeichen enthielt.

  • DataFrame.describe() wurde so geändert, dass nichtnumerische und Nicht-Zeichenfolgen-Spalten ignoriert werden, anstatt eine Ausnahme auszulösen.

Aktualisierungen der Abhängigkeiten

  • snowflake-connector-python auf 2.7.4 aktualisiert.

Version 0.3.0

Version 0.3.0 der Snowpark-Bibliothek enthält einige neue Funktionen und Verbesserungen.

Neue Features

  • Column.isin() mit einem Alias Column.in_() aktualisiert.

  • Column.try_cast() hinzugefügt, das eine spezielle Version von cast() ist. Dieses Feature versucht, einen Zeichenfolgenausdruck in andere Typen umzuwandeln und gibt null zurück, wenn die Umwandlung nicht möglich ist.

  • Column.startswith() und Column.substr() zur Verarbeitung von Zeichenfolgenspalten hinzugefügt.

  • Column.cast() akzeptiert jetzt auch einen str-Wert, um zusätzlich zu einer DataType-Instanz den Umwandlungstyp anzugeben.

  • DataFrame.describe() hinzugefügt, um die Statistiken eines DataFrame-Objekts zusammenzufassen.

  • DataFrame.explain() hinzugefügt, um den Abfrageplans eines DataFrame-Objekts zu drucken.

  • DataFrame.filter() und DataFrame.select_expr() akzeptieren jetzt einen SQL-Ausdruck.

  • Neuer bool-Parameter namens create_temp_table wurde zu den Methoden DataFrame.saveAsTable() und Session.write_pandas() hinzugefügt, um optional eine temporäre Tabelle zu erstellen.

  • DataFrame.minus() und DataFrame.subtract() als Aliasse zu DataFrame.except_() hinzugefügt.

  • Funktionen regexp_replace(), concat(), concat_ws(), to_char(), current_timestamp(), current_date(), current_time(), months_between(), cast(), try_cast(), greatest(), least() und hash() zum Modul snowflake.snowpark.functions hinzugefügt.

Fehlerkorrekturen

  • Problem behoben, bei dem Session.createDataFrame(pandas_df) und Session.write_pandas(pandas_df) eine Ausnahme auslösten, wenn der Pandas DataFrame Leerzeichen im Spaltennamen hatte.

  • Es wurde ein Problem behoben, bei dem DataFrame.copy_into_table() manchmal fälschlicherweise einen Protokolleintrag auf Fehlerstufe ausgab.

  • API-Dokumentationsproblem behoben, bei dem einige DataFrame-APIs in der Dokumentation fehlten.

Aktualisierungen der Abhängigkeiten

Version 0.2.0

Version 0.2.0 der Snowpark-Bibliothek enthält einige neue Funktionen und Verbesserungen.

Neue Features

  • Methode createDataFrame() zum Erstellen eines DataFrame aus einem Pandas DataFrame hinzugefügt.

  • Methode write_pandas() hinzugefügt, um einen Pandas DataFrame in eine Tabelle in Snowflake zu schreiben und ein Snowpark DataFrame-Objekt zurückzubekommen.

  • Neue Klassen und Methoden für das Aufrufen von Fensterfunktionen hinzugefügt.

  • Neue Funktion cume_dist() hinzugefügt, die die kumulative Verteilung eines Wertes in Bezug auf andere Werte innerhalb einer Fensterpartition ermittelt, sowie neue Funktion row_number() hinzugefügt, die für jede Zeile innerhalb einer Fensterpartition eine eindeutige Zeilennummer zurückgibt.

  • Funktionen zur Berechnung von Statistiken für DataFrames zur Klasse DataFrameStatFunctions hinzugefügt.

  • Funktionen zur Verarbeitung fehlender Werte in einem DataFrame zur Klasse DataFrameNaFunctions hinzugefügt.

  • Neue Methoden rollup(), cube() und pivot() zur Klasse DataFrame hinzugefügt.

  • Klasse GroupingSets hinzugefügt, die mit der DataFrame-Methode groupByGroupingSets verwendet werden kann, um die Klausel SQL GROUP BY GROUPING SETS auszuführen.

  • Neue Klasse FileOperation(session) hinzugefügt, mit der Dateien in einen Stagingbereich hochgeladen bzw. aus einem Stagingbereich heruntergeladen werden können.

  • Methode copy_into_table() hinzugefügt, mit der Daten aus Dateien in einem Stagingbereich in eine Tabelle geladen werden können.

  • In CASE-Ausdrücken akzeptieren die Funktionen when und otherwise nun zusätzlich zu Column-Objekten auch Python-Typen.

  • Beim Registrieren einer UDF können Sie jetzt optional den replace-Parameter auf True setzen, um eine bestehende UDF mit demselben Namen zu überschreiben.

Verbesserungen

  • UDFs werden jetzt komprimiert, bevor sie auf den Server hochgeladen werden. Dadurch werden sie etwa 10 Mal kleiner, was bei der Verwendung großer ML-Modelldateien hilfreich sein kann.

  • Wenn die Größe einer UDF weniger als 8196 Byte beträgt, wird sie als Inline-Code und nicht in einen Stagingbereich hochgeladen.

Fehlerkorrekturen

  • Problem behoben, bei dem die Anweisung df.select(when(col("a") == 1, 4).otherwise(col("a"))), [Row(4), Row(2), Row(3)] eine Ausnahme auslöste.

  • Problem behoben, bei dem df.toPandas() eine Ausnahme auslöste, wenn ein DataFrame aus großen lokalen Daten erstellt wurde.