Gespeicherte Snowpark-Prozeduren und UDFs in Python: Verbesserte Ablaufverfolgung in der Ereignistabelle (Ausstehend)¶
Achtung
Diese Verhaltensänderung ist in Bundle 2024_02 enthalten.
Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.
Benutzer können nun ermitteln, wie Abfragen aus verketteten Aufrufen verknüpft sind, wenn eine gespeicherte Python-Prozedur eine andere gespeicherte Python-Prozedur aufruft oder eine gespeicherte Python-Prozedur eine Python-UDF aufruft. Um diese Möglichkeit nutzen zu können, muss eine Ereignistabelle konfiguriert und die Ablaufverfolgung aktiviert sein. Die in den Spalten TRACE:"trace_id"
und RECORD:"parent_span_id"
der Ereignistabelle angezeigten Werte lauten wie folgt:
- Vor der Änderung:
Der
trace_id
-Wert jeder der durch verkettete gespeicherte Python-Prozeduren oder Python-UDFs erstellten Bereiche (Spans) ist eindeutig. Das Feldparent_span_id
ist nicht in der RECORD-Spalte der Ereignistabelle vorhanden. Anbietern und Verbrauchern von Native Apps werden unterschiedlichetrace_ids
-Werte für freigegeben Ereignisse angezeigt. Anbietern wird die Hash-Version angezeigt.- Nach der Änderung:
Bereiche (Spans), die durch verkettete gespeicherte Python-Prozeduren oder Python-UDFs generiert werden, haben denselben
trace_id
-Wert.Bereiche (Spans), die durch verkettete gespeicherte Python-Prozeduren oder Python-UDFs generiert werden, haben eine Übergeordnet/Untergeordnet-Beziehung zwischen
span_id
undparent_span_id
. Gespeicherte Python-Prozeduren können andere gespeicherte Prozeduren in einer beliebig langen Kette aufrufen, aber UDFs können keine SQL-Anweisungen ausführen, sodass der Aufruf einer UDF die Kette beendet. Die Ablaufverfolgungsinformationen werden jedoch weiterhin an den Bereich (Span) der UDF weitergegeben.Wenn die gespeicherte Python-Prozedur oder die Python-UDF direkt vom Benutzer (dem Stamm) aufgerufen wurde, ist der
trace_id
-Wert eine zufällige ID und es gibt keinenparent_span_id
-Wert. Wenn die Ablaufverfolgung für eine gespeicherte Prozedur deaktiviert ist und diese eine andere gespeicherte Prozedur oder UDF aufruft, dann ist dertrace_id
-Wert der untergeordneten Bereiche (Spans) zufällig und es gibt keinenparent_span_id
-Wert. Mit anderen Worten: Die Ablaufverfolgung wird beim untergeordneten Element neu gestartet.Anbietern und Verbrauchern von Native Apps wird derselbe
trace_id
-Wert für freigegebene Ereignisse von gespeicherten Python-Prozeduren oder Python-UDF angezeigt, sodass sie leichter zu debuggen sind.
Anbieter von Native Apps, die Anwendungen freigeben, die gespeicherte Python-Prozeduren enthalten, die wiederum andere gespeicherte Python-Prozeduren oder Python-UDFs aufrufen, legen dem Verbraucher somit den Aufruf-Stack und die Übergeordnet/Untergeordnet-Beziehungen der gespeicherten Prozeduren offen. Um dies zu vermeiden, deaktivieren Sie die Ablaufverfolgung.
Ref.: 1520