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.
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.
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 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 |
|
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, Importante
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, Importante
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 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
rtyqpsal 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
rtyqpsal formato de datos de series temporales, utilizar el campohostcomo 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
rtyqpsal formato de datos de series temporales. Reemplace los nombres de los campos pormax_rtytotal_qps, y utilice el campohostcomo 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
rtyqpsal 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.
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 |
|
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 |
|
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, |
|
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:
|
|
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
-