Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las transformaciones de Azure Monitor permiten ejecutar una consulta KQL en los datos entrantes de Azure Monitor para filtrar o modificar los datos entrantes antes de almacenarlos en un área de trabajo de Log Analytics. En este artículo, se detallan las consideraciones sobre KQL y las características admitidas en las consultas de transformación, además de los operadores especiales que solo están disponibles en las transformaciones.
Puesto que las transformaciones se aplican a cada registro individualmente, no pueden usar ningún operador de KQL que actúe en varios registros. Solo se admiten los operadores que adoptan una sola fila como entrada y que no devuelven más de una fila. Por ejemplo, no se admite summarize, ya que resume varios registros.
Solo se admiten en las transformaciones los operadores enumerados en este artículo.
Note
En el caso de las transformaciones de varias fases (versión preliminar), las características de KQL descritas en este artículo se aplican al transform.KQL procesador y a la transformKql propiedad en flujos de datos. Otros tipos de procesador, como filter.Basic, parse.JsonPathy aggregate.Basic usan la configuración JSON declarativa en lugar de KQL. Consulte Estructura dcR: tipos de procesador para obtener más información.
Consideraciones especiales
Operador Parse
El operador de análisis de una transformación está limitado a 10 columnas por instrucción por motivos de rendimiento. Si la transformación requiere parsear más de 10 columnas, divida la transformación en múltiples instrucciones, tal y como se describe en Dividir comandos de parseo grandes.
Control de datos dinámicos
Tenga en cuenta la siguiente entrada con datos dinámicos:
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
Para acceder a las propiedades de AdditionalContext, defínala como una columna con tipo dinámico en el flujo de entrada:
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
El contenido de la columna AdditionalContext ahora se puede analizar y usar en la transformación de KQL:
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
Literales dinámicos
Use la función parse_json para controlar literales dinámicos.
Por ejemplo, las siguientes consultas proporcionan la misma funcionalidad:
print d=dynamic({"a":123, "b":"hello", "c":[1,2,3], "d":{}})
print d=parse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')
Funciones especiales
Las siguientes funciones solo están disponibles en las transformaciones. No se pueden usar en otras consultas de registro.
parse_cef_dictionary
La parse_cef_dictionary función analiza la propiedad Extension de un mensaje CEF en un objeto de clave/valor dinámico. Punto y coma es un carácter reservado que se debe reemplazar antes de pasar el mensaje sin formato al método , como se muestra en el ejemplo.
| extend cefMessage=iff(cefMessage contains_cs ";", replace(";", " ", cefMessage), cefMessage)
| extend parsedCefDictionaryMessage =parse_cef_dictionary(cefMessage)
| extend parsecefDictionaryExtension = parsedCefDictionaryMessage["Extension"]
| project TimeGenerated, cefMessage, parsecefDictionaryExtension
geo_location
La geo_location función devuelve una ubicación geográfica aproximada para una dirección IP (se admiten IPv4 e IPv6), incluidos los atributos siguientes:
- País
- Región
- Estado
- Ciudad
- Latitud
- Longitud
| extend GeoLocation = geo_location("1.0.0.5")
Importante
Esta función llama a un servicio de geolocalización IP externo, que podría agregar latencia de ingesta de datos. Úsela con moderación: no más de unas pocas veces por transformación.
Instrucciones admitidas
Instrucción LET
La parte situada a la derecha de let puede ser una expresión escalar, una expresión tabular o una función definida por el usuario. Solo se admiten funciones definidas por el usuario con argumentos escalares.
Instrucciones de expresiones tabulares
Los únicos orígenes de datos admitidos para la instrucción KQL en una transformación son:
source, que representa los datos de origen. Por ejemplo:
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, MessageOperador
print, que siempre genera una sola fila. Por ejemplo:print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
Operadores tabulares compatibles
extendprojectprintwhereparseproject-awayproject-renamedatatable-
columnifexists(usecolumnifexistsen lugar decolumn_ifexists)
Operadores escalares admitidos
Se admiten todos los operadores numéricos.
Se admiten todos los operadores aritméticos Datetime y Timespan.
Se admiten los siguientes operadores de cadena.
==!==~!~contains!containscontains_cs!contains_cshas!hashas_cs!has_csstartswith!startswithstartswith_cs!startswith_csendswith!endswithendswith_cs!endswith_csmatches regexin!in
Se admiten los siguientes operadores de bit a bit.
binary_and()binary_or()binary_xor()binary_not()binary_shift_left()binary_shift_right()
Funciones escalares
Funciones bit a bit
Funciones de conversión
Funciones DateTime y TimeSpan
Funciones dinámicas y de matriz
Funciones matemáticas
Funciones condicionales
Funciones de cadena
-
base64_encodestring(usebase64_encodestringen lugar debase64_encode_tostring) -
base64_decodestring(usebase64_decodestringen lugar debase64_decode_tostring) countofextractextract_allindexofisemptyisnotemptyparse_json-
replace(usereplaceen lugar dereplace_string) splitstrcatstrcat_delimstrlensubstringtolowertoupperhash_sha256
-
Funciones de tipo
Comillas de identificador
Use comillas de identificador según sea necesario.
Contenido relacionado
- Cree una regla de recopilación de datos y una asociación a ella desde una máquina virtual mediante el agente de Azure Monitor.