Python Snowpark Stored Procedures 和 UDFs:事件表中的跟踪改进¶
现在,用户可以看到当 Python 存储过程调用另一个 Python 存储过程或 Python UDF 时,链式调用的查询是如何关联的。要使用此功能,必须配置事件表并启用跟踪。事件表的 TRACE:"trace_id"
和 RECORD:"parent_span_id"
列中显示的值如下:
- 变更前:
链式 Python 存储过程或 UDFs 创建的每个 Span 的
trace_id
都是唯一的。事件表的 RECORD 列中不存在parent_span_id
字段。本地应用程序提供商和使用者看到的共享事件的trace_ids
不同。提供商看到可以看到经过哈希处理的版本。- 变更后:
由链式 Python 存储过程生成的 Span,或具有相同
trace_id
的 UDFs。由链式 Python 存储过程生成的 Span,或者在
span_id
和parent_span_id
之间存在父子关系的 UDFs。Python 存储过程可以调用任意长度的链中的其他存储过程,但是 UDFs 不能执行 SQL 语句,因此调用 UDF 会结束链。但是,跟踪信息仍会传播到 UDF 的 span。如果用户直接调用 Python 存储过程或 UDF(根),那么
trace_id
将是随机的 ID,而且不会有parent_span_id
。如果对存储过程禁用了跟踪,并且它调用了另一个存储过程或 UDF,则子级 span 的trace_id
将是随机的,并且不会有parent_span_id
。换言之,将在子级重新启动跟踪。本地应用程序提供商和使用者看到的共享 Python 存储过程或 UDF 事件的
trace_id
相同,因此可以更轻松地进行调试。
共享包含调用其他 Python 存储过程或 UDFs 的 Python 存储过程的应用程序的本地应用程序提供商向使用者公开存储过程的调用栈和父子关系。要避免这种情况,请禁用跟踪。
参考:1520