Ä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
infunctions.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 vonDataFrame.collect
mithilfe des Parameterscase_sensitive
hinzugefügt.Indexer-Unterstützung für
snowflake.snowpark.types.StructType
hinzugefügt.Schlüsselwortargument
log_on_exception
zuDataframe.collect
undDataframe.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 undDataFrame.select
oderDataFrame.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 mitsession.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
insnowflake.snowflake.files.SnowflakeFile.open()
(in Private Preview) hinzugefügt, umis_owner_file
zu ersetzen, das als veraltet markiert ist.
Fehlerkorrekturen¶
Fehler behoben, der beim Erstellen einer Snowpark-Sitzung
paramstyle
mitqmark
überschrieb.Fehler behoben, bei dem
df.join(..., how="cross")
mitSnowparkJoinException: (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
undunix_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ürfunctions.sql_expr()
functions.date_format()
fürfunctions.to_date()
functions.monotonically_increasing_id()
fürfunctions.seq8()
functions.from_unixtime()
fürfunctions.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
undINF
generierte.
Verbesserungen¶
Der Sitzungsparameter
PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER
hat nach Veröffentlichung von Snowflake 7.3 den WertTrue
. In snowpark-python liestsession.sql_simplifier_enabled
standardmäßig den Wert vonPYTHON_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 SiePYTHON_SNOWPARK_USE_SQL_SIMPLIFIER
in Snowflake aufFalse
, oder führen Siesession.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.
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 einerAsyncJob
-Instanz aus einer Abfrage-ID.AsyncJob.result()
akzeptiert jetzt das Argumentresult_type
, um die Ergebnisse in verschiedenen Formaten zurückzugeben.AsyncJob.to_df()
gibt einenDataFrame
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()
undRelationalGroupedDataFrame.agg()
akzeptieren jetzt Argumente mit variabler Länge.Die Parameter
lsuffix
undrsuffix
wurden zuDataFrame.join()
undDataFrame.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 vonDataFrame.cache_result()
löschen können.Table
ist auch ein Kontextmanager, so dass mit derwith
-Anweisung auch die temporäre Cache-Tabelle nach der Verwendung gelöscht werden kann.Session.use_secondary_roles()
hinzugefügt.Funktionen
first_value()
undlast_value()
hinzugefügt (Beitrag von @chasleslr).on
als Alias fürusing_columns
undhow
als Alias fürjoin_type
inDataFrame.join()
hinzugefügt.
Fehlerkorrekturen¶
Fehler in
Session.create_dataframe()
behoben, der einen Fehler ausgelöst hat, wennschema
-Namen Sonderzeichen enthielten.Fehler behoben, bei dem in
Session.read.option()
festgelegte Optionen nicht als Standardwerte anDataFrame.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 einenValueError
-Fehler aus, wenn die Version eines Pakets nicht im Snowflake-Anaconda-Kanal gefunden werden kann. Zuvor warSession.add_packages()
erfolgreich, und eineSnowparkSQLException
-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 infunctions.ntiles()
hinzugefügt.Folgende Aliasse wurden hinzugefügt:
functions.call_function()
fürfunctions.call_builtin()
functions.function()
fürfunctions.builtin()
DataFrame.order_by()
fürDataFrame.sort()
DataFrame.orderBy()
fürDataFrame.sort()
Verbesserung von
DataFrame.cache_result()
, um anstelle einerDataFrame
-Klasse eine genauereTable
-Klasse zurückzugeben.Unterstützung hinzugefügt, um
session
beim Aufruf vonStoredProcedure
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
inSession.write_pandas()
hinzugefügt. Folgende Tabellentypen stehen nun fürtable_type
zur Verfügung:temporary
,temp
undtransient
.Unterstützung der Verwendung von strukturierten Python-Daten (
list
,tuple
unddict
) als Literalwerte in Snowpark hinzugefügt.Schlüsselwortargument
execute_as
zufunctions.sproc()
undsession.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()
undDataFrameWriter.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
inSession.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üsselwortargumentsource_code_display
mitFalse
.Unterstützung für das Aufrufen von Tabellenfunktionen aus
DataFrame.select()
,DataFrame.with_column()
undDataFrame.with_columns()
hinzugefügt, die jetzt Parameter vom Typtable_function.TableFunctionCall
für Spalten akzeptieren.Schlüsselwortargument
overwrite
zusession.write_pandas()
hinzugefügt, um den Inhalt einer Snowflake-Tabelle mit dem eines Pandas DataFrame zu überschreiben.Schlüsselwortargument
column_order
zudf.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()
undTableFunctionCall.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 Modulsnowflake.snowpark.context
hinzugefügt, um die aktuell aktive Snowpark-Sitzung zu ermitteln.
Verbesserungen¶
Funktion
function.uniform()
wurde verbessert, um die Typen vonmax_
- undmin_
-Eingaben zu ermitteln und die Grenzwerte inIntegerType
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
undrandom_split
in Klassesnowflake.snowpark.Dateframe
.update
,delete
undmerge
in Klassesnowflake.snowpark.Table
.save_as_table
undcopy_into_location
in Klassesnowflake.snowpark.DataFrameWriter
.approx_quantile
,statement_params
,cov
undcrosstab
in Klassesnowflake.snowpark.DataFrameStatFunctions
.register
undregister_from_file
in Klassesnowflake.snowpark.udf.UDFRegistration
.register
undregister_from_file
in Klassesnowflake.snowpark.udtf.UDTFRegistration
.register
undregister_from_file
in Klassesnowflake.snowpark.stored_procedure.StoredProcedureRegistration
.udf
,udtf
undsproc
insnowflake.snowpark.functions
.
Unterstützung von
Column
als Eingabeargument fürsession.call()
hinzugefügt.Unterstützung von
table_type
indf.write.save_as_table()
hinzugefügt. Folgende Tabellentypen stehen nun fürtable_type
zur Verfügung:temporary
,temp
undtransient
.
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 undFalse
inNone
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-Funktionfunction.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 Tabellenfunktionpartition by
undorder by
angibt.Session.table_function()
undDataFrame.join_table_function()
aktualisiert, umTableFunctionCall
-Instanzen zu akzeptieren.
Grundlegende Änderungen¶
Wenn Sie eine Funktion mit
functions.udf()
undfunctions.sproc()
erstellen, können Sie jetzt eine leere Liste für dasimports
- oderpackages
-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 intypes.py
wurde verbessert. Die nicht genutzte Eigenschafttype_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()
undDataFrame.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()
zusnowflake.snowflake.functions
hinzugefügt.
Verbesserungen¶
Unterstützung für das Erstellen eines leeren
DataFrame
-Objekts mit einem bestimmten Schema unter Verwendung der MethodeSession.create_dataframe()
hinzugefügt.Änderung des Protokolliergrads von
INFO
aufDEBUG
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
undsproc()
zusnowflake.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()
zusnowflake.snowpark.functions
hinzugefügt.Die Funktion
call_udf()
akzeptiert jetzt auch Literalwerte.distinct
-Schlüsselwort inarray_agg()
bereitgestellt.
Fehlerkorrekturen¶
Problem wurde behoben, das dazu führte, dass
DataFrame.to_pandas()
bei Verwendung vonColumn.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()
undremove_package()
zur KlasseSession
hinzugefügt.add_requirements()
zuSession
hinzugefügt, sodass Sie eine Anforderungsdatei verwenden können, um anzugeben, welche Pakete diese Sitzung verwenden wird.Parameter
packages
zu Funktionsnowflake.snowpark.functions.udf()
und MethodeUserDefinedFunction.register()
hinzugefügt, um beim Erstellen einer UDF Anaconda-Paketabhängigkeiten auf UDF-Ebene anzugeben.Der Parameter
imports
wurde zusnowflake.snowpark.functions.udf()
undUserDefinedFunction.register()
hinzugefügt, um Code-Importe auf UDF-Ebene anzugeben.Der Parameter
session
wurde zu den Funktionenudf()
undUserDefinedFunction.register()
hinzugefügt, damit beim Erstellen einer UDF angegeben werden kann, welche Sitzung verwendet werden soll, wenn Sie mehrere Sitzungen haben.Die Typen
Geography
undVariant
wurden zusnowflake.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 KlasseDataFrame
für Tabellenoperationen hinzugefügt.Die Methoden
update
unddelete
aktualisieren und löschen Zeilen einer Tabelle in Snowflake.Die Methode
merge
führt Daten einesDataFrame
-Objekts in einerTable
zusammen.Methode
DataFrame.sample()
mit einem zusätzlichen Parameterseed
überschrieben, der auf Tabellen, aber nicht auf Ansichten und Unterabfragen funktioniert.DataFrame.to_local_iterator()
undDataFrame.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 einemDataFrame
-Objekt in einer temporären Tabelle ausgeführt werden. Nachfolgende Operationen auf dem ursprünglichenDataFrame
-Objekt haben keine Auswirkungen auf das zwischengespeicherteDataFrame
-Ergebnisobjekt.Eigenschaft
DataFrame.queries
hinzugefügt, um SQL-Abfragen zu erhalten, die zur Auswertung desDataFrame
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 vonDataFrames
erstellt wurden. Sowohl die Abfrage-ID als auch der Abfragetext werden erfasst.Sie können nun eine
Session
-Instanz aus einem bestehendensnowflake.connector.SnowflakeConnection
-Objekt erstellen. Parameterconnection
inSession.builder.configs()
verwenden.Hinzufügen von
use_database()
,use_schema()
,use_warehouse()
unduse_role()
zur KlasseSession
, um nach dem Erstellen einer Sitzung Datenbank/Schema/Warehouse/Rolle zu wechseln.DataFrameWriter.copy_into_table()
zum Entladen einesDataFrame
-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()
undfactorial()
zusnowflake.snowpark.functions
hinzugefügt.Ein optionales Argument
ignore_nulls
wurde den Funktionenlead()
undlag()
hinzugefügt.Parameter
condition
der Funktionenwhen()
undiff()
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()
undgetFullyQualifiedCurrentSchema()
.Folgende Methoden der Klasse
DataFrame
sind veraltet und wurden durch ihre Snake-Case-Äquivalente ersetzt:groupingByGroupingSets()
,naturalJoin()
,withColumns()
undjoinTableFunction()
.Die Eigenschaft
DataFrame.columns
mit der EigenschaftDataFrame.schema.names
konsistent und entspricht den Anforderungen an Snowflake-Datenbankbezeichner.Column.__bool__()
löst nun einenTypeError
-Fehler aus. Dadurch wird die Verwendung der logischen Operatorenand
,or
,not
auf demColumn
-Objekt verhindert. So löstcol("a") > 1 and col("b") > 2
beispielsweise einenTypeError
-Fehler aus. Verwenden Sie stattdessen(col("a") > 1) & (col("b") > 2)
.PutResult
undGetResult
wurden in Unterklassen vonNamedTuple
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 AliasColumn.in_()
aktualisiert.Column.try_cast()
hinzugefügt, das eine spezielle Version voncast()
ist. Dieses Feature versucht, einen Zeichenfolgenausdruck in andere Typen umzuwandeln und gibtnull
zurück, wenn die Umwandlung nicht möglich ist.Column.startswith()
undColumn.substr()
zur Verarbeitung von Zeichenfolgenspalten hinzugefügt.Column.cast()
akzeptiert jetzt auch einenstr
-Wert, um zusätzlich zu einerDataType
-Instanz den Umwandlungstyp anzugeben.DataFrame.describe()
hinzugefügt, um die Statistiken einesDataFrame
-Objekts zusammenzufassen.DataFrame.explain()
hinzugefügt, um den Abfrageplans einesDataFrame
-Objekts zu drucken.DataFrame.filter()
undDataFrame.select_expr()
akzeptieren jetzt einen SQL-Ausdruck.Neuer
bool
-Parameter namenscreate_temp_table
wurde zu den MethodenDataFrame.saveAsTable()
undSession.write_pandas()
hinzugefügt, um optional eine temporäre Tabelle zu erstellen.DataFrame.minus()
undDataFrame.subtract()
als Aliasse zuDataFrame.except_()
hinzugefügt.Funktionen
regexp_replace()
,concat()
,concat_ws()
,to_char()
,current_timestamp()
,current_date()
,current_time()
,months_between()
,cast()
,try_cast()
,greatest()
,least()
undhash()
zum Modulsnowflake.snowpark.functions
hinzugefügt.
Fehlerkorrekturen¶
Problem behoben, bei dem
Session.createDataFrame(pandas_df)
undSession.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¶
snowflake-connector-python
auf 2.7.2 aktualisiert, wodurch diepyarrow
-Abhängigkeit auf 6.0.x aktualisiert wurde. Weitere Informationen dazu finden Sie in den Versionshinweisen zum Python-Konnektor 2.7.2.
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 Funktionrow_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()
undpivot()
zur Klasse DataFrame hinzugefügt.Klasse
GroupingSets
hinzugefügt, die mit der DataFrame-MethodegroupByGroupingSets
verwendet werden kann, um die KlauselSQL 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
undotherwise
nun zusätzlich zuColumn
-Objekten auch Python-Typen.Beim Registrieren einer UDF können Sie jetzt optional den
replace
-Parameter aufTrue
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.