DataPrime 数组功能

本指南提供了用于处理数组的所有可用 IBM® Cloud Logs DataPrime 函数的术语表。

arrayContains

如果数组包含指定元素,则返回 true ;如果数组不包含该元素,则返回 false。 支持的元素类型包括 string, bool, number, interval, timestamp, regex 和 enum。

该函数是 inArray.

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

arrayContains 也可以用方法符号指定:

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

其中:

element
是要在数组中检查的元素。
array
是要搜索的数组。 数组必须包含与 element 相同类型的元素。

示例

在本例中,防火墙日志记录了被拦截的 ID。

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

通过检查 client_ip 是否包含在 blocked_ips 中,可以确定请求是否来自被屏蔽的地址。 这两种符号都可以使用。

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

结果将包括一个布尔值的新字段 (is_blocked_ip)。

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

如果数组中存在指定元素,则返回 true ;如果数组中不存在该元素,则返回 false。 支持的元素类型包括 string, bool, number, interval, timestamp, regex 和 enum。

该函数是 arrayContains.

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

inArray 也可以用方法符号指定:

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

其中:

element
是要在数组中检查的元素。
array
是要搜索的数组。 数组必须包含与 element 相同类型的元素。

示例

在此示例中,您有一个包含客户端 IP 地址的日志条目。

{
    "client_ip": "192.168.1.105"
}

您要检查 client_ip 值是否存在于被阻止的 IP 地址数组中,以便确定是否应阻止请求。 这两种符号都可以使用。

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

由于 192.168.1.105 包含在数组中,因此结果将是 true。

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