Este tema describe cómo utilizar las instrucciones de operaciones de campo y proporciona ejemplos.
project
Esta instrucción conserva los campos que coinciden con un patrón determinado y cambia el nombre de los campos especificados. Durante la ejecución, primero se procesan todas las expresiones de conservación de campos y posteriormente las expresiones de cambio de nombre.
Los campos de tiempo predeterminados __time__ y __time_ns_part__ están reservados y no se pueden renombrar ni sobrescribir. Para obtener más información, consulte Time field.
Sintaxis
| project -wildcard <field-pattern>, <output>=<field>, ...
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
wildcard |
Bool |
No |
Especifica si se debe habilitar la coincidencia de patrones con comodines. El valor predeterminado es la coincidencia exacta de campos. Agregue este parámetro para habilitar la coincidencia de patrones con comodines. |
|
field-pattern |
FieldPattern |
Sí |
El nombre del campo que se va a conservar, o una combinación de nombre de campo y caracteres comodín para procesar todos los campos coincidentes. |
|
output |
Field |
Sí |
El nuevo nombre para el campo. No se puede cambiar el nombre de varios campos al mismo campo de destino. Importante
Si el nuevo campo tiene el mismo nombre que un campo en los datos de entrada, consulte Retaining and Overwriting Old and New Values para conocer la política de asignación de valores. |
|
field |
Field |
Sí |
El nombre original del campo al que se le cambiará el nombre.
|
Ejemplos
-
Ejemplo 1: Conservar campos específicos.
* | project level, err_msg -
Ejemplo 2: Cambiar el nombre de los campos.
* | project log_level=level, err_msg -
Ejemplo 3: Conservar el campo que coincide exactamente con
__tag__:*.* | project "__tag__:*"
project-away
Esta instrucción elimina los campos que coinciden con un patrón determinado y conserva todos los demás campos.
Esta instrucción conserva los campos de tiempo __time__ y __time_ns_part__ de forma predeterminada. Para obtener más información, consulte Time fields.
Sintaxis
| project-away -wildcard <field-pattern>, ...
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
wildcard |
Bool |
No |
Especifica si se debe habilitar la coincidencia de patrones con comodines. El valor predeterminado es la coincidencia exacta de campos. Agregue este parámetro para habilitar la coincidencia de patrones con comodines. |
|
field-pattern |
FieldPattern |
Sí |
El nombre del campo que se va a eliminar, o una combinación de nombre de campo y caracteres comodín para procesar todos los campos coincidentes. |
project-rename
Esta instrucción cambia el nombre de los campos especificados y conserva todos los demás campos.
Los campos de tiempo predeterminados __time__ y __time_ns_part__ están reservados y no se pueden renombrar ni sobrescribir. Para obtener más información, consulte Time fields.
Sintaxis
| project-rename <output>=<field>, ...
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
output |
Field |
Sí |
El nuevo nombre para el campo. No se puede cambiar el nombre de varios campos al mismo campo de destino. Importante
Si el nuevo campo tiene el mismo nombre que un campo en los datos de entrada, consulte Retention and Overwriting of Old and New Values para conocer la política de asignación de valores. |
|
field |
Field |
Sí |
El nombre original del campo al que se le cambiará el nombre.
|
Ejemplo
Cambie el nombre de los campos especificados.
* | project-rename log_level=level, log_err_msg=err_msg
expand-values
Esta instrucción expande la primera capa de un objeto JSON en un campo especificado para generar varios resultados.
El tipo de datos de los campos de salida es VARCHAR. Si un campo de resultado tiene el mismo nombre que un campo de entrada, consulte Value Retention and Overwriting para obtener información sobre la política de manejo de valores.
No se pueden realizar operaciones en los campos de tiempo
__time__o__time_ns_part__. Para obtener más información, consulte Time fields.Esta instrucción admite la transformación de datos en la nueva versión. Para conocer los diferentes escenarios de uso de SPL, consulte General Reference.
Sintaxis
| expand-values -path=<path> -limit=<limit> -keep <field> as <output>
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
path |
JSONPath |
No |
Especifica la ruta JSON dentro del contenido del campo para localizar el contenido que se debe expandir. El valor predeterminado está vacío, lo que significa que todo el contenido del campo especificado se expande directamente. |
|
limit |
Integer |
No |
El número máximo de entradas expandidas a partir de cada entrada de datos sin procesar. Valores válidos: 0 y de 1 a 10. Valor predeterminado: 10. Nota
El tamaño acumulado de los valores expandidos para un solo campo no puede superar los 50 MB. Cuando limit se establece entre 1 y 10, el número de filas expandidas está acotado por este valor. Nota
Cuando limit se establece en 0, el número de filas expandidas por campo no tiene restricciones. Sin embargo, el total de datos devueltos en todos los campos y filas tiene un límite aproximado de 50 MB. Si se supera este límite, solo se devuelven los resultados parciales ya procesados. Los valores de los campos individuales no se truncan. Nota
El valor que activa el límite se incluye en el resultado, por lo que los datos devueltos reales pueden superar ligeramente los 50 MB. El truncamiento debido al límite es silencioso y no genera ningún error ni advertencia. |
|
keep |
Bool |
No |
Especifica si se debe conservar el campo original después de la expansión. De forma predeterminada, el campo original no se conserva. Agregue este parámetro para conservar el campo original. |
|
field |
Field |
Sí |
El nombre del campo original que se va a expandir. El tipo compatible es |
|
output |
Field |
No |
El nombre del campo de destino para la expansión. Si no se especifica, el resultado se envía al campo de entrada de forma predeterminada. La lógica de expansión para el contenido original es la siguiente: Arreglo JSON: Expande cada elemento del arreglo. Diccionario JSON: Expande cada par clave-valor del diccionario. Otros tipos JSON: Devuelve el valor inicial. JSON no válido: Devuelve |
Ejemplos
-
Ejemplo 1: Expandir un arreglo para generar varios resultados de datos.
-
Instrucción SPL
* | expand-values y -
Datos de entrada
x: 'abc' y: '[0,1,2]' -
Datos de salida
# Entry 1 x: 'abc' y: '0' # Entry 2 x: 'abc' y: '1' # Entry 3 x: 'abc' y: '2'
-
-
Ejemplo 2: Expandir un diccionario para generar varios resultados de datos.
-
Instrucción SPL
* | expand-values y -
Datos de entrada
x: 'abc' y: '{"a": 1, "b": 2}' -
Datos de salida
# Entry 1 x: 'abc' y: '{"a": 1}' # Entry 2 x: 'abc' y: '{"b": 2}'
-
-
Ejemplo 3: Expandir el contenido de una ruta JSON especificada y enviarlo a un nuevo campo.
-
Instrucción SPL
* | expand-values -path='$.body' -keep content as body -
Datos de entrada
content: '{"body": [0, {"a": 1, "b": 2}]}' -
Datos de salida
# Entry 1 content: '{"body": [1, 2]}' body: '0' # Entry 2 content: '{"body": [1, 2]}' body: '{"a": 1, "b": 2}'
-