Procédures stockées Python Snowpark et UDFs : amélioration du traçage dans la table d’événements (en attente)

Attention

Ce changement de comportement est présent dans le bundle 2024_02.

Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.

Les utilisateurs peuvent désormais voir comment les requêtes issues d’appels chaînés sont liées lorsqu’une procédure stockée Python appelle une autre procédure stockée Python ou qu’une procédure stockée Python appelle une UDF Python. Pour utiliser cette fonctionnalité, une table d’événements doit être configurée et le traçage doit être activé. Les valeurs affichées dans les colonnes TRACE:"trace_id" et RECORD:"parent_span_id" de la table d’événements sont les suivantes :

Avant la modification:

Le trace_id de chacun des spans créés par des procédures stockées Python chaînées ou des UDFs est unique. Le champ parent_span_id n’existe pas dans la colonne RECORD de la table d’événements. Les fournisseurs et les consommateurs de Native apps voient des trace_ids différents pour les événements partagés. Le fournisseur voit la version hachée.

Après la modification:

Les portées générées par des procédures stockées Python enchaînées ou UDFs ont le même trace_id.

Les spans générés par les procédures stockées Python chaînées ou les UDFs ont une relation parent-enfant avec span_id et parent_span_id. Les procédures stockées Python peuvent appeler d’autres procédures stockées dans une chaîne de n’importe quelle longueur, mais les UDFs ne peuvent pas exécuter les instructions SQL, de sorte que l’appel à une UDF met fin à la chaîne. Cependant, les informations de trace sont toujours propagées aux spans de l’UDF.

Si la procédure stockée Python ou l’UDF a été appelée par l’utilisateur directement (la racine), alors le trace_id sera un ID aléatoire et il n’y aura pas de parent_span_id. Si le traçage est désactivé pour une procédure stockée et qu’il appelle une autre procédure stockée ou une UDF, les trace_id des spans de l’enfant seront aléatoires et n’auront pas de parent_span_id. En d’autres termes, la trace est redémarrée au niveau de l’enfant.

Les fournisseurs et les consommateurs de Native apps voient le même trace_id pour les procédures stockées Python partagées ou les événements UDF, ce qui permet de les déboguer plus facilement.

Les fournisseurs de Native apps qui partagent des applications contenant des procédures stockées Python qui appellent d’autres procédures stockées Python ou des UDFs exposent la pile d’appels et les relations parent-enfant des procédures stockées au consommateur. Pour éviter cela, désactivez le traçage.

Réf : 1520