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
}