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
}