DataPrime fonctions du tableau

Ce guide fournit un glossaire de toutes les fonctions disponibles sur IBM® Cloud Logs DataPrime pour le traitement des tableaux.

arrayContains

Renvoie true si un tableau contient l'élément spécifié, ou false si le tableau ne contient pas l'élément. Les types d'éléments pris en charge sont les suivants : string, bool, number, interval, timestamp, regex et enum.

Cette fonction est l'inverse de inArray.

arrayContains(array: array<T>, element: T): bool

arrayContains peut également être spécifiée en notation de méthode :

(array: array<T>).arrayContains(element: T): bool

Où :

element
Est l'élément à vérifier dans le tableau.
array
Est le tableau à rechercher. Le tableau doit contenir des éléments du même type que element.

Exemple

Dans cet exemple, vous avez un journal de pare-feu qui enregistre les identifiants bloqués.

{
    "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"
    ]
}

En vérifiant si client_ip est contenu dans blocked_ips, vous pouvez déterminer si la demande provient d'une adresse bloquée. L'une ou l'autre de ces notations peut être utilisée.

create is_blocked_ip from arrayContains(blocked_ips, client_ip)
create is_blocked_ip from blocked_ips.arrayContains(client_ip)

Le résultat comprendra un nouveau champ (is_blocked_ip) avec une valeur booléenne.

{
    "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

Renvoie true si l'élément spécifié existe dans le tableau, ou false si l'élément n'existe pas dans le tableau. Les types d'éléments pris en charge sont les suivants : string, bool, number, interval, timestamp, regex et enum.

Cette fonction est l'inverse de arrayContains.

inArray(element: T, array: array<T>): bool

inArray peut également être spécifiée en notation de méthode :

(element: T).inArray(array: array<T>): bool

Où :

element
Est l'élément à vérifier dans le tableau.
array
Est le tableau à rechercher. Le tableau doit contenir des éléments du même type que element.

Exemple

Dans cet exemple, vous avez une entrée de journal avec une adresse IP de client.

{
    "client_ip": "192.168.1.105"
}

Vous voulez vérifier si la valeur client_ip existe dans un tableau d'adresses IP bloquées afin d'identifier si une requête doit être bloquée. L'une ou l'autre de ces notations peut être utilisée.

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'])

Le résultat sera true puisque 192.168.1.105 est inclus dans le tableau.

{
    "client_ip": "192.168.1.105",
    "is_blocked": true
}