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 Funktionlast_day
hinzugefügt.SessionBuilder.app_name
setzt denquery_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 derto_pandas
-Konvertierung, um optimale Arbeitsspeicherzuteilung zu erreichen. Dieser Parameter wird anpyarrow.Table.to_pandas
übergeben, wodurchPyArrow
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 eineIntergerType
-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 alsint8
zurückgegeben wurde, nun alsint64
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 vonSession.call
nur dann eine gespeicherte Prozedur auslösen würde, wenn einecollect()
-Operation ausgeführt wird.StoredProcedureRegistration
fügt nun automatischsnowflake-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
inStoredProcedure.__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
undsecrets
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
zuDataFrame.analytics
hinzugefügt, um gleitende Aggregationen wie Summen und Durchschnitte mit mehreren Fenstergrößen zu ermöglichen.Funktion
cummulative_agg
zuDataFrame.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 alsTimestampType(TimestampTimeZone.NTZ)
abgeleitet.Früher wurden Zeitstempelspalten mit einer Zeitzone als
TimestampType(TimestampTimeZone.NTZ)
abgeleitet, wobei Zeitzoneninformationen verloren gingen. Jetzt werden sie korrekt alsTimestampType(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 inpandas
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 nachDataFrame.sort().limit()
aufgerufen.DataFrame.sort()
oderfilter()
wird auf einem DataFrame aufgerufen, der bereits eine Fensterfunktion oder eine sequenzabhängige Datengeneratorspalte hat. Beispielsweise wirddf.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 wirddf.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.
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 vonlimit()
gelöscht haben.Fehler behoben, der eine Ausnahme auslöste, wenn der Sitzungsparameter
ERROR_ON_NONDETERMINISTIC_UPDATE
den Wert „true“ hat.