Todos os produtos
Search
Central de documentação

Simple Log Service:Instruções para extração de dados semiestruturados

Última atualização: Jul 03, 2026

Este tópico descreve como usar instruções para extrair dados semiestruturados e apresenta exemplos relevantes.

parse-regexp

Extrai informações de um campo especificado que correspondem a grupos de expressões regulares.

Importante
  • O tipo de dado extraído é VARCHAR. Se um campo extraído tiver o mesmo nome de um campo nos dados de entrada, consulte Retenção e sobrescrita de valores para conhecer a política de retenção de valores.

  • Não é possível operar nos campos de tempo __time__ e __time_ns_part__. Para mais informações, consulte Campos de tempo.

Sintaxe

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

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

field

Campo

Sim

Nome do campo source a extrair.

Os dados de entrada devem conter este campo. O campo deve ser do tipo VARCHAR e seu valor não pode ser null. Caso contrário, a extração não ocorre.

pattern

Regexp

Sim

A expressão regular. Há suporte à sintaxe RE2.

output

Campo

Não

Nome do campo usado para armazenar o resultado da extração.

Exemplos

  • Exemplo 1: Correspondência exploratória sequencial.

    • Instrução 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.
    • Dados de entrada

      content: '10.0.0.0 GET /index.html 15824 0.043'
    • Saída

      content: '10.0.0.0 GET /index.html 15824 0.043'
      ip: '10.0.0.0'
      method: 'GET'
  • Exemplo 2: Correspondência completa de padrão com captura de expressão regular sem nome.

    • Instrução SPL

      * | parse-regexp content, '(\S+)\s+(\w+)' as ip, method
    • Dados de entrada

      content: '10.0.0.0 GET /index.html 15824 0.043'
    • Saída

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

parse-csv

Extrai dados no formato CSV de um campo especificado.

Importante
  • O tipo de dado extraído é VARCHAR. Se um campo extraído tiver o mesmo nome de um campo nos dados de entrada, consulte Retenção e sobrescrita de valores para conhecer a política de retenção de valores.

  • Não é possível operar nos campos de tempo __time__ e __time_ns_part__. Para mais informações, consulte Campos de tempo.

Sintaxe

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

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

delim

String

Não

Caractere separador do conteúdo dos dados. Aceita de um a três caracteres ASCII válidos.

Use caracteres de escape para representar caracteres especiais. Por exemplo, \t representa tabulação, \11 representa o caractere ASCII com número ordinal octal 11 e \x09 representa o caractere ASCII com número ordinal hexadecimal 09.

Também é possível usar separadores com múltiplos caracteres, como $$$, ^_^.

O valor padrão é vírgula (,).

quote

Char

Não

Caractere de aspas do conteúdo dos dados. Deve ser um único caractere ASCII válido, usado quando o conteúdo contém o separador.

Exemplos: aspas duplas ("), aspas simples (') e caractere invisível (0x01).

Por padrão, nenhum caractere de aspas é usado.

Importante

Este parâmetro só tem efeito quando delim é um único caractere. Seu valor não pode ser igual ao valor de delim.

strict

Bool

Não

Defina se a correspondência estrita deve ser ativada quando o número de valores no conteúdo não corresponder ao número de campos especificados em output.

  • False: Correspondência não estrita. Aplica-se a política de correspondência máxima.

    • Se houver mais valores que campos, os valores excedentes não aparecem na saída.

    • Se houver mais campos que valores, os campos excedentes recebem strings vazias na saída.

  • True: Correspondência estrita. Nenhum campo é gerado na saída.

Esse recurso está desativado por padrão. Para ativá-lo, adicione este parâmetro.

field

Campo

Sim

Nome do campo source a analisar.

O conteúdo dos dados deve incluir este campo. O campo deve ser do tipo VARCHAR e seu valor não pode ser null. Caso contrário, a extração não ocorre.

output

Campo

Sim

Nome do campo usado para armazenar o conteúdo analisado.

Exemplos

  • Exemplo 1: Correspondência simples de dados.

    • Instrução SPL

      * | parse-csv content as x, y, z
    • Dados de entrada

      content: 'a,b,c'
    • Saída

      content: 'a,b,c'
      x: 'a'
      y: 'b'
      z: 'c'
  • Exemplo 2: Uso das aspas duplas padrão (") como caractere de aspas para corresponder a conteúdo com caracteres especiais.

    • Instrução SPL

      * | parse-csv content as ip, time, host
    • Dados de entrada

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

      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'
  • Exemplo 3: Uso de separador com múltiplos caracteres.

    • Instrução SPL

      * | parse-csv -delim='||' content as time, ip, req
    • Dados de entrada

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

      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

Extrai os pares chave-valor da primeira camada de um campo especificado em formato JSON.

Importante
  • O tipo de dado extraído é VARCHAR. Se um campo extraído tiver o mesmo nome de um campo nos dados de entrada, consulte Retenção e sobrescrita de valores para conhecer a política de retenção de valores.

  • Não é possível operar nos campos de tempo __time__ e __time_ns_part__. Para mais informações, consulte Campos de tempo.

Sintaxe

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

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

mode

String

Não

Especifique o modo de valor do resultado caso um novo campo tenha o mesmo nome de um campo existente nos dados de entrada. O valor padrão é overwrite.

path

JSONPath

Não

Especifique o caminho JSON no conteúdo do campo para localizar o trecho a extrair.

O valor padrão é uma string vazia, o que indica extração direta de todo o conteúdo do campo especificado.

prefix

String

Não

Prefixo dos campos resultantes após a expansão da estrutura JSON. O valor padrão é uma string vazia.

field

Campo

Sim

Nome do campo source a analisar.

Os dados de entrada devem conter este campo, seu valor não pode ser null e uma das seguintes condições deve ser atendida. Caso contrário, a extração não ocorre.

  • O tipo é JSON.

  • O tipo é VARCHAR e o valor é uma string JSON válida.

Exemplos

  • Exemplo 1: Extração de todos os pares chave-valor do campo y.

    • Instrução SPL

      * | parse-json y
    • Dados de entrada

      x: '0'
      y: '{"a": 1, "b": 2}'
    • Saída

      x: '0'
      y: '{"a": 1, "b": 2}'
      a: '1'
      b: '2'
  • Exemplo 2: Extração do valor da chave body do campo content e, em seguida, extração de todos os seus pares chave-valor.

    • Instrução SPL

      * | parse-json -path='$.body' content
    • Dados de entrada

      content: '{"body": {"a": 1, "b": 2}}'
    • Saída

      content: '{"body": {"a": 1, "b": 2}}'
      a: '1'
      b: '2'
  • Exemplo 3: Definição do modo de saída de valor do campo como preserve para manter os valores originais dos campos existentes.

    • Instrução SPL

      * | parse-json -mode='preserve' y
    • Dados de entrada

      a: 'xyz'
      x: '0'
      y: '{"a": 1, "b": 2}'
    • Saída

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

parse-kv

Extrai pares chave-valor de um campo especificado.

Importante
  • O tipo de dado extraído é VARCHAR. Se um campo extraído tiver o mesmo nome de um campo nos dados de entrada, consulte Retenção e sobrescrita de valores para conhecer a política de retenção de valores.

  • Não é possível operar nos campos de tempo __time__ e __time_ns_part__. Para mais informações, consulte Campos de tempo.

Sintaxe

Extração por separador

Extrai pares chave-valor com base em separadores especificados.

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

Extração por expressão regular

Extrai pares chave-valor com base em uma expressão regular especificada.

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

Parâmetros

Extração por separador

Parâmetro

Tipo

Obrigatório

Descrição

mode

String

Não

Se o campo de destino correspondente já existir nos dados de entrada, selecione um modo de sobrescrita de dados.

O valor padrão é overwrite. Para mais informações, consulte Verificação de extração de campo e modos de sobrescrita.

prefix

String

Não

Prefixo dos nomes dos campos de saída com os resultados da extração. O valor padrão é uma string vazia.

greedy

Bool

Não

Ative a correspondência gulosa para valores de campo.

  • Desativado: Interrompe a correspondência do valor do campo ao encontrar um delim.

  • Ativado: Considera todo o conteúdo anterior ao próximo par chave-valor como valor do campo.

field

Campo

Sim

Nome do campo source a analisar.

  1. Se este campo não existir na entrada de dados ou seu valor for null, a entrada não será processada.

  2. Se nenhum par chave-valor for encontrado no conteúdo dos dados, a entrada não será processada.

delim

Char

Sim

Caractere separador entre pares chave-valor distintos. Aceita de um a cinco caracteres ASCII válidos, como ^_^.

Não é possível especificar uma substring de kv-sep.

kv-sep

Char

Sim

Caractere que conecta chave e valor dentro de um par chave-valor. Aceita de um a cinco caracteres ASCII válidos, como #$#.

Não é possível especificar uma substring de delim.

Extração por expressão regular

Parâmetro

Tipo

Obrigatório

Descrição

regexp

Bool

Sim

Ative o modo de extração por expressão regular.

mode

String

Não

Se o campo de destino correspondente já existir nos dados de entrada, selecione um modo de sobrescrita de dados.

O valor padrão é overwrite. Para mais informações, consulte Verificação de extração de campo e modos de sobrescrita.

prefix

String

Não

Prefixo dos nomes dos campos de saída com os resultados da extração. O valor padrão é uma string vazia.

field

Campo

Sim

Nome do campo source a extrair.

Os dados de entrada devem conter este campo. O campo deve ser do tipo VARCHAR e seu valor não pode ser null. Caso contrário, a extração não ocorre.

pattern

RegExpr

Sim

Expressão regular com dois grupos de captura. O primeiro extrai o nome do campo; o segundo, o valor do campo. Há suporte à sintaxe RE2.

Exemplos

  • Exemplo 1: Uso de separadores com múltiplos caracteres para extrair rótulos de dados de métricas do SLS como campos de dados.

    • Instrução SPL

      * | parse-kv -prefix='__labels__.' __labels__, '|', '#$#'
    • Dados de entrada

      __name__: 'net_in'
      __value__: '231461.57374215033'
      __time_nano__: '1717378679274117026'
      __labels__: 'cluster#$#sls-etl|hostname#$#iZbp17raa25u0xi4wifopeZ|interface#$#veth02cc91d2|ip#$#192.168.22.238'
    • Dados de saída

      __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'
  • Exemplo 2: Ativação do modo de correspondência gulosa para extrair pares chave-valor de logs de acesso.

    • Instrução SPL

      * | parse-kv -greedy content, ' ', '='
    • Dados de entrada

      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'
    • Dados de saída

      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'
  • Exemplo 3: Uso do modo de extração por expressão regular para lidar com delimitadores e separadores complexos em pares chave-valor.

    • Instrução SPL

      * | parse-kv -regexp content, '([^&?]+)(?:=|:)([^&?]+)'
    • Dados de entrada

      content: 'k1=v1&k2=v2?k3:v3'
      k1: 'xyz'
    • Dados de saída

      content: 'k1=v1&k2=v2?k3:v3'
      k1: 'v1'
      k2: 'v2'
      k3: 'v3'
  • Exemplo 4: Definição do modo de saída de valor do campo como preserve para manter os valores originais dos campos existentes.

    • Instrução SPL

      * | parse-kv -regexp -mode='preserve' content, '([^&?]+)(?:=|:)([^&?]+)'
    • Dados de entrada

      content: 'k1=v1&k2=v2?k3:v3'
      k1: 'xyz'
    • Saída

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