ALTER FUNCTION (Snowpark Container Services)

Ändert die Eigenschaften einer bestehenden Dienstfunktion.

Um weitere Änderungen an einer Dienstfunktion vorzunehmen, müssen Sie die Funktion (mit DROP FUNCTION (Snowpark Container Services)) löschen und dann neu erstellen.

Siehe auch:

Dienstfunktionen, CREATE FUNCTION, DESC FUNCTION, DROP FUNCTION

Syntax

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  RENAME TO <new_name>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET CONTEXT_HEADERS = ( <context_function_1> [ , <context_function_2> ...] )

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET MAX_BATCH_ROWS = <integer>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET MAX_BATCH_RETRIES = <integer>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET ON_BATCH_FAILURE = { ABORT | RETURN_NULL }

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET BATCH_TIMEOUT_SECS = <integer>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET COMMENT = '<string_literal>'

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET SERVICE = '<service_name>' ENDPOINT = '<endpoint_name>'

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  UNSET { CONTEXT_HEADERS | MAX_BATCH_ROWS | MAX_BATCH_RETRIES | ON_BATCH_FAILURE | BATCH_TIMEOUT_SECS | COMMENT }
Copy

Parameter

name

Gibt den Bezeichner für die zu ändernde Dienstfunktion an. Der Bezeichner kann den Schemanamen und den Datenbanknamen sowie den Funktionsnamen enthalten. Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelten Anführungszeichen eingeschlossen sind, wird ebenfalls zwischen Groß- und Kleinschreibung unterschieden.

arg_data_type [ , ... ]

Gibt die Argumente/Eingabedatentypen für die Dienstfunktion an.

Wenn die Funktion Argumente akzeptiert, muss der Befehl ALTER die Argumenttypen angeben, da Funktionen das Überladen von Namen unterstützen (d. h. zwei Funktionen im selben Schema können denselben Namen haben) und die Argumenttypen zur Identifizierung der Funktion verwendet werden.

RENAME TO new_name

Gibt den neuen Bezeichner für die Dienstfunktion an; die Kombination aus dem Bezeichner und den vorhandenen Argumentdatentypen muss für das Schema eindeutig sein.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

Bemerkung

Wenn Sie den neuen Namen für die Dienstfunktion angeben, verwenden Sie keine Argumentdatentypen oder Klammern, sondern geben Sie nur den neuen Namen an.

Sie können das Objekt in eine andere Datenbank und/oder in ein anderes Schema verschieben und dabei optional das Objekt umbenennen. Geben Sie dazu einen qualifizierten new_name-Wert an, der den neuen Datenbank- und/oder Schemanamen im Format db_name.schema_name.object_name bzw. schema_name.object_name enthält.

Bemerkung

  • Die Zieldatenbank und/oder das Zielschema müssen bereits vorhanden sein. Außerdem darf in der Zieldatenbank nicht bereits ein gleichnamiges Schema vorhanden sein, da die Anweisung sonst einen Fehler zurückgibt.

  • Das Verschieben eines Objekts in ein verwaltetes Zugriffsschema ist nicht zulässig, es sei denn, der Objekteigentümer (d. h. die Rolle mit der Berechtigung OWNERSHIP für das Objekt) ist auch Eigentümer des Zielschemas.

Wenn ein Objekt umbenannt wird, müssen andere Objekte, die darauf verweisen, mit dem neuen Namen aktualisiert werden.

SET ...

Gibt die Eigenschaften an, die für die Funktion festgelegt werden sollen:

COMMENT = 'string_literal'

Gibt einen Kommentar für die Funktion an, der in der Spalte DESCRIPTION der Ausgabe von SHOW FUNCTIONS und SHOW USER FUNCTIONS angezeigt wird.

SERVICE = '<service_name>' ENDPOINT = '<endpoint_name>'

Gibt den Namen des Dienstes und den Namen des Endpunkts an, wie er in der Dienstspezifikation definiert ist.

CONTEXT_HEADERS = ( context_function_1 [ , context_function_2 ... ] )

Es ermöglicht die Bindung der Ergebnisse der Snowflake-Kontextfunktionen an den HTTP-Header.

Jeder Wert muss der Name einer Kontextfunktion sein. Setzen Sie die Namen nicht in Anführungszeichen.

Weitere Details zu diesem Parameter finden Sie unter CREATE FUNCTION (Snowpark Container Services).

MAX_BATCH_ROWS = integer

Gibt die Stapelgröße beim Senden von Dienst zur Erhöhung der Parallelität an

MAX_BATCH_RETRIES = integer

Gibt an, wie oft Snowflake einen fehlgeschlagenen Batch erneut versuchen soll.

ON_BATCH_FAILURE = { ABORT | RETURN_NULL }

Legt die Verhaltensweise der Funktion fest, nachdem Snowflake die maximale Anzahl von Wiederholungsversuchen bei der Verarbeitung des Batchs erreicht hat.

  • ABORT: Die Dienstfunktion bricht die Ausführung ab. Alle verbleibenden Batches von Zeilen werden nicht verarbeitet.

  • RETURN_NULL: Die Dienstfunktion gibt für jede Zeile im fehlgeschlagenen Batch eine NULL zurück und fährt mit der Verarbeitung der übrigen Batches fort. Wenn Sie sich für diese Option entscheiden, beachten Sie bitte die folgenden Vorbehalte:

    • Wenn diese Batches voneinander abhängen und ein Batch fehlschlägt, könnte dies zu unerwarteten Ergebnissen führen.

    • Wenn Ihr Dienst NULL als gültige Antwort zurückgeben kann, ist es nicht möglich, zwischen einem NULL-Wert, der von Snowflake aufgrund eines Batch-Fehlers zurückgegeben wird, und einem NULL-Wert, der von Ihrem Dienst zurückgegeben wird, zu unterscheiden.

BATCH_TIMEOUT_SECS = integer

Gibt die maximale Dauer für die Verarbeitung eines einzelnen Batchs von Zeilen an, einschließlich Wiederholungen (und Abfragen für asynchrone Funktionsanforderungen), nach der Snowflake die Batch-Anfrage beenden soll.

Akzeptable Werte: größer als 0 und kleiner oder gleich 604.800 Sekunden (7 Tage).

UNSET ...

Gibt die Eigenschaften an, die für die Funktion nicht gesetzt werden sollen, wodurch sie auf die Standardwerte zurückgesetzt werden. Beachten Sie, dass Sie den Dienstendpunkt nicht zurücksetzen können.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

OWNERSHIP

Funktion

USAGE

Dienstendpunkt

Die Nutzung eines Dienstendpunkts wird den in der Dienstspezifikation definierten Dienstrollen gewährt. Anschließend weisen Sie die Dienstrolle der Rolle zu, die die Dienstfunktion ändert. Diese Berechtigung ist erforderlich, wenn Sie einen Dienstendpunkt ändern.

USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Beispiele

Umbenennen einer Dienstfunktion:

ALTER FUNCTION my_echo_udf(VARCHAR) RENAME TO my_echo_udf_temp;
Copy

Legen Sie einen Kommentar für eine Dienstfunktion fest:

ALTER FUNCTION my_echo_udf(VARCHAR) SET COMMENT = 'some comment';
Copy

Legen Sie die maximale Anzahl von Zeilen pro Batch für eine Dienstfunktion fest:

ALTER FUNCTION my_echo_udf(number) SET MAX_BATCH_ROWS = 100;
Copy

Legen Sie den CURRENT_USER-Kontextheader für eine Dienstfunktion fest:

ALTER FUNCTION my_echo_udf(VARCHAR) SET CONTEXT_HEADER = (CURRENT_USER);
Copy

MAX_BATCH_ROWS für eine Dienstfunktion aufheben:

ALTER FUNCTION my_echo_udf(VARCHAR) UNSET MAX_BATCH_ROWS;
Copy