Versionshinweise zur Snowpark-Bibliothek für Python 2024

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.13.0 (2024-02-26)

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

Neue Features

  • Unterstützung für ein optionales Argument date_part zur Funktion last_day hinzugefügt.

  • SessionBuilder.app_name setzt den query_tag-Wert, nachdem die Sitzung erstellt wurde.

  • Unterstützung der folgenden lokalen Testfunktionen wurde hinzugefügt:

    • current_timestamp

    • current_date

    • current_time

    • strip_null_value

    • upper

    • lower

    • length

    • initcap

Verbesserungen

  • Bereinigungslogik beim Herunterfahren des Interpreters hinzugefügt, um alle aktiven Sitzungen zu schließen.

Fehlerkorrekturen

  • Fehler in DataFrame.to_local_iterator behoben, bei dem der Iterator aufgrund einer falschen Isolationsebene falsche Ergebnisse liefern konnte, wenn die Ausführung einer weiteren Abfrage gestartet wurde, bevor der Iterator endete.

  • Fehler behoben, durch den Tabellennamen in Fehlermeldungen abgeschnitten wurden, wenn ein Plan mit aktivierten lokalen Testfunktionen ausgeführt wurde.

  • Fehler behoben, bei dem Session.range ein leeres Ergebnis zurückgibt, wenn der Bereich groß ist.

Version 1.12.1 (2024-02-08)

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

Verbesserungen

  • Standardmäßige Verwendung von split_blocks=True bei der to_pandas-Konvertierung, um optimale Arbeitsspeicherzuteilung zu erreichen. Dieser Parameter wird an pyarrow.Table.to_pandas übergeben, wodurch PyArrow bei der Arbeitsspeicherzuteilung anstelle eines einzigen zusammenhängenden Blocks eine Aufteilung in kleinere und damit besser zu verwaltende Blöcke vornehmen kann. Dies führt zu einer besseren Arbeitsspeicherverwaltung bei der Bearbeitung größerer Datasets.

Fehlerkorrekturen

  • Fehler in DataFrame.to_pandas behoben, der bei der Auswertung von DataFrames auftrat, die eine IntergerType-Spalte mit Nullwerten enthielten.

Version 1.12.0 (2024-01-29)

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

Verhaltensänderungen (API-kompatibel)

  • Beim Parsen von Datentypen während einer to_pandas-Operation verlassen wir uns auf den GS-Präzisionswert, um Präzisionsprobleme bei großen Ganzzahlwerten zu beheben. Dies kann Benutzer betreffen, bei denen eine Spalte, die zuvor als int8 zurückgegeben wurde, nun als int64 zurückgegeben wird. Benutzer können dies beheben, indem sie für ihre Rückgabespalten explizit Präzisionswerte angeben.

  • Abgestimmtes Verhalten von Session.call im Falle von gespeicherten Tabellenprozeduren, bei denen die Ausführung von Session.call nur dann eine gespeicherte Prozedur auslösen würde, wenn eine collect()-Operation ausgeführt wird.

  • StoredProcedureRegistration fügt nun automatisch snowflake-snowpark-python als Paketabhängigkeit zur lokalen Bibliotheksversion des Clients hinzu. Wenn der Server diese Version nicht unterstützt, wird ein Fehler ausgegeben.

Neue Features

  • statement_params in StoredProcedure.__call__ bereitgestellt.

  • Zwei optionale Argumente zu Session.add_import hinzugefügt:

    • chunk_size: Anzahl der zu hashenden Bytes pro Block der hochgeladenen Dateien.

    • whole_file_hash: Standardmäßig wird nur der erste Block des hochgeladenen Imports gehasht, um Zeit zu sparen. Wenn auf „True“ gesetzt, wird stattdessen jede hochgeladene Datei vollständig gehasht.

  • Parameter external_access_integrations und secrets beim Erstellen einer UDAF zu Snowpark Python hinzugefügt, um Integration mit externem Zugriff zu ermöglichen.

  • Neue Methode Session.append_query_tag hinzugefügt, die es ermöglicht, ein zusätzliches Tag zum aktuellen Abfrage-Tag hinzuzufügen, indem es als durch Komma getrennter Wert angehängt wird.

  • Neue Methode Session.update_query_tag hinzugefügt, die Aktualisierungen eines JSON-kodierten Dictionary-Abfrage-Tags ermöglicht.

  • SessionBuilder.getOrCreate versucht nun, das Singleton zu ersetzen, das zurückgegeben wird, wenn Ablaufen des Tokens erkannt wurde.

  • Folgende Funktionen zu snowflake.snowpark.functions hinzugefügt:

    • array_except

    • create_map

    • sign / signum

  • Folgende Funktionen zu DataFrame.analytics hinzugefügt:

    • Funktion moving_agg zu DataFrame.analytics hinzugefügt, um gleitende Aggregationen wie Summen und Durchschnitte mit mehreren Fenstergrößen zu ermöglichen.

    • Funktion cummulative_agg zu DataFrame.analytics hinzugefügt, um gleitende Aggregationen wie Summen und Durchschnitte mit mehreren Fenstergrößen zu ermöglichen.

Fehlerkorrekturen

  • Fehler in DataFrame.na.fill behoben, der dazu führte, dass boolesche Werte fälschlicherweise ganzzahlige Werte überschrieben.

  • Fehler in Session.create_dataframe behoben, bei dem Snowpark-DataFrames, die aus Pandas-DataFrames erstellt wurde, den Typ für Zeitstempelspalten nicht korrekt ableitete. Der Verhalten ist wie folgt:

    • Früher wurden Zeitstempelspalten ohne Zeitzone in Nanosekunden-Epochen umgewandelt und als LongType() abgeleitet. Jetzt bleiben diese aber korrekt als Zeitstempelwerte erhalten und werden als TimestampType(TimestampTimeZone.NTZ) abgeleitet.

    • Früher wurden Zeitstempelspalten mit einer Zeitzone als TimestampType(TimestampTimeZone.NTZ) abgeleitet, wobei Zeitzoneninformationen verloren gingen. Jetzt werden sie korrekt als TimestampType(TimestampTimeZone.LTZ) abgeleitet, wobei Zeitzoneninformationen korrekt erhalten bleiben.

    • Sitzungsparameter PYTHON_SNOWPARK_USE_LOGICAL_TYPE_FOR_CREATE_DATAFRAME so festgelegt, um zum alten Verhalten zurückzukehren. Snowflake empfiehlt, dass Sie Ihren Code aktualisieren, um ihn an das korrekte Verhalten anzupassen, da der Parameter in Zukunft entfernt wird.

  • Fehler behoben, dass DataFrame.to_pandas den Dezimaltyp erhält, wenn die Dezimalstellenzahl nicht 0 ist, und in pandas ein Objekt-dtype erstellt. Stattdessen wird der Wert nun in einen float64-Typ umgewandelt.

  • Fehler behoben, bei dem der generierte SQL-Code in folgenden Fällen fälschlicherweise vereinfacht (Flatten) wurde:

    • DataFrame.filter() wird nach DataFrame.sort().limit() aufgerufen.

    • DataFrame.sort() oder filter() wird auf einem DataFrame aufgerufen, der bereits eine Fensterfunktion oder eine sequenzabhängige Datengeneratorspalte hat. Beispielsweise wird df.select("a", seq1().alias("b")).select("a", "b").sort("a") nicht mehr zum Vereinfachen (Flatten) der Sortierklausel führen.

    • Nach DataFrame.limit() wird eine Fenster- oder eine sequenzabhängige Datengeneratorspalte verwendet. Beispielsweise wird df.limit(10).select(row_number().over()) nicht mehr zum Vereinfachen (Flatten) von „limit“ und „select“ im generierten SQL führen.

  • Fehler behoben, bei dem das Aliasing einer DataFrame-Spalte zu einem Fehler führte, wenn der DataFame von einem anderen DataFrame mit Aliasing-Spalte kopiert wurde. Beispiel:

    df = df.select(col("a").alias("b"))
    df = copy(df)
    df.select(col("b").alias("c"))  # Threw an error. Now it's fixed.
    
    Copy
  • Fehler in Session.create_dataframe behoben, der dazu führte, dass das nicht nullwertfähig Feld in einem Schema bei einem booleschen Typ nicht beachtet wurde. Beachten Sie, dass dieser Fix nur wirksam ist, wenn der Benutzer die Berechtigung zum Erstellen von temporären Tabellen hat.

  • Fehler im SQL Simplifier behoben, bei dem Nicht-Select-Anweisungen in session.sql SQL-Abfragen bei Verwendung von limit() gelöscht haben.

  • Fehler behoben, der eine Ausnahme auslöste, wenn der Sitzungsparameter ERROR_ON_NONDETERMINISTIC_UPDATE den Wert „true“ hat.