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
}