Procedimentos armazenados do Python Snowpark e UDFs: melhorias de rastreamento na tabela de eventos (pendente)

Atenção

Essa mudança de comportamento está no pacote 2024_02.

Para saber o status atual do pacote, consulte Histórico do pacote.

Os usuários agora podem ver como as consultas de chamadas encadeadas são vinculadas quando um procedimento armazenado do Python chama outro procedimento armazenado do Python ou um procedimento armazenado do Python chama uma UDF do Python. Para usar esse recurso, uma tabela de eventos deve ser configurada e o rastreamento deve estar ativado. Os valores exibidos nas colunas TRACE:"trace_id" e RECORD:"parent_span_id" da tabela de eventos são os seguintes:

Antes da mudança:

O trace_id de cada um dos intervalos criados por procedimentos armazenados Python encadeados ou UDFs é exclusivo. O campo parent_span_id não existe na coluna RECORD da tabela de eventos. Provedores e consumidores de Native Apps veem trace_ids diferentes para eventos compartilhados. O provedor vê a versão com hash.

Após a mudança:

Os spans gerados por procedimentos armazenados Python encadeados ou UDFs têm o mesmo trace_id.

Os spans gerados por procedimentos armazenados Python encadeados ou UDFs têm um relacionamento pai-filho entre span_id e parent_span_id. Os procedimentos armazenados do Python podem chamar outros procedimentos armazenados em uma cadeia de qualquer comprimento, mas as UDFs não podem executar instruções SQL, portanto, chamar uma UDF encerra a cadeia. No entanto, as informações de rastreamento ainda são propagadas para os spans da UDF.

Se o procedimento armazenado Python ou UDF foi chamado diretamente pelo usuário (a raiz), então trace_id será um ID aleatório e não haverá parent_span_id. Se o rastreamento estiver desabilitado para um procedimento armazenado e chamar outro procedimento armazenado ou UDF, então o trace_id dos intervalos do filho será aleatório e não terá parent_span_id. Em outras palavras, o rastreamento é reiniciado no filho.

Provedores e consumidores de Native Apps veem o mesmo trace_id para procedimentos armazenados Python compartilhados ou eventos da UDF, para que possam ser depurados com mais facilidade.

Provedores de Native Apps que compartilham aplicativos contendo procedimentos armazenados do Python que chamam outros procedimentos armazenados do Python ou UDFs expõem a pilha de chamadas e os relacionamentos pai-filho dos procedimentos armazenados ao consumidor. Para evitar isso, desative o rastreamento.

Ref: 1520