Versionshinweise zur Snowpark-Bibliothek für Python 2023

Dieser Artikel enthält die Versionshinweise für Snowpark Library for Python, einschließlich der folgenden, sofern zutreffend:

  • Verhaltensänderungen

  • Neue Features

  • Fehlerkorrekturen für Kunden

Snowflake verwendet semantische Versionierung für Snowpark Library for Python-Aktualisierungen.

Version 1.11.1 (2023-12-07)

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

Neue Features

  • Zu SnowflakeSQLException wurde das Attribut conn_error hinzugefügt, das die gesamte zugrunde liegende Ausnahme von snowflake-connector-python speichert.

  • Unterstützung von RelationalGroupedDataframe.pivot() für den Zugriff auf pivot im Muster Dataframe.group_by(...).pivot(...) hinzugefügt.

  • Experimentelles Feature „Local Testing Mode“ (lokaler Testmodus) hinzugefügt, das Ihnen ermöglicht, Snowpark Python-DataFrames lokal zu erstellen und zu nutzen, ohne sich mit einem Snowflake-Konto verbinden zu müssen. Sie können das lokale Test-Framework verwenden, um Ihre DataFrame-Operationen lokal entweder auf Ihrem Entwicklungsrechner oder in einer CI-Pipeline (Pipeline für kontinuierliche Integration) testen, bevor Sie Codeänderungen in Ihrem Konto bereitstellen.

  • Unterstützung neuer arrays_to_object-Funktionen in snowflake.snowpark.functions hinzugefügt.

  • Unterstützung von Vektor-Datentyp hinzugefügt.

Aktualisierungen der Abhängigkeiten

  • Cloudpickle-Abhängigkeit für Verwendung mit cloudpickle==2.2.1 aktualisiert.

  • snowflake-connector-python auf Version 3.4.0 aktualisiert.

Fehlerkorrekturen

  • Überprüfung der Spaltennamen von DataFrame-Spalten auf Anführungszeichen unterstützt jetzt Zeilenumbrüche.

  • Fehler behoben, bei dem ein von session.read.with_metadata generierter DataFrame eine inkonsistente Tabelle erzeugte, wenn df.write.save_as_table ausgeführt wurde.

Version 1.10.0 (2023-11-03)

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

Neue Features

  • Unterstützung für die Verwaltung der Groß-/Kleinschreibung in DataFrame.to_local_iterator() hinzugefügt.

  • Unterstützung für das Angeben der Namen der Eingabespalten der vektorisierten UDTF hinzugefügt, indem der optionale Parameter input_names in UDTFRegistration.register, UDTFRegistration.register_file und functions.pandas_udtf verwendet wird. Standardmäßig entnimmt RelationalGroupedDataFrame.applyInPandas die Spaltennamen dem aktuellen DataFrame-Schema.

  • Attribute sql_error_code und raw_message zu SnowflakeSQLException hinzugefügt, wenn diese durch eine SQL-Ausnahme verursacht wird.

Fehlerkorrekturen

  • Problem in DataFrame.to_pandas() behoben, durch das bei der Konvertierung von Snowpark-DataFrames in Pandas-DataFrames die Genauigkeit von Ganzzahlen mit mehr als 19 Ziffern verloren ging.

  • Problem in session.add_packages behoben, bei dem ein Anforderungsspezifikator, der einen Projektnamen mit einem Unterstrich und einer Version enthielt, nicht verarbeitet werden konnte.

  • Problem in DataFrame.limit() behoben, wenn offset verwendet wird und das übergeordnete DataFrame verwendet limit. Jetzt wirkt sich offset nicht mehr auf limit im übergeordneten DataFrame aus.

  • Problem in DataFrame.write.save_as_table behoben, bei dem DataFrames, die aus der Lese-API erstellt wurden, aufgrund eines ungültigen Spaltennamens $1 keine Daten in Snowflake speichern konnte.

Verhaltensänderungen

  • Das Verhalten von date_format wurde geändert:

    • Das Argument format ist nicht mehr optional sondern erforderlich.

    • Das zurückgegebene Ergebnis wurde von einem Datumsobjekt in eine datumsformatierte Zeichenfolge geändert.

  • Wenn eine Fensterfunktion oder eine sequenzabhängige Datengeneratorfunktion (normal, zipf, uniform, seq1, seq2, seq4, seq8) verwendet wird, wird die Sortier- und Filteroperation bei der Generierung der Abfrage nicht mehr vereinfacht (Flattening).

Version 1.9.0 (2023-10-16)

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

Neue Features

  • Unterstützung der Laufzeitumgebung von Python 3.11 wurde hinzugefügt.

  • Unterstützung von JSON-serialisierbaren PythonObjJSONEncoder-Objekten für ARRAY- und OBJECT-Literale.

Aktualisierungen der Abhängigkeiten

  • Abhängigkeit von typing-extensions wurde wieder hinzugefügt.

Fehlerkorrekturen

  • Fehler behoben, bei dem Importe von permanenten Stagingbereichs-Speicherorten für temporär gespeicherte Prozeduren, UDTFs, UDFs und UDAFs ignoriert wurden.

  • Rückkehr zur Verwendung der CTAS-Anweisung (CREATE TABLE AS SELECT) für DataFrameWriter.save_as_table, die keine Einfügeberechtigung zum Schreiben in Tabellen benötigt.

Version 1.8.0 (2023-09-14)

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

Neue Features

  • Unterstützung der Schlüsselwörter VOLATILE und IMMUTABLE bei der Registrierung von UDFs wurde hinzugefügt.

  • Unterstützung für die Angabe von Gruppierungsschlüsseln beim Speichern von Datenframes mit DataFrame.save_as_table hinzugefügt.

  • Iterable-Objekte werden als Eingabe für schema akzeptiert, wenn Datenframes mit Session.create_dataframe erstellt werden.

  • Eigenschaft DataFrame.session wurde hinzugefügt, um ein Session-Objekt zurückzugeben.

  • Eigenschaft Session.session_id wurde hinzugefügt, um einen Integer-Wert zurückzugeben, der für die Sitzungs-ID steht.

  • Eigenschaft Session.connection wurde hinzugefügt, um ein SnowflakeConnection-Objekt zurückzugeben.

  • Unterstützung für das Erstellen einer Snowpark-Sitzung aus einer Konfigurationsdatei oder aus Umgebungsvariablen wurde hinzugefügt.

Aktualisierungen der Abhängigkeiten

  • snowflake-connector-python auf 3.2.0 aktualisiert.

Fehlerkorrekturen

  • Fehler behoben, bei dem ein automatischer Paket-Upload einen ValueError auslöste, auch wenn in session.add_packages kompatible Paketversionen hinzugefügt wurden.

  • Fehler behoben, bei dem bei Verwendung von register_from_file die gespeicherten Tabellenprozeduren nicht korrekt registriert wurden.

  • Fehler behoben, bei dem die Verknüpfung von Datenframes mit dem Fehler invalid_identifier fehlschlug.

  • Fehler behoben, durch den DataFrame.copy den SQL-Simplifier für die zurückgegebene Kopie deaktivierte.

  • Fehler behoben, bei dem session.sql().select() fehlschlug, wenn beliebige Parameter für session.sql() angegeben wurden.

Version 1.7.0 (2023-08-28)

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

Verhaltensänderungen

  • Beim Erstellen von gespeicherten Prozeduren UDFs, UDTFs und UDAFs mit dem Parameter is_permanent=False werden temporäre Objekte erstellt, auch wenn stage_name bereitgestellt wird. Der Standardwert von is_permanent ist False. Wenn dieser Wert bei permanenten Objekten nicht ausdrücklich auf True gesetzt wird, werden die Benutzer eine Änderung des Verhaltens feststellen.

  • types.StructField setzt Spaltenbezeichner jetzt standardmäßig in Anführungszeichen.

Neue Features

  • Hinzufügen der Parameter external_access_integrations und secrets, die beim Erstellen einer UDF, UDTF oder gespeicherten Prozedur aus Snowpark Python verwendet werden können, um die Integration mit externem Zugriff zu ermöglichen.

  • Unterstützung neuer Funktionen in snowflake.snowpark.functions hinzugefügt: array_flatten und flatten.

  • Unterstützung von apply_in_pandas in snowflake.snowpark.relational_grouped_dataframe hinzugefügt.

  • Unterstützung für die Replikation Ihrer lokalen Python-Umgebung nach Snowflake über Session.replicate_local_environment hinzugefügt.

Fehlerkorrekturen

  • Fehler behoben, bei dem session.create_dataframe nullwertfähige Spalten nicht korrekt festlegen konnte, wenn die NULL-Zulässigkeit durch die Reihenfolge oder die Angabe von Daten beeinflusst wurde.

  • Fehler behoben, bei dem DataFrame.select bei Verwendung von Tabellenfunktionen Spalten nicht identifizieren und mit Aliasen versehen konnte, wenn sich die Ausgabespalten der Tabellenfunktion mit Spalten im DataFrame überschnitten.

Version 1.6.1 (2023-08-02)

Verhaltensänderungen

  • DataFrameWriter.save_as_table akzeptiert jetzt ein nullwertfähiges Feld für ein vom Benutzer bereitgestelltes Schema oder ein abgeleitetes Schema auf Basis von Daten aus der Benutzereingabe.

Neue Features

  • Unterstützung neuer Funktionen in snowflake.snowpark.functions hinzugefügt:

    • array_sort

    • sort_array

    • array_min

    • array_max

    • explode_outer

  • Unterstützung von reinen Python-Paketen hinzugefügt, die über Session.add_requirements oder Session.add_packages angegeben werden. Diese können jetzt in gespeicherten Prozeduren und UDFs verwendet werden, auch wenn die Pakete nicht im Snowflake-Anaconda-Kanal vorhanden sind.

  • Session-Parameter custom_packages_upload_enabled und custom_packages_force_upload_enabled wurden hinzugefügt, um das oben erwähnte Feature zur Unterstützung reiner Python-Pakete zu aktivieren. Beide Parameter sind standardmäßig auf False eingestellt.

  • Unterstützung für die Angabe von Paketanforderungen durch Übergabe einer conda-YAML-Umgebungsdatei an Session.add_requirements wurde hinzugefügt.

  • Unterstützung der asynchronen Ausführung von Datenframes mit mehreren Abfragen, die Bindungsvariablen enthalten, wurde hinzugefügt.

  • Unterstützung für das Umbenennen mehrerer Spalten in DataFrame.rename wurde hinzugefügt.

  • Unterstützung von Geometrie-Datentypen hinzugefügt.

  • Unterstützung von params in session.sql() in gespeicherten Prozeduren hinzugefügt.

  • Unterstützung von benutzerdefinierten Aggregatfunktionen (UDAFs) hinzugefügt. Dieses Feature befindet sich derzeit in der privaten Vorschau.

  • Unterstützung von vektorisierten benutzerdefinierten Tabellenfunktionen (vektorisierte UDTFs) hinzugefügt. Dieses Feature befindet sich derzeit in der öffentlichen Vorschau.

  • Unterstützung von Snowflake-Timestamp-Varianten (d. h. TIMESTAMP_NTZ, TIMESTAMP_LTZ, TIMESTAMP_TZ) wurde hinzugefügt:

    • TimestampTimezone als Argument im TimestampType-Konstruktor hinzugefügt.

    • Typ-Hinweise hinzugefügt: NTZ, LTZ, TZ und Timestamp, um Funktionen bei der Registrierung von UDFs zu kommentieren.

Verbesserungen

  • Redundante Typisierungserweiterungen für Abhängigkeiten wurden entfernt.

  • DataFrame.cache_result erstellt jetzt eine temporäre Tabelle mit vollqualifizierten Namen unter der aktuellen Datenbank und dem aktuellen Schema.

Fehlerkorrekturen

  • Fehler behoben, bei dem die Typüberprüfung von Pandas vor dem Import durchgeführt wurde.

  • Fehler bei der Erstellung einer UDF mit numpy.ufunc behoben.

  • Fehler behoben, bei dem DataFrame.union keine korrekte Selectable.schema_query-Abfrage generierte, wenn der SQL Simplifier aktiviert ist.

Aktualisierungen der Abhängigkeiten

  • snowflake-connector-python auf Version 3.0.4 aktualisiert.

Version 1.5.1 (2023-06-20)

Neue Features und Aktualisierungen

  • Unterstützung der Laufzeitumgebung von Python 3.10 wurde hinzugefügt.

Version 1.5.0 (2023-06-13)

Verhaltensänderungen

  • Aggregationsergebnisse von Funktionen wie DataFrame.agg und DataFrame.describe entfernen keine nicht druckbaren Zeichen mehr aus den Spaltennamen.

Neue Features und Aktualisierungen

  • Unterstützung für Laufzeitumgebung von Python 3.9 wurde hinzugefügt.

  • Unterstützung neuer Funktionen in snowflake.snowpark.functions hinzugefügt:

  • array_generate_range

  • array_unique_agg

  • collect_set

  • sequence

  • Unterstützung von Registrierung und Aufruf von gespeicherten Prozeduren mit Rückgabetyp TABLE wurde hinzugefügt.

  • Unterstützung von Parameterlänge in StringType() wurde hinzugefügt, um die maximale Anzahl von Zeichen anzugeben, die in der Spalte gespeichert werden können.

  • Der Alias functions.element_at() wurde für functions.get() hinzugefügt.

  • Der Alias Column.contains wurde für functions.contains hinzugefügt.

  • Experimentelles Feature DataFrame.alias hinzugefügt.

  • Unterstützung der Abfrage von Metadatenspalten aus Stagingbereich beim Erstellen von DataFrame mit DataFrameReader wurde hinzugefügt.

  • Unterstützung von StructType.add hinzugefügt, um weitere Felder an vorhandene StructType-Objekte anzuhängen.

  • Unterstützung von Parameter execute_as in StoredProcedureRegistration.register_from_file() hinzugefügt, um die Aufruferrechte für gespeicherte Prozeduren festzulegen.

Fehlerkorrekturen

  • Fehler behoben, bei dem Dataframe.join_table_function nicht alle notwendigen Abfragen zum Einrichten der Join-Tabellenfunktion durchführte, wenn der SQL Simplifier aktiviert war.

  • Fehler mit Typhinweisdeklaration für kundenspezifische Typen korrigiert: ColumnOrName, ColumnOrLiteralStr, ColumnOrSqlExpr, LiteralType und ColumnOrLiteral, die die mypy-Prüfungen unterbrachen.

  • Fehler behoben, bei dem DataFrameWriter.save_as_table und DataFrame.copy_into_table vollqualifizierte Tabellennamen nicht parsen konnten.

Version 1.4.0 (2023-04-24)

Neue Features

  • Unterstützung von session.getOrCreate hinzugefügt.

  • Unterstützung von Alias Column.getField hinzugefügt.

  • Unterstützung neuer Funktionen in snowflake.snowpark.functions hinzugefügt:

    • date_add und date_sub, um Additions- und Subtraktionsoperationen zu erleichtern.

    • ddaydiff

    • dexplode

    • darray_distinct

    • dregexp_extract

    • dstruct

    • dformat_number

    • dbround

    • dsubstring_index

  • Beim Erstellen von UDFs, UDTFs und gespeicherten Prozeduren mit register_from_file wurde der Parameter skip_upload_on_content_match hinzugefügt, um das Hochladen von Dateien in einen Stagingbereich zu überspringen, wenn sich die gleiche Version der Dateien bereits im Stagingbereich befindet.

  • Unterstützung der Methode DataFrame.save_as_table zur Übernahme von Tabellennamen, die Punkte enthalten, wurde hinzugefügt.

  • Vereinfachter, generierter SQL-Code, wenn auf DataFrame.filter() oder DataFrame.order_by() eine Projektionsanweisung folgt (z. B. DataFrame.select(), DataFrame.with_column()).

  • Unterstützung für das Erstellen dynamischer Tabellen (in privater Vorschau) mit Dataframe.create_or_replace_dynamic_table hinzugefügt.

  • Optionales Argument params zu session.sql() hinzugefügt, um Binden von Variablen zu unterstützen. Beachten Sie, dass dieses Argument für gespeicherte Prozeduren noch nicht unterstützt wird.

Fehlerkorrekturen

  • Fehler in strtok_to_array behoben, bei dem bei Übergabe eines Trennzeichens eine Ausnahme ausgelöst wurde.

  • Fehler in session.add_import behoben, bei dem das Modul denselben Namespace wie andere Abhängigkeiten hatte.

Version 1.3.0 (2023-03-28)

Neue Features

  • Unterstützung von Trennzeichen-Parameter zu 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 (2023-03-02)

Neue Features und Aktualisierungen

  • 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 (2023-01-26)

Neue Features und Aktualisierungen

  • 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() for functions.sql_expr()

    • functions.date_format() for functions.to_date()

    • functions.monotonically_increasing_id() for functions.seq8()

    • functions.from_unixtime() for 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.