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
}