Todos los productos
Search
Centro de documentos

Simple Log Service:Instrucciones para la transformación de datos (nueva versión)

Última actualización: Sep 02, 2026

Conozca el uso y los ejemplos de las instrucciones de transformación de datos (nueva versión).

pack-fields

Empaqueta varios campos en un nuevo campo como una cadena serializada en JSON, adecuada para escenarios de transmisión estructurada como la creación de cuerpos de solicitud de API.

Importante
  • De forma predeterminada, no se procesan los campos que no son del tipo Varchar. Esto incluye los campos __time__ y __time_ns_part__.

  • De forma predeterminada, no se conservan los datos de origen.

Sintaxis

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

Parámetros

Parámetro

Tipo

Obligatorio

Descripción

output

String

Sí

El nombre del campo de salida después del empaquetado. El valor del campo tiene formato JSON.

include

RegExp

No

La configuración de la lista de permitidos. Se empaquetan los campos que coinciden con la expresión regular. El valor predeterminado es ".*", que coincide con todos los campos. Para obtener más información, consulte Regular expressions.

exclude

RegExp

No

La configuración de la lista de bloqueados, que tiene prioridad sobre la lista de permitidos. No se empaquetan los campos que coinciden con la expresión regular. El valor predeterminado está vacío, lo que significa que no se realiza ninguna coincidencia. Para obtener más información, consulte Regular expressions.

ltrim

String

No

Elimina el prefijo del nombre del campo de salida.

keep

Bool

No

Especifica si se deben conservar los datos de origen después del empaquetado.

True: Conserva los datos de origen empaquetados en la salida.

False (predeterminado): No conserva los datos de origen empaquetados en la salida.

Ejemplos

  • Ejemplo 1: Empaquetar todos los campos de registro en el campo test. De forma predeterminada, se eliminan los campos originales empaquetados.

    • Instrucción SPL

      * | pack-fields -include='\w+' as test
    • Datos de entrada

      test1:123
      test2:456
      test3:789
    • Salida

      test:{"test1": "123", "test2": "456", "test3": "789"}
  • Ejemplo 2: Empaquetar todos los campos de registro en el campo test sin eliminar los campos originales empaquetados.

    • Instrucción SPL

      * | pack-fields -keep -include='\w+' as test
    • Datos de entrada

      test1:123
      test2:456
      test3:789
    • Salida

      test:{"test1": "123", "test2": "456", "test3": "789"}
      test1:123
      test2:456
      test3:789
  • Ejemplo 3: Empaquetar los campos test y abcd en el campo content y conservar los campos originales.

    • Instrucción SPL

      * | pack-fields -keep -include='\w+' as content
    • Datos de entrada

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

      abcd:789
      abcd@#%:123
      content:{"test": "456", "abcd": "789"}
      test:456
  • Ejemplo 4: Empaquetar todos los campos excepto test y abcd en el campo content y eliminar los campos originales empaquetados.

    • Instrucción SPL

      * | pack-fields -exclude='\w+' as content
    • Datos de entrada

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

      abcd:789
      content:{"abcd@#%": "123"}
      test:456
  • Ejemplo 5: Extraer todos los pares clave-valor que coinciden con la expresión regular especificada de un valor de campo y empaquetarlos en el campo name.

    • Instrucción SPL

      * | parse-kv -prefix='k_' -regexp dict, '(\w+):(\w+)' | pack-fields -include='k_.*' -ltrim = 'k_' as name
    • Datos de entrada

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

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

log-to-metric

Transforma registros al formato necesario para almacenar datos de series temporales.

Importante
  • De forma predeterminada, se ignoran los datos de registro que no cumplen los requisitos de Metric.

  • La unidad de tiempo del campo de marca temporal en los datos de registro sin procesar se detecta automáticamente. Las unidades compatibles incluyen segundos, milisegundos, microsegundos y nanosegundos.

  • Se utiliza la escritura basada en hash de forma predeterminada.

Sintaxis

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

Parámetros

Parámetro

Tipo

Obligatorio

Descripción

wildcard

Bool

No

Especifica si se debe habilitar la coincidencia con comodines para los nombres de campo especificados por names y labels.

De forma predeterminada, se utiliza la coincidencia exacta de campos. Para habilitar la coincidencia con comodines, agregue este parámetro.

format

Bool

No

Especifica si se debe habilitar el formato automático.

De forma predeterminada, esta opción está deshabilitada y se omiten los datos de etiqueta no válidos durante la transformación.

Si se habilita, se da formato a los datos de etiqueta no válidos. Los valores de etiqueta no pueden contener caracteres como "|", "#" o "$". Si los contienen, estos caracteres se reemplazan por guiones bajos (_).

names

FieldList

Sí

Una lista de campos de registro que se utilizan para generar puntos de datos métricos correspondientes.

Si un campo en los datos de entrada coincide con al menos uno de los nombres de campo o patrones de comodín especificados, se genera un punto de datos métrico para ese campo. El nombre de la métrica es el nombre del campo y el valor de la métrica es el valor del campo.

Por ejemplo, ["mem","mem:pct"] genera dos puntos de datos llamados mem y mem:pct.

Importante
  • El nombre del campo de entrada debe coincidir con la expresión regular [a-zA-Z_:][a-zA-Z0-9_:]*. De lo contrario, no se generará ningún punto de datos para el campo.

  • El valor del campo de entrada debe cumplir uno de los siguientes requisitos. De lo contrario, no se generará ningún punto de datos para el campo:

    • El campo es de tipo numérico: TINYINT, SMALLINT, INTEGER, BIGINT, HUGEINT, REAL o DOUBLE.

    • El campo es de tipo texto VARCHAR y su valor se puede convertir a un tipo DOUBLE válido.

Para consultar el formato de datos de series temporales, consulte Time series data (metric).

labels

FieldList

No

Una lista de campos de registro que se utilizan para construir la información de etiquetas de series temporales correspondiente.

Si un campo en los datos de entrada coincide con al menos uno de los nombres de campo o patrones de comodín especificados, el campo se agrega a las etiquetas del punto de datos. El nombre de la etiqueta es el nombre del campo y el valor de la etiqueta es el valor del campo.

Por ejemplo, ["host","ip"] agrega dos etiquetas de series temporales, host e ip, con sus valores de campo originales.

Importante
  • El nombre del campo de entrada debe coincidir con la expresión regular [a-zA-Z_][a-zA-Z0-9_]*. De lo contrario, la etiqueta del punto de datos generado no incluirá este campo.

  • El valor del campo de entrada no puede contener una BARRA VERTICAL (|). De lo contrario, la etiqueta del punto de datos generado no incluirá este campo.

  • El campo de entrada debe ser de tipo texto VARCHAR. De lo contrario, no se generará la etiqueta correspondiente.

Para consultar el formato de datos de series temporales, consulte Time series data (metric).

time_field

String

No

El campo de tiempo para los datos de series temporales. De forma predeterminada, se utiliza el campo __time__ del registro como campo de tiempo para los datos de series temporales.

Importante

El campo de entrada debe ser una marca temporal. El tipo de datos correspondiente debe ser BIGINT o VARCHAR. Si el campo es de tipo texto VARCHAR, su valor debe poder convertirse a un tipo BIGINT válido.

buckets

Integer

No

El valor predeterminado es 32. Establezca este parámetro en el número de shards de destino. Ajusta el rango de hash para optimizar el rendimiento de escritura del operador log-to-metric. Este parámetro controla el número de buckets de hash, lo que afecta la distribución de datos y el rendimiento de las consultas en el metricstore.

Ejemplos

  • Ejemplo 1: Transformar un registro que contiene el campo rt al formato de datos de series temporales.

    • Instrucción SPL

      * | log-to-metric -names='["rt"]'
    • Datos de entrada

      __time__: 1614739608
      rt: 123
    • Salida

      __labels__:
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Ejemplo 2: Transformar un registro que contiene el campo rt al formato de datos de series temporales y utilizar el campo host como una nueva etiqueta.

    • Instrucción SPL

      * | log-to-metric -names='["rt"]' -labels='["host"]'
    • Datos de entrada

      __time__: 1614739608
      rt: 123
      host: myhost
    • Salida

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Ejemplo 3: Transformar un registro con los campos rt y qps al formato de datos de series temporales y utilizar el campo host como etiqueta.

    • Instrucción SPL

      * | log-to-metric -names='["rt", "qps"]' -labels='["host"]'
    • Datos de entrada

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

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

  • Ejemplo 4: Utilizar coincidencia con comodines para transformar un registro que contiene los campos rt1 y rt2 al formato de datos de series temporales, y utilizar el campo host como una nueva etiqueta.

    • Instrucción SPL

      * | log-to-metric -wildcard -names='["rt*"]' -labels='["host"]'
    • Datos de entrada

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

      __labels__:host#$#myhost
      __name__:rt1
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost
      __name__:rt2
      __time_nano__:1614739608
      __value__:10
  • Ejemplo 5: Transformar un registro que contiene los campos rt y qps al formato de datos de series temporales, utilizar el campo host como una nueva etiqueta y formatear automáticamente el valor de la nueva etiqueta.

    • Instrucción SPL

      * | log-to-metric -format -names='["rt", "qps"]' -labels='["host"]'
    • Datos de entrada

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

      __labels__:host#$#myhost1_myhost2
      __name__:rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost1_myhost2
      __name__:qps
      __time_nano__:1614739608
      __value__:10
  • Ejemplo 6: Transformar un registro que contiene los campos rt y qps al formato de datos de series temporales. Reemplace los nombres de los campos por max_rt y total_qps, y utilice el campo host como una nueva etiqueta.

    • Instrucción SPL

      * | project-rename max_rt = rt, total_qps = qps| log-to-metric -names='["max_rt", "total_qps"]' -labels='["host"]'
    • Datos de entrada

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

      __labels__:host#$#myhost
      __name__:max_rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost
      __name__:total_qps
      __time_nano__:1614739608
      __value__:10
  • Ejemplo 7: Transformar un registro que contiene los campos rt y qps al formato de datos de series temporales. Los campos se renombran a max_rt y total_qps, y el campo host se renombra a hostname para servir como una nueva etiqueta.

    • Instrucción SPL

      * | project-rename max_rt = rt, total_qps = qps, hostname=host| log-to-metric -names='["max_rt", "total_qps"]' -labels='["hostname"]'
    • Datos de entrada

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

      __labels__:hostname#$#myhost
      __name__:max_rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:hostname#$#myhost
      __name__:total_qps
      __time_nano__:1614739608
      __value__:10
  • Ejemplo 8: Transformar un registro que contiene el campo remote_user al formato de datos de series temporales. Utilice el campo status como una nueva etiqueta y el campo time como la marca temporal para los datos de series temporales.

    • Instrucción SPL

      * | log-to-metric -names='["remote_user"]' -labels='["status"]' -time_field='time'
    • Datos de entrada

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

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

metric-to-metric

Transforma aún más los datos de series temporales existentes mediante la adición, modificación o eliminación de etiquetas.

Importante
  • El nombre del campo de entrada debe coincidir con la expresión regular [a-zA-Z_][a-zA-Z0-9_]*. De lo contrario, la etiqueta del punto de serie temporal generado no incluirá este campo.

  • Si los tres parámetros de opción contienen el mismo campo, la prioridad es la siguiente: add_labels > del_labels > rename_labels.

Para obtener más información sobre el formato de datos de series temporales de salida, consulte Time series data (metric).

Sintaxis

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

Parámetros

Parámetro

Tipo

Obligatorio

Descripción

add_labels

Array

No

Una lista de campos de etiqueta para agregar. Se utiliza para construir nueva información de etiquetas de series temporales.

Agrega los datos sin procesar a las etiquetas del punto de serie temporal. Solo se admite el tipo VARCHAR.

Por ejemplo, si los datos sin procesar son {"host":"http://www.xxx.com", "ip":"127.0.0.1"} e introduce ["host", "ip"], se agrega |host#$#http://www.xxx.com|ip#$#127.0.0.1 a las etiquetas originales. Si las etiquetas originales ya contienen un campo host, su valor se sobrescribe.

del_labels

Array

No

Una lista de campos de etiqueta para eliminar. Se utiliza para construir nueva información de etiquetas de series temporales.

Si un nombre de campo en la entrada coincide con un nombre de campo en las etiquetas originales, el campo correspondiente se elimina de las etiquetas originales.

Por ejemplo, si el valor de la etiqueta original es host#$#http://www.xxx.com|ip#$#127.0.0.1, al introducir ["ip"] se especifica la eliminación de una etiqueta de serie temporal y se actualiza la etiqueta original a host#$#http://www.xxx.com. Si la etiqueta original contiene el campo ip, no se realiza ninguna acción.

rename_labels

Map

No

Una lista de campos de etiqueta para renombrar. Se utiliza para construir nueva información de etiquetas de series temporales.

Actualiza las etiquetas del punto de serie temporal original según la información del mapa. La clave es el nombre del campo original y el valor es el nuevo nombre del campo.

Por ejemplo, {"host":"host_new", "ip":"ip_new"} renombra "host" a "host_new" e "ip" a "ip_new". Si las etiquetas originales no contienen el campo correspondiente, no se realiza ninguna operación.

format

Bool

No

Especifica si se debe habilitar el formato automático. De forma predeterminada, esta opción está deshabilitada y se omiten los datos no válidos durante la transformación.

Si se habilita:

  • Se ordenan las __labels__.

  • Se da formato a LabelKey y LabelValue.

    • LabelKey: Debe coincidir con la expresión regular "[a-zA-Z_][a-zA-Z0-9_]". Los caracteres no válidos se reemplazan por un espacio (" ").

    • LabelValue: No puede contener caracteres como "|", "#" o "$". Si los contiene, estos caracteres se reemplazan por un guion bajo (_).

  • Se descartan las etiquetas en __labels__ que tienen una cadena vacía como LabelValue. Sin embargo, se conserva la entrada de datos.

  • Se eliminan las etiquetas duplicadas en el campo __labels__. Se conserva la etiqueta con el primer LabelValue en orden lexicográfico.

buckets

Integer

No

El valor predeterminado es 32. Establezca este parámetro en el número de shards de destino. Ajusta el rango de hash para optimizar el rendimiento de escritura del operador metric-to-metric. Este parámetro controla el número de buckets de hash, lo que afecta la distribución de datos y el rendimiento de las consultas en el metricstore.

Ejemplos

  • Ejemplo 1: Agregar una etiqueta.

    • Instrucción SPL

      * | extend qps = '10'|metric-to-metric -add_labels='["qps"]'
    • Datos de entrada

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

      __labels__:host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Ejemplo 2: Eliminar una etiqueta.

    • Instrucción SPL

      * | metric-to-metric -del_labels='["qps"]'
    • Datos de entrada

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

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Ejemplo 3: Renombrar una etiqueta.

    • Instrucción SPL

      * | metric-to-metric -rename_labels='{"host":"etl_host"}'
    • Datos de entrada

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

      __labels__:etl_host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Ejemplo 4: Formatear datos no válidos.

    • Instrucción SPL

      * | metric-to-metric -format
    • Datos de entrada

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

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