Tous les produits
Search
Centre de documentation

Simple Log Service:Instructions de transformation des données (nouvelle version)

Dernière mise à jour :Aug 18, 2026

Découvrez l'utilisation et les exemples des instructions de transformation des données (nouvelle version).

pack-fields

Regroupe plusieurs champs dans un nouveau champ sous la forme d'une chaîne sérialisée en JSON. Cette fonction convient aux scénarios de transmission structurée, tels que la construction de corps de requête API.

Important
  • Par défaut, les champs qui ne sont pas de type Varchar ne sont pas traités. Cela inclut les champs __time__ et __time_ns_part__.

  • Par défaut, les données source ne sont pas conservées.

Syntaxe

| pack-fields -keep -ltrim -include=<include> -exclude=<exclude> as <output>

Paramètres

Paramètre

Type

Obligatoire

Description

output

String

Oui

Nom du champ de sortie après regroupement. La valeur du champ est au format JSON.

include

RegExp

Non

Configuration de la liste d'autorisation. Les champs correspondant à l'expression régulière sont regroupés. La valeur par défaut est « .* », ce qui correspond à tous les champs. Pour plus d'informations, consultez la rubrique Expressions régulières.

exclude

RegExp

Non

Configuration de la liste de blocage, prioritaire sur la liste d'autorisation. Les champs correspondant à l'expression régulière ne sont pas regroupés. La valeur par défaut est vide, ce qui signifie qu'aucune correspondance n'est effectuée. Pour plus d'informations, consultez la rubrique Expressions régulières.

ltrim

String

Non

Supprime le préfixe du nom du champ de sortie.

keep

Bool

Non

Indique s'il faut conserver les données source après le regroupement.

True : conserve les données source regroupées dans la sortie.

False (par défaut) : ne conserve pas les données source regroupées dans la sortie.

Exemples

  • Exemple 1 : regroupez tous les champs de journal dans le champ test. Par défaut, les champs d'origine regroupés sont supprimés.

    • Instruction SPL

      * | pack-fields -include='\w+' as test
    • Données d'entrée

      test1:123
      test2:456
      test3:789
    • Sortie

      test:{"test1": "123", "test2": "456", "test3": "789"}
  • Exemple 2 : regroupez tous les champs de journal dans le champ test sans supprimer les champs d'origine regroupés.

    • Instruction SPL

      * | pack-fields -keep -include='\w+' as test
    • Données d'entrée

      test1:123
      test2:456
      test3:789
    • Sortie

      test:{"test1": "123", "test2": "456", "test3": "789"}
      test1:123
      test2:456
      test3:789
  • Exemple 3 : regroupez les champs test et abcd dans le champ content et conservez les champs d'origine.

    • Instruction SPL

      * | pack-fields -keep -include='\w+' as content
    • Données d'entrée

      abcd@#%:123
      test:456
      abcd:789
    • Sortie

      abcd:789
      abcd@#%:123
      content:{"test": "456", "abcd": "789"}
      test:456
  • Exemple 4 : regroupez tous les champs sauf les champs test et abcd dans le champ content et supprimez les champs d'origine regroupés.

    • Instruction SPL

      * | pack-fields -exclude='\w+' as content
    • Données d'entrée

      abcd@#%:123
      test:456
      abcd:789
    • Sortie

      abcd:789
      content:{"abcd@#%": "123"}
      test:456
  • Exemple 5 : extrayez toutes les paires clé-valeur correspondant à l'expression régulière spécifiée à partir d'une valeur de champ, puis regroupez-les dans le champ name.

    • Instruction SPL

      * | parse-kv -prefix='k_' -regexp dict, '(\w+):(\w+)' | pack-fields -include='k_.*' -ltrim = 'k_' as name
    • Données d'entrée

      dict: x:123, y:456, z:789
    • Sortie

      dict:x:123, y:456, z:789
      name:{"x": "123", "y": "456", "z": "789"}

log-to-metric

Transforme les journaux au format requis pour le stockage des données de séries temporelles.

Important
  • Par défaut, les données de journal qui ne répondent pas aux exigences des Métriques sont ignorées.

  • L'unité de temps du champ d'horodatage dans les données de journal brutes est détectée automatiquement. Les unités prises en charge incluent les secondes, les millisecondes, les microsecondes et les nanosecondes.

  • L'écriture basée sur le hachage est utilisée par défaut.

Syntaxe

| log-to-metric -wildcard -format -names=<names> -labels=<labels> -time_field=<time_field> -buckets=<buckets>

Paramètres

Paramètre

Type

Obligatoire

Description

wildcard

Bool

Non

Indique s'il faut activer la correspondance avec caractères génériques pour les noms de champs spécifiés par names et labels.

Par défaut, la correspondance exacte des champs est utilisée. Pour activer la correspondance avec caractères génériques, ajoutez ce paramètre.

format

Bool

Non

Indique s'il faut activer le formatage automatique.

Par défaut, cette option est désactivée et les données de libellé non valides sont ignorées lors de la transformation.

Si elle est activée, les données de libellé non valides sont formatées. Les valeurs de libellé ne peuvent pas contenir de caractères tels que "|", "#" ou "$". Le cas échéant, ces caractères sont remplacés par des traits de soulignement (_).

names

FieldList

Oui

Liste des champs de journal utilisés pour générer les points de données de métrique correspondants.

Si un champ des données d'entrée correspond à au moins l'un des noms de champ ou modèles avec caractères génériques spécifiés, un point de données de métrique est généré pour ce champ. Le nom de la métrique correspond au nom du champ et la valeur de la métrique à la valeur du champ.

Par exemple, ["mem","mem:pct"] génère deux points de données nommés mem et mem:pct.

Important
  • Le nom du champ d'entrée doit correspondre à l'expression régulière [a-zA-Z_:][a-zA-Z0-9_:]*. Sinon, aucun point de données n'est généré pour le champ.

  • La valeur du champ d'entrée doit répondre à l'une des exigences suivantes. Sinon, aucun point de données n'est généré pour le champ :

    • Le champ est de type numérique : TINYINT, SMALLINT, INTEGER, BIGINT, HUGEINT, REAL ou DOUBLE.

    • Le champ est de type texte VARCHAR et sa valeur peut être convertie en un type DOUBLE valide.

Pour connaître le format des données de série temporelle, consultez la rubrique Données de série temporelle (métrique).

labels

FieldList

Non

Liste des champs de journal utilisés pour construire les informations de libellé de série temporelle correspondantes.

Si un champ des données d'entrée correspond à au moins l'un des noms de champ ou modèles avec caractères génériques spécifiés, le champ est ajouté aux libellés du point de données. Le nom du libellé correspond au nom du champ et la valeur du libellé à la valeur du champ.

Par exemple, ["host","ip"] ajoute deux libellés de série temporelle, host et ip, avec leurs valeurs de champ d'origine.

Important
  • Le nom du champ d'entrée doit correspondre à l'expression régulière [a-zA-Z_][a-zA-Z0-9_]*. Sinon, le libellé du point de données généré n'inclura pas ce champ.

  • La valeur du champ d'entrée ne peut pas contenir de BARRE VERTICALE (|). Sinon, le libellé du point de données généré n'inclura pas ce champ.

  • Le champ d'entrée doit être de type texte VARCHAR. Sinon, le libellé correspondant n'est pas généré.

Pour connaître le format des données de série temporelle, consultez la rubrique Données de série temporelle (métrique).

time_field

String

Non

Champ d'heure pour les données de série temporelle. Par défaut, le champ __time__ du journal est utilisé comme champ d'heure pour les données de série temporelle.

Important

Le champ d'entrée doit être un horodatage. Le type de données correspondant doit être BIGINT ou VARCHAR. Si le champ est de type texte VARCHAR, sa valeur doit être convertible en un type BIGINT valide.

buckets

Integer

Non

La valeur par défaut est 32. Définissez ce paramètre sur le nombre de shards cibles. Il ajuste la plage de hachage pour optimiser les performances d'écriture de l'opérateur log-to-metric. Ce paramètre contrôle le nombre de compartiments de hachage, ce qui affecte la distribution des données et les performances des requêtes dans le metricstore.

Exemples

  • Exemple 1 : transformez un journal contenant le champ rt au format de données de série temporelle.

    • Instruction SPL

      * | log-to-metric -names='["rt"]'
    • Données d'entrée

      __time__: 1614739608
      rt: 123
    • Sortie

      __labels__:
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemple 2 : transformez un journal contenant le champ rt au format de données de série temporelle et utilisez le champ host comme nouveau libellé.

    • Instruction SPL

      * | log-to-metric -names='["rt"]' -labels='["host"]'
    • Données d'entrée

      __time__: 1614739608
      rt: 123
      host: myhost
    • Sortie

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemple 3 : transformez un journal contenant les champs rt et qps au format de données de série temporelle et utilisez le champ host comme libellé.

    • Instruction SPL

      * | log-to-metric -names='["rt", "qps"]' -labels='["host"]'
    • Données d'entrée

      __time__: 1614739608
      rt: 123
      qps: 10
      host: myhost
    • Sortie

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost
      __name__:qps
      __time_nano__:1614739608
      __value__:10
  • Exemple 4 : utilisez la correspondance avec caractères génériques pour transformer un journal contenant les champs rt1 et rt2 au format de données de série temporelle et utilisez le champ host comme nouveau libellé.

    • Instruction SPL

      * | log-to-metric -wildcard -names='["rt*"]' -labels='["host"]'
    • Données d'entrée

      __time__: 1614739608
      rt1: 123
      rt2: 10
      host: myhost
    • Sortie

      __labels__:host#$#myhost
      __name__:rt1
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost
      __name__:rt2
      __time_nano__:1614739608
      __value__:10
  • Exemple 5 : transformez un journal contenant les champs rt et qps au format de données de série temporelle, utilisez le champ host comme nouveau libellé et formatez automatiquement la valeur du nouveau libellé.

    • Instruction SPL

      * | log-to-metric -format -names='["rt", "qps"]' -labels='["host"]'
    • Données d'entrée

      __time__: 1614739608
      rt: 123
      qps: 10
      host: myhost1|myhost2
    • Sortie

      __labels__:host#$#myhost1_myhost2
      __name__:rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost1_myhost2
      __name__:qps
      __time_nano__:1614739608
      __value__:10
  • Exemple 6 : transformez un journal contenant les champs rt et qps au format de données de série temporelle. Remplacez les noms de champs par max_rt et total_qps et utilisez le champ host comme nouveau libellé.

    • Instruction SPL

      * | project-rename max_rt = rt, total_qps = qps| log-to-metric -names='["max_rt", "total_qps"]' -labels='["host"]'
    • Données d'entrée

      __time__: 1614739608
      rt: 123
      qps: 10
      host: myhost
    • Sortie

      __labels__:host#$#myhost
      __name__:max_rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost
      __name__:total_qps
      __time_nano__:1614739608
      __value__:10
  • Exemple 7 : transformez un journal contenant les champs rt et qps au format de données de série temporelle. Les champs sont renommés en max_rt et total_qps, et le champ host est renommé en hostname pour servir de nouveau libellé.

    • Instruction SPL

      * | project-rename max_rt = rt, total_qps = qps, hostname=host| log-to-metric -names='["max_rt", "total_qps"]' -labels='["hostname"]'
    • Données d'entrée

      __time__: 1614739608
      rt: 123
      qps: 10
      host: myhost
    • Sortie

      __labels__:hostname#$#myhost
      __name__:max_rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:hostname#$#myhost
      __name__:total_qps
      __time_nano__:1614739608
      __value__:10
  • Exemple 8 : transformez un journal contenant le champ remote_user au format de données de série temporelle. Utilisez le champ status comme nouveau libellé et le champ time comme horodatage pour les données de série temporelle.

    • Instruction SPL

      * | log-to-metric -names='["remote_user"]' -labels='["status"]' -time_field='time'
    • Données d'entrée

      time:1652943594
      remote_user:89
      request_length:4264
      request_method:GET
      status:200
    • Sortie

      __labels__:status#$#200
      __name__:remote_user
      __time_nano__:1652943594
      __value__:89

metric-to-metric

Transforme davantage les données de série temporelle existantes en ajoutant, modifiant ou supprimant des libellés.

Important
  • Le nom du champ d'entrée doit correspondre à l'expression régulière [a-zA-Z_][a-zA-Z0-9_]*. Sinon, le libellé du point de série temporelle généré n'inclura pas ce champ.

  • Si les trois paramètres d'option contiennent le même champ, la priorité est la suivante : add_labels > del_labels > rename_labels.

Pour plus d'informations sur le format des données de série temporelle en sortie, consultez la rubrique Données de série temporelle (métrique).

Syntaxe

| metric-to-metric -format -add_labels=<add_labels> -del_labels=<del_labels> -rename_labels=<rename_labels> -buckets=<buckets>

Paramètres

Paramètre

Type

Obligatoire

Description

add_labels

Array

Non

Liste des champs de libellé à ajouter. Elle sert à construire de nouvelles informations de libellé de série temporelle.

Ajoute les données brutes aux libellés du point de série temporelle. Seul le type VARCHAR est pris en charge.

Par exemple, si les données brutes sont {"host":"http://www.xxx.com", "ip":"127.0.0.1"} et que vous saisissez ["host", "ip"], |host#$#http://www.xxx.com|ip#$#127.0.0.1 est ajouté aux libellés d'origine. Si les libellés d'origine contiennent déjà un champ host, sa valeur est écrasée.

del_labels

Array

Non

Liste des champs de libellé à supprimer. Elle sert à construire de nouvelles informations de libellé de série temporelle.

Si un nom de champ dans l'entrée correspond à un nom de champ dans les libellés d'origine, le champ correspondant est supprimé des libellés d'origine.

Par exemple, si la valeur du libellé d'origine est host#$#http://www.xxx.com|ip#$#127.0.0.1, la saisie de ["ip"] spécifie la suppression d'un libellé de série temporelle et met à jour le libellé d'origine en host#$#http://www.xxx.com. Si le libellé d'origine contient le champ ip, aucune action n'est entreprise.

rename_labels

Map

Non

Liste des champs de libellé à renommer. Elle sert à construire de nouvelles informations de libellé de série temporelle.

Met à jour les libellés du point de série temporelle d'origine en fonction des informations de la map. La clé correspond au nom du champ d'origine et la valeur au nouveau nom du champ.

Par exemple, {"host":"host_new", "ip":"ip_new"} renomme "host" en "host_new" et "ip" en "ip_new". Si les libellés d'origine ne contiennent pas le champ correspondant, aucune opération n'est effectuée.

format

Bool

Non

Indique s'il faut activer le formatage automatique. Par défaut, cette option est désactivée et les données non valides sont ignorées lors de la transformation.

Si elle est activée :

  • Les __labels__ sont triés.

  • Le LabelKey et le LabelValue sont formatés.

    • LabelKey : doit correspondre à l'expression régulière "[a-zA-Z_][a-zA-Z0-9_]". Les caractères non valides sont remplacés par un espace (" ").

    • LabelValue : ne peut pas contenir de caractères tels que "|", "#" ou "$". Le cas échéant, ces caractères sont remplacés par un trait de soulignement (_).

  • Les libellés dans __labels__ dont la LabelValue est une chaîne vide sont supprimés. Toutefois, l'entrée de données est conservée.

  • Les libellés en double dans le champ __labels__ sont supprimés. Le libellé dont la LabelValue vient en premier dans l'ordre lexicographique est conservé.

buckets

Integer

Non

La valeur par défaut est 32. Définissez ce paramètre sur le nombre de shards cibles. Il ajuste la plage de hachage pour optimiser les performances d'écriture de l'opérateur metric-to-metric. Ce paramètre contrôle le nombre de compartiments de hachage, ce qui affecte la distribution des données et les performances des requêtes dans le metricstore.

Exemples

  • Exemple 1 : ajoutez un libellé.

    • Instruction SPL

      * | extend qps = '10'|metric-to-metric -add_labels='["qps"]'
    • Données d'entrée

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
    • Sortie

      __labels__:host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemple 2 : supprimez un libellé.

    • Instruction SPL

      * | metric-to-metric -del_labels='["qps"]'
    • Données d'entrée

      __labels__:host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
    • Sortie

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemple 3 : renommez un libellé.

    • Instruction SPL

      * | metric-to-metric -rename_labels='{"host":"etl_host"}'
    • Données d'entrée

      __labels__:host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
    • Sortie

      __labels__:etl_host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemple 4 : formatez les données non valides.

    • Instruction SPL

      * | metric-to-metric -format
    • Données d'entrée

      __labels__:host#$#myhost|qps#$#10|asda$cc#$#j|ob|schema#$#|#$#|#$#xxxx
      __name__:rt
      __time_nano__:1614739608
      __value__:123
    • Sortie

      __labels__:asda_cc#$#j|host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123