Python Snowpark Stored Procedures 和 UDFs:事件表中的跟踪改进

注意

此行为变更在 2024_02 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

现在,用户可以看到当 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_idparent_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

语言: 中文