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 champparent_span_id
n’existe pas dans la colonne RECORD de la table d’événements. Les fournisseurs et les consommateurs de Native apps voient destrace_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
etparent_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 deparent_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, lestrace_id
des spans de l’enfant seront aléatoires et n’auront pas deparent_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