Tous les produits
Search
Centre de documentation

Simple Log Service:Instructions pour l'extraction de données semi-structurées

Dernière mise à jour :Aug 18, 2026

Cette rubrique explique comment utiliser des instructions pour extraire des données semi-structurées et fournit des exemples pertinents.

parse-regexp

Extrait les informations d'un champ spécifié qui correspondent aux groupes d'expressions régulières.

Important
  • Le type de données des informations extraites est VARCHAR. Si un champ extrait porte le même nom qu'un champ présent dans les données d'entrée, consultez la section Value retention and overwriting pour connaître la politique de conservation des valeurs.

  • Les opérations sur les champs temporels __time__ et __time_ns_part__ sont interdites. Pour plus d'informations, consultez la section Time fields.

Syntax

| parse-regexp <field>, <pattern> as <output>, ...

Parameters

Parameter

Type

Required

Description

field

Field

Yes

Nom du champ source à extraire.

Les données d'entrée doivent contenir ce champ. Le champ doit être de type VARCHAR et sa valeur ne peut pas être null. Sinon, l'extraction n'a pas lieu.

pattern

Regexp

Yes

Expression régulière. La syntaxe RE2 est prise en charge.

output

Field

No

Nom du champ utilisé pour stocker le résultat de l'extraction.

Examples

  • Exemple 1 : effectuez une correspondance exploratoire séquentielle.

    • Instruction SPL

      *
      | parse-regexp content, '(\S+)' as ip -- Generates the ip field: 10.0.0.0.
      | parse-regexp content, '\S+\s+(\w+)' as method -- Generates the method field: GET.
    • Données d'entrée

      content: '10.0.0.0 GET /index.html 15824 0.043'
    • Sortie

      content: '10.0.0.0 GET /index.html 15824 0.043'
      ip: '10.0.0.0'
      method: 'GET'
  • Exemple 2 : effectuez une correspondance complète du modèle en utilisant la capture d'expressions régulières non nommées.

    • Instruction SPL

      * | parse-regexp content, '(\S+)\s+(\w+)' as ip, method
    • Données d'entrée

      content: '10.0.0.0 GET /index.html 15824 0.043'
    • Sortie

      content: '10.0.0.0 GET /index.html 15824 0.043'
      ip: '10.0.0.0'
      method: 'GET'

parse-csv

Extrait les données au format CSV d'un champ spécifié.

Important
  • Le type de données des informations extraites est VARCHAR. Si un champ extrait porte le même nom qu'un champ présent dans les données d'entrée, consultez la section Value retention and overwriting pour connaître la politique de conservation des valeurs.

  • Les opérations sur les champs temporels __time__ et __time_ns_part__ sont interdites. Pour plus d'informations, consultez la section Time fields.

Syntax

| parse-csv -delim=<delim> -quote=<quote> -strict <field> as <output>, ...

Parameters

Parameter

Type

Required

Description

delim

String

No

Caractère de séparation du contenu des données. Il peut s'agir d'un à trois caractères ASCII valides.

Vous pouvez utiliser des caractères d'échappement pour représenter des caractères spéciaux. Par exemple, \t représente un caractère de tabulation, \11 représente le caractère ASCII dont le numéro ordinal octal est 11, et \x09 représente le caractère ASCII dont le numéro ordinal hexadécimal est 09.

Vous pouvez également utiliser un séparateur multicaractère, tel que $$$, ^_^.

La valeur par défaut est une virgule (,).

quote

Char

No

Caractère de guillemet pour le contenu des données. Il s'agit d'un seul caractère ASCII valide utilisé lorsque le contenu des données contient le séparateur.

Les exemples incluent un guillemet double ("), un guillemet simple (') et un caractère invisible (0x01).

Par défaut, aucun caractère de guillemet n'est utilisé.

Important

Ce paramètre prend effet uniquement lorsque le paramètre delim est un seul caractère. La valeur de ce paramètre ne peut pas être identique à celle du paramètre delim.

strict

Bool

No

Indique s'il faut activer la correspondance stricte lorsque le nombre de valeurs dans le contenu des données ne correspond pas au nombre de champs spécifiés dans output.

  • False : correspondance non stricte. La stratégie de correspondance maximale est utilisée.

    • Si le nombre de valeurs est supérieur au nombre de champs, les valeurs supplémentaires ne sont pas sorties.

    • Si le nombre de champs est supérieur au nombre de valeurs, des chaînes vides sont sorties pour les champs supplémentaires.

  • True : correspondance stricte. Aucun champ n'est sorti.

Cette fonctionnalité est désactivée par défaut. Pour l'activer, ajoutez ce paramètre.

field

Field

Yes

Nom du champ source à analyser.

Le contenu des données doit inclure ce champ. Le champ doit être de type VARCHAR et sa valeur ne peut pas être null. Sinon, l'extraction n'a pas lieu.

output

Field

Yes

Nom du champ utilisé pour stocker le contenu des données analysées.

Examples

  • Exemple 1 : correspondance de données simple.

    • Instruction SPL

      * | parse-csv content as x, y, z
    • Données d'entrée

      content: 'a,b,c'
    • Sortie

      content: 'a,b,c'
      x: 'a'
      y: 'b'
      z: 'c'
  • Exemple 2 : utilisez le guillemet double par défaut (") comme caractère de guillemet pour faire correspondre le contenu contenant des caractères spéciaux.

    • Instruction SPL

      * | parse-csv content as ip, time, host
    • Données d'entrée

      content: '192.168.0.100,"10/Jun/2019:11:32:16,127 +0800",example.aliyundoc.com'
    • Sortie

      content: '192.168.0.100,"10/Jun/2019:11:32:16,127 +0800",example.aliyundoc.com'
      ip: '192.168.0.100'
      time: '10/Jun/2019:11:32:16,127 +0800'
      host: 'example.aliyundoc.com'
  • Exemple 3 : utilisez un séparateur multicaractère.

    • Instruction SPL

      * | parse-csv -delim='||' content as time, ip, req
    • Données d'entrée

      content: '05/May/2022:13:30:28||127.0.0.1||POST /put?a=1&b=2'
    • Sortie

      content: '05/May/2022:13:30:28||127.0.0.1||POST /put?a=1&b=2'
      time: '05/May/2022:13:30:28'
      ip: '127.0.0.1'
      req: 'POST /put?a=1&b=2'

parse-json

Extrait les paires clé-valeur de premier niveau d'un champ spécifié au format JSON.

Important
  • Le type de données des informations extraites est VARCHAR. Si un champ extrait porte le même nom qu'un champ présent dans les données d'entrée, consultez la section Value retention and overwriting pour connaître la politique de conservation des valeurs.

  • Les opérations sur les champs temporels __time__ et __time_ns_part__ sont interdites. Pour plus d'informations, consultez la section Time fields.

Syntax

| parse-json -mode=<mode> -path=<path> -prefix=<prefix> <field>

Parameters

Parameter

Type

Required

Description

mode

String

No

Spécifie le mode de valeur pour le résultat si un nouveau champ porte le même nom qu'un champ présent dans les données d'entrée. La valeur par défaut est overwrite.

path

JSONPath

No

Spécifie le chemin JSON dans le contenu du champ pour localiser le contenu à extraire.

La valeur par défaut est une chaîne vide, ce qui indique que le contenu complet du champ spécifié est extrait directement.

prefix

String

No

Préfixe pour les champs de résultat après l'expansion de la structure JSON. La valeur par défaut est une chaîne vide.

field

Field

Yes

Nom du champ source à analyser.

Les données d'entrée doivent contenir ce champ, sa valeur ne peut pas être null et l'une des conditions suivantes doit être remplie. Sinon, l'extraction n'a pas lieu.

  • Le type est JSON.

  • Le type est VARCHAR et la valeur est une chaîne JSON valide.

Examples

  • Exemple 1 : extrayez toutes les paires clé-valeur du champ y.

    • Instruction SPL

      * | parse-json y
    • Données d'entrée

      x: '0'
      y: '{"a": 1, "b": 2}'
    • Sortie

      x: '0'
      y: '{"a": 1, "b": 2}'
      a: '1'
      b: '2'
  • Exemple 2 : extrayez la valeur de la clé body du champ content, puis extrayez toutes ses paires clé-valeur.

    • Instruction SPL

      * | parse-json -path='$.body' content
    • Données d'entrée

      content: '{"body": {"a": 1, "b": 2}}'
    • Sortie

      content: '{"body": {"a": 1, "b": 2}}'
      a: '1'
      b: '2'
  • Exemple 3 : définissez le mode de sortie de la valeur du champ sur preserve pour conserver les valeurs d'origine des champs existants.

    • Instruction SPL

      * | parse-json -mode='preserve' y
    • Données d'entrée

      a: 'xyz'
      x: '0'
      y: '{"a": 1, "b": 2}'
    • Sortie

      x: '0'
      y: '{"a": 1, "b": 2}'
      a: 'xyz'
      b: '2'

parse-kv

Extrait les paires clé-valeur d'un champ spécifié.

Important
  • Le type de données des informations extraites est VARCHAR. Si un champ extrait porte le même nom qu'un champ présent dans les données d'entrée, consultez la section Value retention and overwriting pour connaître la politique de conservation des valeurs.

  • Les opérations sur les champs temporels __time__ et __time_ns_part__ sont interdites. Pour plus d'informations, consultez la section Time fields.

Syntax

Extraction by separator

Extrait les paires clé-valeur en fonction de séparateurs spécifiés.

| parse-kv -mode=<mode> -prefix=<prefix> -greedy <field>, <delim>, <kv-sep>

Extraction by regular expression

Extrait les paires clé-valeur en fonction d'une expression régulière spécifiée.

| parse-kv -regexp -mode=<mode> -prefix=<prefix> <field>, <pattern>

Parameters

Extraction by separator

Parameter

Type

Required

Description

mode

String

No

Si le champ de destination correspondant existe déjà dans les données d'entrée, vous pouvez sélectionner un mode d'écrasement des données.

La valeur par défaut est overwrite. Pour plus d'informations, consultez la section Field extraction check and overwrite modes.

prefix

String

No

Préfixe pour les noms des champs de sortie contenant les résultats de l'extraction. La valeur par défaut est une chaîne vide.

greedy

Bool

No

Active la correspondance gourmande pour les valeurs de champ.

  • Désactivé : arrête la correspondance de la valeur du champ lorsqu'un delim est rencontré.

  • Activé : fait correspondre tout le contenu précédant la paire clé-valeur suivante en tant que valeur de champ.

field

Field

Yes

Nom du champ source à analyser.

  1. Si ce champ n'existe pas dans l'entrée de données ou si sa valeur est null, l'entrée n'est pas traitée.

  2. Si aucune paire clé-valeur n'est trouvée dans le contenu des données, l'entrée n'est pas traitée.

delim

Char

Yes

Caractère de séparation entre les différentes paires clé-valeur. Il peut s'agir d'un à cinq caractères ASCII valides, tels que ^_^.

Vous ne pouvez pas spécifier une sous-chaîne de kv-sep.

kv-sep

Char

Yes

Caractère qui relie la clé et la valeur au sein d'une paire clé-valeur. Il peut s'agir d'un à cinq caractères ASCII valides, tels que #$#.

Vous ne pouvez pas spécifier une sous-chaîne de delim.

Extraction by regular expression

Parameter

Type

Required

Description

regexp

Bool

Yes

Active le mode d'extraction par expression régulière.

mode

String

No

Si le champ de destination correspondant existe déjà dans les données d'entrée, vous pouvez sélectionner un mode d'écrasement des données.

La valeur par défaut est overwrite. Pour plus d'informations, consultez la section Field extraction check and overwrite modes.

prefix

String

No

Préfixe pour les noms des champs de sortie contenant les résultats de l'extraction. La valeur par défaut est une chaîne vide.

field

Field

Yes

Nom du champ source à extraire.

Les données d'entrée doivent contenir ce champ. Le champ doit être de type VARCHAR et sa valeur ne peut pas être null. Sinon, l'extraction n'a pas lieu.

pattern

RegExpr

Yes

Expression régulière contenant deux groupes de capture. Le premier groupe de capture extrait le nom du champ et le second extrait la valeur du champ. La syntaxe RE2 est prise en charge.

Examples

  • Exemple 1 : utilisez des séparateurs multicaractères pour extraire les étiquettes des données de métriques SLS en tant que champs de données.

    • Instruction SPL

      * | parse-kv -prefix='__labels__.' __labels__, '|', '#$#'
    • Données d'entrée

      __name__: 'net_in'
      __value__: '231461.57374215033'
      __time_nano__: '1717378679274117026'
      __labels__: 'cluster#$#sls-etl|hostname#$#iZbp17raa25u0xi4wifopeZ|interface#$#veth02cc91d2|ip#$#192.168.22.238'
    • Données de sortie

      __name__: 'net_in'
      __value__: '231461.57374215033'
      __time_nano__: '1717378679274117026'
      __labels__: 'cluster#$#sls-etl|hostname#$#iZbp17raa25u0xi4wifopeZ|interface#$#veth02cc91d2|ip#$#192.168.22.238'
      __labels__.cluster: 'sls-etl'
      __labels__.hostname: 'iZbp17raa25u0xi4wifopeZ'
      __labels__.interface: 'veth02cc91d2'
      __labels__.ip: '192.168.22.238'
  • Exemple 2 : activez le mode de correspondance gourmande pour extraire les paires clé-valeur des journaux d'accès.

    • Instruction SPL

      * | parse-kv -greedy content, ' ', '='
    • Données d'entrée

      content: 'src=127.0.0.1 dst=192.168.0.0 bytes=125 msg=connection refused body=this is test time=2024-05-21T00:00:00'
    • Données de sortie

      content: 'src=127.0.0.1 dst=192.168.0.0 bytes=125 msg=connection refused body=this is test time=2024-05-21T00:00:00'
      src: '127.0.0.1'
      dst: '192.168.0.0'
      bytes: '125'
      msg: 'connection refused'
      body: 'this is test'
      time: '2024-05-21T00:00:00'
  • Exemple 3 : utilisez le mode d'extraction par expression régulière pour gérer les délimiteurs complexes de paires clé-valeur et les séparateurs clé-valeur.

    • Instruction SPL

      * | parse-kv -regexp content, '([^&?]+)(?:=|:)([^&?]+)'
    • Données d'entrée

      content: 'k1=v1&k2=v2?k3:v3'
      k1: 'xyz'
    • Données de sortie

      content: 'k1=v1&k2=v2?k3:v3'
      k1: 'v1'
      k2: 'v2'
      k3: 'v3'
  • Exemple 4 : définissez le mode de sortie de la valeur du champ sur preserve pour conserver les valeurs d'origine des champs existants.

    • Instruction SPL

      * | parse-kv -regexp -mode='preserve' content, '([^&?]+)(?:=|:)([^&?]+)'
    • Données d'entrée

      content: 'k1=v1&k2=v2?k3:v3'
      k1: 'xyz'
    • Sortie

      content: 'k1=v1&k2=v2?k3:v3'
      k1: 'xyz'
      k2: 'v2'
      k3: 'v3'