DataPrime funciones de matriz
Esta guía proporciona un glosario de todas las funciones disponibles en IBM® Cloud Logs DataPrime para el procesamiento de matrices.
arrayContains
Devuelve true si una matriz incluye el elemento especificado, o false si la matriz no incluye el elemento. Los tipos de elementos admitidos son string, bool, number, interval,
timestamp, regex y enum.
Esta función es la inversa de inArray.
arrayContains(array: array<T>, element: T): bool
arrayContains también puede especificarse en notación de método:
(array: array<T>).arrayContains(element: T): bool
Donde:
element- Es el elemento a comprobar en el array.
array- Es el array a buscar. La matriz debe contener elementos del mismo tipo que
element.
Ejemplo
En este ejemplo tiene un registro de cortafuegos que registra los ID bloqueados.
{
"action": "BLOCK",
"client_ip": "134.56.32.98",
"blocked_ips": [
"134.56.32.91",
"134.56.32.93",
"134.56.32.90",
"134.56.32.105"
]
}
Comprobando si client_ip está contenido en blocked_ips se puede determinar si la petición procedía de una dirección bloqueada. Se puede utilizar cualquiera de estas notaciones.
create is_blocked_ip from arrayContains(blocked_ips, client_ip)
create is_blocked_ip from blocked_ips.arrayContains(client_ip)
El resultado incluirá un nuevo campo (is_blocked_ip) con un valor booleano.
{
"action": "BLOCK",
"client_ip": "134.56.32.98",
"blocked_ips": [
"134.56.32.91",
"134.56.32.93",
"134.56.32.90",
"134.56.32.105"
],
"is_blocked_ip": false
}
inArray
Devuelve true si el elemento especificado existe en la matriz, o false si el elemento no existe en la matriz. Los tipos de elementos admitidos son string, bool, number, interval,
timestamp, regex y enum.
Esta función es la inversa de arrayContains.
inArray(element: T, array: array<T>): bool
inArray también puede especificarse en notación de método:
(element: T).inArray(array: array<T>): bool
Donde:
element- Es el elemento a comprobar en el array.
array- Es el array a buscar. La matriz debe contener elementos del mismo tipo que
element.
Ejemplo
En este ejemplo tiene una entrada de registro con una dirección IP de cliente.
{
"client_ip": "192.168.1.105"
}
Quiere comprobar si el valor client_ip existe en un array de direcciones IP bloqueadas para poder identificar si una petición debe ser bloqueada. Se puede utilizar cualquiera de estas notaciones.
filter inArray(client_ip, ['192.168.1.105', '192.168.1.112', '192.168.1.32'])
filter client_ip.inArray(['192.168.1.105', '192.168.1.112', '192.168.1.32'])
El resultado será true ya que 192.168.1.105 está incluido en el array.
{
"client_ip": "192.168.1.105",
"is_blocked": true
}