Versionshinweise zur Snowpark-Bibliothek für Python 2022

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.0.0 (2022-11-01)

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 (2022-10-14)

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() hinzugefügt, damit Sie die temporäre Tabelle nach dem Aufruf von DataFrame.cache_result() löschen können. Table ist auch ein Kontextmanager, sodass mit der 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 Schemanamen 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 (2022-09-28)

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() und 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() und Table.merge() versuchten, auf eine nicht vorhandene, temporäre Tabelle zu verweisen.

Version 0.10.0 (2022-09-16)

Neue Features

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

    • Schlüsselwortargumentblock 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() und 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 (2022-08-30)

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 (2022-07-22)

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.

  • query-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 (2022-05-25)

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 auf <= 2.0.0 eingeschränkt.

Version 0.6.0 (2022-04-27)

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 Session.create_dataframe()-Methode 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 wurden entfernt, die in 0.4.0 veraltet waren: 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 aus der Session.create_dataframe()-Methode entfernt.

Version 0.5.0 (2022-03-22)

Neue Features

  • API für gespeicherte Prozeduren hinzugefügt.

  • Eigenschaft Session.sproc und sproc() wurden zu snowflake.snowpark.functions hinzugefügt, sodass Sie gespeicherte Prozeduren registrieren können.

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

  • UDFRegistration.register_from_file() hinzugefügt, um das Registrieren 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.

  • Funktion call_udf() akzeptiert jetzt auch Literalwerte.

  • Eigenes Schlüsselwort in array_agg() bereitgestellt.

Fehlerkorrekturen

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

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

Version 0.4.0 (2022-02-15)

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() zu 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.

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

  • Parameterimporte zu snowflake.snowpark.functions.udf() und UserDefinedFunction.register() hinzugefügt, um Codeimporte auf UDF-Ebene anzugeben.

  • Parameter „session“ zu Funktionen udf() und UserDefinedFunction.register() hinzugefügt, sodass Sie beim Erstellen einer UDF angegeben können, welche Sitzung verwendet werden soll, wenn Sie mehrere Sitzungen haben.

  • Typen Geography und Variant 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.

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

  • Methode „merge“ führt Daten eines DataFrame-Objekts in einer Tabelle (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 zum Verfolgen 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. Verwenden Sie den Parameter „connection“ in Session.builder.configs().

  • Es wurden use_database(), use_schema(), use_warehouse() und use_role() zur Klasse „Session“ hinzugefügt, um nach dem Erstellen einer Sitzung Datenbank/Schema/Warehouse/Rolle zu ändern.

  • 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.

  • Optionales Argument „ignore_nulls“ zu den Funktionen lead() und lag() hinzugefügt.

  • Der Bedingungsparameter 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 deren Snake-Case-Äquivalente ersetzt: groupingByGroupingSets(), naturalJoin(), withColumns() und joinTableFunction().

  • Die Eigenschaft DataFrame.columns ist nun mit der Eigenschaft DataFrame.schema.names konsistent und entspricht den Snowflake-Anforderungen an 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. Beispielsweise wird bei col(„a“) > 1 und col(„b“) > 2 ein TypeError ausgelöst. 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 (2022-01-09)

Neue Features

  • Column.isin() mit einem Alias Column.in_() hinzugefügt.

  • Column.try_cast() hinzugefügt, was 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 auszugeben.

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

  • Ein 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.

  • regexp_replace(), concat(), concat_ws(), to_char(), current_timestamp(), current_date(), current_time(), months_between(), cast(), try_cast(), greatest(), least() und hash() wurden 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.

  • 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 die pyarrow-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 (2021-12-02)

Neue Features

  • createDataFrame()-Methode 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 Funktionen hinzugefügt: cume_dist(), die die kumulative Verteilung eines Wertes in Bezug auf andere Werte innerhalb einer Fensterpartition ermittelt, und row_number(), die eine eindeutige Zeilennummer für jede Zeile innerhalb einer Fensterpartition 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 DataFrame-Klasse hinzugefügt.

  • Klasse GroupingSets hinzugefügt, die mit der DataFrame-Methode groupByGroupingSets verwendet werden kann, um die SQL-Klausel 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.