Émettre des événements de trace dans Snowflake Scripting

Vous pouvez utiliser les fonctions SYSTEM Snowflake pour émettre des événements de trace à partir d’une fonction ou d’un gestionnaire de procédure écrit dans Exécution de scripts Snowflake.

Avant d’émettre des événements de trace, assurez-vous que le niveau de trace est défini de manière à ce que les données souhaitées soient stockées dans la table des événements. Pour plus d’informations, voir Définition des niveaux de journalisation, des métriques et du traçage.

Note

Avant de commencer à émettre des événements de trace, vous devez mettre en place une table d’événements. Pour plus d’informations, voir Aperçu de la table d’événements.

Vous pouvez accéder aux données de trace stockées en exécutant une commande SELECT sur la table des événements. Pour plus d’informations, voir Affichage des données de trace.

Pour des informations générales sur la configuration de la journalisation et la récupération des messages dans Snowflake, voir Événements de trace pour les fonctions et les procédures.

Note

Pour les lignes directrices à garder à l’esprit lors de l’ajout d’événements de trace, voir Lignes directrices générales pour l’ajout d’événements de trace.

Ajout d’événements de trace

Vous pouvez ajouter des événements de trace en appelant la fonction SYSTEM$ADD_EVENT (pour Exécution de scripts Snowflake) et en indiquant le nom de l’événement. Il est également possible d’associer des attributs (paires clé-valeur) à un événement.

Le code de l’exemple suivant ajoute deux événements, SProcEmptyEvent et SProcEventWithAttributes. Avec SProcEventWithAttributes, le code ajoute également deux attributs : key1 et key2.

SYSTEM$ADD_EVENT('SProcEmptyEvent');
SYSTEM$ADD_EVENT('SProcEventWithAttributes', {'key1': 'value1', 'key2': 'value2'});
Copy

L’ajout de ces événements donne lieu à deux lignes dans la table des événements, chacune avec une valeur différente dans la colonne RECORD :

{
  "name": "SProcEmptyEvent"
}
Copy
{
  "name": "SProcEventWithAttributes"
}
Copy

La ligne d’événement SProcEventWithAttributes comprend les attributs suivants dans la colonne RECORD_ATTRIBUTES de la ligne :

{
  "key1": "value1",
  "key2": "value2"
}
Copy

Ajout d’attributs de span

Vous pouvez définir des attributs (paires clé-valeur) associés aux spans en appelant la fonction SYSTEM$SET_SPAN_ATTRIBUTES.

Pour plus de détails sur les spans, voir Comment Snowflake représente les événements de trace.

La fonction SYSTEM$SET_SPAN_ATTRIBUTES (pour Exécution de scripts Snowflake) est disponible sous la forme suivante :

SYSTEM$SET_SPAN_ATTRIBUTES(<object>);
Copy

où :

  • object est un objet Exécution de scripts Snowflake avec des paires clé-valeur qui spécifie les attributs de cet événement de trace.

Le code de l’exemple suivant crée quatre attributs et définit leurs valeurs :

SYSTEM$SET_SPAN_ATTRIBUTES('{'attr1':'value1', 'attr2':true}');
Copy

La définition de ces attributs se traduit par les éléments suivants dans la colonne RECORD_ATTRIBUTES de la table des événements :

{
  "attr1": "value1",
  "attr2": "value2"
}
Copy

Exemples

Le code de l’exemple suivant utilise la fonction SYSTEM$ADD_EVENT pour ajouter un événement nommé name_a et un événement nommé name_b. Avec name_b, il associe deux attributs, score et pass. Le code utilise également SYSTEM$SET_SPAN_ATTRIBUTES pour définir deux attributs pour le span, key1 et key2.

CREATE OR REPLACE PROCEDURE pi_proc()
  RETURNS DOUBLE
  LANGUAGE SQL
  AS $$
  BEGIN
    -- Add an event without attributes
    SYSTEM$ADD_EVENT('name_a');

    -- Add an event with attributes
    LET attr := {'score': 89, 'pass': TRUE};
    SYSTEM$ADD_EVENT('name_b', attr);

    -- Set attributes for the span
    SYSTEM$SET_SPAN_ATTRIBUTES({'key1': 'value1', 'key2': TRUE});

    RETURN 3.14;
  END;
  $$;
Copy
CALL pi_proc();
Copy