

 Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# SVL\_UDF\_LOG
<a name="r_SVL_UDF_LOG"></a>

 Zeichnet systemdefinierte Fehlermeldungen und Warnungen auf, die während der Ausführung einer benutzerdefinierten Funktion (User-Defined Function, UDF) generiert wurden. 

SVL\_UDF\_LOG ist für alle Benutzer sichtbar. Superuser können alle Zeilen sehen; reguläre Benutzer können nur ihre eigenen Daten sehen. Weitere Informationen finden Sie unter [Sichtbarkeit der Daten in Systemtabellen und Ansichten](cm_chap_system-tables.md#c_visibility-of-data). 

Einige oder alle Daten in dieser Tabelle sind auch in der SYS-Überwachungsansicht [SYS\_UDF\_LOG](SYS_UDF_LOG.md) zu finden. Die Daten in der SYS-Überwachungsansicht sind so formatiert, dass sie leichter verwendbar und besser verständlich sind. Wir empfehlen Ihnen, für Ihre Abfragen die SYS-Überwachungsansicht zu verwenden.

## Tabellenspalten
<a name="SVL_UDF_LOG-table-columns"></a>


| Spaltenname  | Datentyp  | Beschreibung  | 
| --- | --- | --- | 
| query | bigint | Die Abfrage-ID. Sie können diese ID verwenden, um verschiedene andere Systemtabellen und Anzeigen anzufügen. | 
| Nachricht | char(4096) | Die von der Funktion generierte Meldung. | 
| created | timestamp | Der Zeitpunkt der Erstellung des Protokolls. | 
| traceback | char(4096) | Falls verfügbar, bietet dieser Wert einen Stack-Traceback für die benutzerdefinierte Funktion. Weitere Informationen finden Sie unter [traceback](https://docs.python.org/2/library/traceback.html) in der Python-Standardbibliothek.  | 
| funcname  | character(256) | Der Name der ausgeführten benutzerdefinierten Funktion. | 
| Knoten  | integer | Der Knoten, auf dem die Meldung generiert wurde. | 
| slice | integer | Der Slice, auf dem die Meldung generiert wurde. | 
| seq | integer | Die Sequenz der Meldung auf dem Slice. | 

## Beispielabfragen
<a name="SVL_UDF_LOG-sample-queries"></a>

Das folgende Beispiel zeigt, wie UDFs mit systemdefinierten Fehlern umgegangen wird. Der erste Block zeigt die Definition für eine benutzerdefinierte Funktion, die die Umkehrung eines Arguments ausgibt. Wenn Sie die Funktion ausgeben und 0 als Argument angeben, wie der zweite Block zeigt, gibt die Funktion einen Fehler aus. Die dritte Anweisung liest die in SVL\_UDF\_LOG protokollierte Fehlermeldung.

```
-- Create a function to find the inverse of a number

CREATE OR REPLACE FUNCTION  f_udf_inv(a int)
  RETURNS float IMMUTABLE
AS $$
   return 1/a
$$ LANGUAGE plpythonu;

-- Run the function with a 0 argument to create an error
Select f_udf_inv(0) from sales;

-- Query SVL_UDF_LOG to view the message

Select query, created, message::varchar
from svl_udf_log;

 query |          created           | message                             
-------+----------------------------+---------------------------------------------------------
  2211 | 2015-08-22 00:11:12.04819  | ZeroDivisionError: long division or modulo by zero\nNone
```

Das folgende Beispiel fügt der benutzerdefinierten Funktion Protokollierung und eine Warnmeldung hinzu, so dass eine Division durch Null zu einer Warnmeldung und nicht zum Anhalten mit einer Fehlermeldung führt. 

```
-- Create a function to find the inverse of a number and log a warning

CREATE OR REPLACE FUNCTION f_udf_inv_log(a int)
  RETURNS float IMMUTABLE
 AS $$ 
  import logging
  logger = logging.getLogger() #get root logger
  if a==0:
    logger.warning('You attempted to divide by zero.\nReturning zero instead of error.\n') 
    return 0
  else:
     return 1/a
$$ LANGUAGE plpythonu;
```

Das folgende Beispiel führt die Funktion aus und fragt dann SVL\_UDF\_LOG zur Anzeige der Meldung ab.

```
-- Run the function with a 0 argument to trigger the warning
Select f_udf_inv_log(0) from sales;

-- Query SVL_UDF_LOG to view the message

Select query, created, message::varchar
from svl_udf_log;

query |          created           | message                             
------+----------------------------+----------------------------------
    0 | 2015-08-22 00:11:12.04819  | You attempted to divide by zero. 
                                     Returning zero instead of error.
```