Colonnes de table d’événements

Un tableau des événements est un type spécial de table de base de données avec un ensemble prédéfini de colonnes. La structure de la table est conçue pour prendre en charge le modèle de données pour OpenTelemetry, un framework de gestion des données de télémétrie.

Pour plus d’informations sur l’utilisation des tables d’événements, voir Utilisation des tables d’événements.

Colonnes de table d’événements

Les tables d’événements comportent les colonnes suivantes :

Colonne

Type de données

Description

TIMESTAMP

TIMESTAMP_NTZ

L’horodatage UTC de la création d’un événement. Pour les événements représentant une période de temps, il s’agit de la fin de la période de temps.

START_TIMESTAMP

TIMESTAMP_NTZ

Pour les événements représentant un intervalle de temps, tels que les événements de trace, le début de l’intervalle de temps sous la forme d’un horodatage UTC.

OBSERVED_TIMESTAMP

TIMESTAMP_NTZ

Un horaire UTC utilisé pour les journaux. Actuellement la même valeur que pour TIMESTAMP.

TRACE

OBJECT

Contexte de traçage pour tous les types de signaux. Contient les valeurs de chaîne trace_id et span_id.

RESOURCE

OBJECT

Réservé pour une utilisation future.

RESOURCE_ATTRIBUTES

OBJECT

Attributs qui identifient la source d’un événement, telle que la base de données, le schéma, l’utilisateur, l’entrepôt, etc.

SCOPE

OBJECT

Champs d’application pour les événements. Par exemple, les noms de classe pour les journaux.

SCOPE_ATTRIBUTES

OBJECT

Réservé pour une utilisation future.

RECORD_TYPE

STRING

Le type d’événement. Un des éléments suivants :

  • LOG pour un message de journal.

  • SPAN pour les invocations de fonctions définies par l’utilisateur effectuées séquentiellement sur le même fil. Pour plus d’informations, voir Colonne RECORD_TYPE.

  • SPAN_EVENT pour un seul événement de trace. Une même requête peut émettre plus d’un SPAN_EVENT.

RECORD

OBJECT

Valeurs fixes pour chaque type d’enregistrement, comme décrit dans Colonne RECORD.

RECORD_ATTRIBUTES

OBJECT

Attributs de variables pour chaque type d’enregistrement, tels que décrits dans Colonne RECORD_ATTRIBUTES.

VALUE

VARIANT

Valeur de l’événement primaire.

EXEMPLARS

ARRAY

Réservé pour une utilisation future.

Données capturées par type d’événement

Données pour les journaux

Attribut

Description

OBSERVED_TIMESTAMP

Actuellement la même valeur que pour TIMESTAMP.

RECORD

Le niveau de gravité enregistré par l’événement du journal.

RECORD_ATTRIBUTES

L’emplacement dans le code à partir duquel l’événement a été émis. Les valeurs varient selon le langage, mais peuvent inclure le chemin d’accès au fichier de code, le nom de la fonction, le numéro de ligne, etc.

RECORD_TYPE

Le type d’événement : LOG pour un message de journal

RESOURCE_ATTRIBUTES

Attributs qui identifient la source de l’événement, telle que la base de données, le schéma, l’utilisateur, l’entrepôt, etc.

SCOPE

Champ d’application dans lequel l’événement s’est produit, tel que le nom de la classe dans laquelle l’événement a été créé.

TIMESTAMP

L’heure à laquelle l’événement a été créé.

VALUE

Le message du journal.

Données pour les mesures

Note

La collecte de données métriques est une fonctionnalité disponible en avant-première pour tous les comptes.

Attribut

Description

RECORD

Pour un événement métrique, un objet qui inclut le nom et l’unité de la métrique.

RECORD_TYPE

Le type d’événement : METRIC pour un point de données métrique.

RESOURCE_ATTRIBUTES

Attributs qui identifient la source de l’événement, telle que la base de données, le schéma, l’utilisateur ou l’entrepôt.

START_TIMESTAMP

Lorsque la valeur de la colonne RECORD metric_type est sum, c’est le moment où la métrique a été collectée. Non utilisé lorsque la valeur metric_type est gauge.

TIMESTAMP

L’heure à laquelle l’événement a été créé.

VALUE

La valeur numérique de la métrique.

Données pour les événements de trace

Attribut

Description

RECORD

Pour un span, un objet qui inclut le nom et le type du span ; pour un événement de span, l’objet inclut le nom du span.

RECORD_ATTRIBUTES

Données d’attribut associées à un span ou un événement de span.

RECORD_TYPE

Le type d’événement : SPAN pour un span, SPAN_EVENT pour un événement de span.

RESOURCE_ATTRIBUTES

Attributs qui identifient la source de l’événement, telle que la base de données, le schéma, l’utilisateur, l’entrepôt, etc.

START_TIMESTAMP

Pour un span, l’heure à laquelle le span a commencé. Non utilisé pour un événement de span.

TIMESTAMP

L’heure à laquelle l’événement a été créé.

TRACE

Identifie trace_id et span_id pour un span et les événements du span qu’il contient.

Colonne EXEMPLARS

Réservé pour une utilisation future.

Colonne OBSERVED_TIMESTAMP

L’horodatage UTC d’un journal. Non utilisé pour les événements de trace.

Colonne RECORD

Fournit des informations essentielles sur l’événement, notamment le niveau d’enregistrement pour un événement d’enregistrement, ou le nom de l’événement de trace (plage ou enregistrement d’événement de span).

Les attributs éventuels de l’enregistrement sont enregistrés dans la colonne RECORD_ATTRIBUTES.

Les valeurs contenues dans cette colonne varieront en fonction de la valeur de la colonne RECORD_TYPE (LOG, SPAN ou SPAN_EVENT), comme décrit dans les sections suivantes.

Pour LOG RECORD_TYPE

Lorsque la valeur de la colonne RECORD_TYPE est LOG, la valeur de la colonne RECORD contient la gravité du message. La valeur de la colonne peut contenir les clés suivantes :

Clé

Type

Description

severity_text

STRING

Le texte de la gravité du journal. Un des éléments suivants :

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

  • FATAL

Lorsque l’entrée du journal concerne une exception non gérée, cette valeur correspond au niveau d’erreur le plus grave pour le runtime du langage actuel. Par exemple, pour du code écrit en Python, la valeur est FATAL.

Exemple

{
  "severity_text": "INFO"
}
Copy

Pour METRIC RECORD_TYPE

Note

La collecte de données métriques est une fonctionnalité disponible en avant-première pour tous les comptes.

Les métriques sont de type CPU et les données mémoire générées par Snowflake. Vous pouvez utiliser ces données pour analyser la consommation des ressources.

Le langage du gestionnaire d’exécution et son environnement impactent considérablement la signification des données métriques. Voir Émission de données de métriques à partir du code du gestionnaire pour plus d’informations.

Clé

Type

Description

metric.name

chaîne

Le nom de la métrique enregistrée par la ligne. Un des éléments suivants :

  • process.memory.usage : quantité de mémoire, en octets, consommée pendant l’exécution.

  • process.cpu.utilization : utilisation du CPU. Mesuré différemment en fonction de la langue du gestionnaire.

Pour plus d’informations, voir Émission de données de métriques à partir du code du gestionnaire.

metric.unit

chaîne

Les unités de la métrique ; par exemple, bytes.

metric_type

chaîne

Le type de point métrique OpenTelemetry des données métriques ; par exemple, sum ou gauge.

value_type

chaîne

Le type de données de la valeur dans la colonne VALUE ; par exemple, DOUBLE ou INT.

Exemple

{
  "metric": {
    "name": "process.memory.usage",
    "unit": "bytes"
  },
  "metric_type": "sum",
  "value_type": "INT"
}
Copy

Pour SPAN RECORD_TYPE

Les spans représentent des exécutions individuelles de fonctions et de procédures. Pour les procédures stockées, il n’y aura qu’un seul span. Pour les fonctions définies par l’utilisateur, il peut y avoir plusieurs spans pour un seul appel de fonction, selon la manière dont Snowflake décide de planifier l’exécution.

Tous les spans d’une requête donnée ont la même valeur pour la clé trace_id de la colonne TRACE.

La durée d’un span est la différence entre les valeurs des colonnes start_timestamp et timestamp, qui indiquent respectivement le début et la fin de l’exécution du span.

Les ID du span et de la trace de la requête sont représentés dans la valeur de la colonne TRACE.

Snowflake créera un span pour chaque exécution avec les clés indiquées ci-dessous :

Clé

Type

Description

dropped_attributes_count

int

Le nombre d’attributs ignorés après que le maximum enregistré a été atteint.

name

chaîne

Lorsque le gestionnaire de l’exécutable est écrit en Python, cela identifie le gestionnaire de la fonction ou de la procédure qui a émis les données. Cela varie selon le type d’exécutable, comme suit :

  • Procédure : nom de la fonction du gestionnaire

  • Fonction définie par l’utilisateur (UDF) : nom de la fonction du gestionnaire

  • Fonction de table définie par l’utilisateur (UDTF) : nom de la classe du gestionnaire

  • Code client : nom de l’API côté client qui a commencé le span.

Lorsque le gestionnaire de l’exécutable est écrit dans un langage autre que Python, il s’agit d’une valeur fixe telle que snow.auto_instrumented.

kind

chaîne

Valeur fixe SPAN_KIND_INTERNAL

parent_span_id

Chaîne hexagonale

Identifie le span de la procédure ou l’UDF à partir de laquelle la trace actuelle est passée. Lorsque cette valeur est présente, cela signifie que la procédure en cours ou l’appel de l’UDF a été effectué par une autre procédure dans une relation de chaîne d’appel. La valeur span_id de cette procédure « parent » est la même que parent_span_id.

snow.process.memory.usage.max

chaîne

En option. Lorsqu’elle est présente, spécifie la quantité maximale de mémoire, en octets, utilisée pendant l’exécution de ce span.

status

chaîne

STATUS_CODE_ERROR lorsque le span correspond à une exception non gérée. Sinon, STATUS_CODE_UNSET.

Dans le cas de fonctions définies par l’utilisateur, Snowflake peut ajouter des attributs pour les spans afin d’indiquer le nombre de lignes traitées et émises par la fonction.

Pour SPAN_EVENT RECORD_TYPE

Les événements de span sont des enregistrements d’événements attachés à une exécution de span particulière, décrite ci-dessus. Vous pouvez créer des événements pour répondre aux besoins de votre application. Le nombre d’événements de span est limité à 128.

La valeur de la colonne TRACE identifie la période de temps au cours de laquelle l’événement a été créé.

Les événements de span ont une clé unique, name, et peuvent avoir des attributs arbitraires ajoutés dans la colonne RECORD_ATTRIBUTES.

Clé

Type

Description

name

chaîne

Nom de l’événement de span.

Colonne RECORD_ATTRIBUTES

Décrit l’événement avec des métadonnées définies par Snowflake ou par du code. La valeur varie en fonction du type d’enregistrement que la ligne contient, comme décrit dans les sections suivantes.

Pour LOG RECORD_TYPE

L’emplacement dans le code à partir duquel l’événement a été émis, y compris le chemin d’accès au fichier de code, le nom de la fonction, le numéro de ligne, etc.

En plus des attributs répertoriés ci-dessous, vous pouvez ajouter vos propres attributs à inclure dans la valeur RECORD_ATTRIBUTES.

Attribut

Type

Description

code.filepath

int

Le fichier contenant le code qui a généré le message.

code.function

chaîne

Le nom de la fonction qui a généré le message.

code.lineno

int

Le numéro de ligne du code qui a généré le message.

code.namespace

int

L’espace de noms du code qui a généré les messages.

exception.message

chaîne

Le message d’erreur d’une exception non gérée.

exception.type

chaîne

Le nom de la classe pour une exception non gérée.

exception.stacktrace

chaîne

Trace de pile d’une exception non gérée formatée par un runtime du langage.

exception.escaped

booléen

true si cette entrée provient d’une exception non gérée.

thread.id

int

Fil sur lequel l’événement de journal a été créé.

thread.name

chaîne

Fil sur lequel l’événement de journal a été créé.

Exemple

Dans l’exemple suivant, tous les attributs ont été ajoutés par Snowflake sauf employee.id, qui a été ajouté par un attribut personnalisé.

{
  "code.filepath": "main.scala",
  "code.function": "$anonfun$new$10",
  "code.lineno": 149,
  "code.namespace": "main.main$",
  "thread.id": 1,
  "thread.name": "main"
  "employee.id": "52307953446424"
}
Copy

Pour SPAN RECORD_TYPE

Attributs attribués, le cas échéant, au span lors de son enregistrement. Les noms et les valeurs des attributs sont définis par du code ou par Snowflake.

La table suivante énumère les attributs qui peuvent être définis par Snowflake.

Attribut

Type

Description

snow.input.rows

int

Le nombre de lignes d’entrée traitées par le span de la fonction.

snow.output.rows

int

Le nombre de lignes de sortie traitées correctement par le span de la fonction.

Exemple

Le code de l’exemple suivant inclut les attributs définis par Snowflake.

{
  "snow.input.rows": 12
  "snow.output.rows": 12
}
Copy

Exemple

Le code de l’exemple suivant inclut les attributs définis par le code du gestionnaire.

{
  "MyFunctionVersion": "1.1.0"
}
Copy

Pour SPAN_EVENT RECORD_TYPE

Attributs éventuellement attribués à l’événement de span lors de son enregistrement. Les noms et les valeurs des attributs peuvent être définis par Snowflake ou par un code utilisateur.

Exemple

Le code de l’exemple suivant inclut les attributs définis par le code du gestionnaire.

{
  "mykey1": "value1",
  "mykey2": "value2"
}
Copy

Colonne RECORD_TYPE

Spécifie le type d’enregistrement décrit par la ligne de la table d’événements. La valeur de cette colonne indique lequel des trois types d’enregistrements pour lequel une table d’événements peut contenir des données.

La colonne RECORD contient les données de cet enregistrement. La colonne RECORD_ATTRIBUTES contient les métadonnées de cet enregistrement, le cas échéant.

La table suivante énumère les valeurs possibles pour cette colonne.

Valeur de colonne

Description

LOG

La ligne représente une entrée de journal générée par le code du gestionnaire.

SPAN

La ligne représente un span.

Pour une procédure stockée, il n’y aura qu’un seul span. Pour une fonction définie par l’utilisateur, qui peut être parallélisée, il y aura un span pour chaque thread sur lequel la fonction s’exécute. Le nombre de threads varie en fonction de plusieurs facteurs, notamment la taille de l’entrepôt Snowflake dans lequel la fonction s’exécute.

Un span peut contenir plusieurs événements de span. Pour plus d’informations, voir Données enregistrées sur le span.

SPAN_EVENT

La ligne représente un événement de span. Il peut y avoir plusieurs enregistrements d’événements de span attachés à un span particulier. Le code de votre gestionnaire peut créer des événements en fonction de vos besoins. Le nombre d’événements de span est limité à 128.

METRIC [1]

La ligne représente une observation d’une métrique. Plusieurs observations de plusieurs métriques peuvent être associées à un span particulier.

Colonne RESOURCE

Réservé pour une utilisation future.

Colonne RESOURCE_ATTRIBUTES

Décrit la source d’un événement en termes d’objets Snowflake.

Les attributs qui composent la valeur de cette colonne sont définis par Snowflake et ne peuvent pas être modifiés.

Attributs de ressources pour la source d’événement

Nom d’attribut

Type d’attribut

Description

Exemple

snow.database.id

int

L’identificateur interne/généré par le système de la base de données contenant l’exécutable.

12345

snow.database.name

chaîne

Nom de la base de données contenant l’exécutable.

MY_DATABASE

snow.executable.id

int

L’identificateur interne ou généré par le système de l’exécutable (procédure, fonction, SnowService, etc.) qui génère l’événement.

12345

snow.executable.name

chaîne

Le nom de l’exécutable qui génère l’événement. Il peut s’agir, par exemple, du nom de la procédure, de la fonction ou de l’application Streamlit.

MY_UDF

snow.executable.runtime.version

chaîne

La version d’exécution du langage exécutable. Il s’agira d’une valeur spécifique à la langue, comme décrit ci-dessous :

  • Java : 11 ou 17

  • JavaScript : aucune valeur

  • Python : de 3.9 à 3.12

  • Scala : 2.12

  • SQL : aucune valeur

procedure

snow.executable.type

chaîne

Un des éléments suivants :

  • procedure pour la procédure stockée

  • function pour une fonction définie par l’utilisateur

  • sql pour un événement provenant d’une seule requête, telle qu’un bloc de script Snowflake.

  • SnowparkContainers pour un service Snowpark Container Services.

  • streamlit pour une application Streamlit

procedure

snow.owner.id

int

L’identificateur interne/généré par le système du rôle ayant le privilège OWNERSHIP pour l’exécutable.

1234

snow.owner.name

chaîne

Le nom du rôle ayant le privilège OWNERSHIP pour l’exécutable.

UDF_OWNER_RL

snow.schema.id

int

L’identificateur interne/généré par le système du schéma contenant l’exécutable.

12345

snow.schema.name

chaîne

Nom du schéma contenant l’exécutable.

MY_SCHEMA

telemetry.sdk.language

chaîne

Langue de la ressource/SDK. Snowflake utilise java, scala, python, javascript et sql.

java

Attributs de ressources pour l’environnement d’exécution

Attribut

Type

Description

Exemples

db.user

chaîne

Pour une fonction ou une procédure, le nom de l’utilisateur qui exécute la fonction ou la procédure. Pour une application Streamlit, le nom de l’utilisateur qui consultait l’application pour un événement donné.

MY_USER_NAME

snow.query.id

chaîne

ID de la requête.

01a6aeb7-0604-c466-0000-097127d13812

snow.release.version

chaîne

La version de Snowflake en cours d’exécution au moment où l’événement a été généré

7.9.0

snow.session.id

int

L’ID de la session qui exécute l’exécutable.

10

snow.session.role.primary.id

int

L’identificateur interne/généré par le système du rôle principal dans la session.

10

snow.session.role.primary.name

chaîne

Le nom du rôle principal dans la session.

MY_ROLE

snow.user.id

int

L’identificateur interne ou généré par le système de l’utilisateur qui exécute la requête.

1234

snow.warehouse.id

int

Identificateur interne ou généré par le système de l’entrepôt qui exécute la requête à l’origine de l’événement.

12345

snow.warehouse.name

chaîne

Le nom de l’entrepôt qui exécute la requête générant l’événement.

MY_WAREHOUSE

Attributs de ressources pour les applications

Attribut

Type

Description

Exemples

snow.application.consumer.name

chaîne

Pour une Snowflake Native App, le nom du compte du consommateur.

CONSUMER_NAME

snow.application.consumer.organization

chaîne

Pour une Snowflake Native App, le nom de l’organisation du consommateur.

CONSUMER_ORG_NAME

snow.application.id

chaîne

Pour une Snowflake Native App, l’identificateur interne/généré par le système de l’application.

ABCZN3J3

snow.application.name

chaîne

Pour une Snowflake Native App, le nom de l’application.

MY_INSTALLED_APP_NAME

snow.application.package.name

chaîne

Pour une Snowflake Native App, le nom du paquet d’application.

MY_INSTALLED_PACKAGE_NAME

snow.listing.global_name

chaîne

Pour une Snowflake Native App, l’identificateur interne/généré par le système de l’annonce.

GZYZN3J3

snow.listing.name

chaîne

Pour une Snowflake Native App, le nom de l’annonce.

MY_LISTING_NAME

Attributs de ressources pour la version de Snowflake

Attribut

Type

Description

Exemples

service.version

chaîne

La version de l’exécutable, le cas échéant. La combinaison de snow.version et snow.patch reliés par un point là où ils existent. Attribut standard OpenTelemetry.

2.3.1

snow.patch

chaîne

Le niveau de correctif de l’exécutable en cours d’exécution.

1

snow.version

chaîne

La version de l’exécutable en cours d’exécution.

2.3

Exemple

{
  "db.user": "MYUSERNAME",
  "snow.database.id": 13,
  "snow.database.name": "MY_DB",
  "snow.executable.id": 197,
  "snow.executable.name": "FUNCTION_NAME(I NUMBER):ARG_NAME(38,0)",
  "snow.executable.type": "FUNCTION",
  "snow.owner.id": 2,
  "snow.owner.name": "MY_ROLE",
  "snow.query.id": "01ab0f07-0000-15c8-0000-0129000592c2",
  "snow.schema.id": 16,
  "snow.schema.name": "PUBLIC",
  "snow.session.id": 1275605667850,
  "snow.session.role.primary.id": 2,
  "snow.session.role.primary.name": "MY_ROLE",
  "snow.user.id": 25,
  "snow.warehouse.id": 5,
  "snow.warehouse.name": "MYWH",
  "telemetry.sdk.language": "python"
}
Copy

Colonne SCOPE

Pour les événements de journal, l’espace de noms du code qui a émis l’événement, tel que le nom de la classe créant une entrée de journal. Cette fonction n’est pas utilisée pour les événements de trace.

Le tableau suivant énumère les attributs qui peuvent être inclus dans cette colonne.

Valeur du champ d’application

Attribut

Type

Description

Exemples

name

Chaîne

Espace de noms du code qui émet l’événement.

com.sample.MyClass

Exemple

{
  "name": "com.sample.MyClass"
}
Copy

Colonne SCOPE_ATTRIBUTES

Réservé pour une utilisation future.

Colonne START_TIMESTAMP

L’heure à laquelle un span a commencé sous la forme d’un horodatage UTC.

Valeur de colonne RECORD_TYPE

Description de la valeur de START_TIMESTAMP

LOG

Non utilisé.

SPAN

L’heure à laquelle le span a commencé.

SPAN_EVENT

Non utilisé.

METRIC [2]

Lorsque la valeur de la colonne RECORD metric_type est sum, c’est le moment où la métrique a été collectée. Non utilisé lorsque la valeur metric_type est gauge.

Colonne TIMESTAMP

Heure à laquelle un événement a été émis. La signification de la valeur varie en fonction du type d’enregistrement que la ligne représente, comme indiqué dans le tableau suivant :

Valeur de colonne RECORD_TYPE

Description de la valeur de TIMESTAMP

LOG

L’heure à laquelle l’événement a été émis.

SPAN

Heure à laquelle l’exécution s’est terminée.

SPAN_EVENT

L’heure à laquelle l’événement a été émis.

Colonne TRACE

Identificateurs uniques représentant l’exécution des fonctions et des procédures.

Valeur de colonne RECORD_TYPE

Description de la valeur de TRACE

LOG

Non utilisé.

SPAN

trace_id et span_id

SPAN_EVENT

trace_id et span_id

Valeur de trace

Le tableau suivant énumère les attributs qui peuvent être inclus dans cette colonne.

Attribut

Type

Description

Exemples

span_id

Chaîne hexagonale

Un identificateur unique lié au modèle de threading. Les procédures, qui sont monothread, ont une seule valeur span_id. Les fonctions, qui peuvent être exécutées par Snowflake sur plusieurs threads (par exemple, pour plusieurs lignes), peuvent avoir plusieurs valeurs span_id.

Lorsque le span actuel provient d’une procédure qui a appelé une autre procédure ou une UDF dans la trace, cette valeur span_id est la même que la valeur de la colonne RECORD parent_span_id de l’intervalle pour la procédure ou l’UDF appelée.

b4c28078330873a2

trace_id

Chaîne hexagonale

Identificateur unique pour les appels effectués à partir d’une requête. Lorsqu’une procédure stockée n’est pas appelée dans une chaîne d’appels, chaque appel a sa propre valeur trace_id. Au sein d’une requête, les appels à toutes les fonctions effectuées à partir du partage de la requête partageront la même valeur trace_id.

Lorsqu’une procédure est appelée par une autre procédure ou UDF dans une chaîne d’appel, elle a la même valeur trace_id que d’autres procédures et UDFs dans la chaîne.

Cette valeur est unique pour chaque requête et sera la même pour tous les spans d’une requête. Vous pouvez l’utiliser pour regrouper des événements au sein d’une même exécution de requête.

6992e9febf0b97f45b34a62e54936adb

Exemple

Le code de l’exemple suivant montre les attributs qui seraient présents pour un span ou un événement de span.

{
  "span_id": "b4c28078330873a2",
  "trace_id": "6992e9febf0b97f45b34a62e54936adb"
}
Copy

Colonne VALUE

  • Pour les événements du journal, il s’agit généralement du message du journal. Lorsque l’événement enregistré concerne une exception non gérée, la valeur dans cette colonne sera simplement exception.

  • Pour les métriques, il s’agit de la valeur numérique de la métrique. [3]

Notez que le type de la colonne VALUE est VARIANT (et non STRING), de sorte qu’elle peut avoir des valeurs autres que des chaînes dans certains langages, comme JavaScript.