Arrays and objects
Store and query string arrays, integer arrays, objects, object arrays, and JSON safely across warehouses.
Structured fields let a record keep repeated or nested values without converting them into display text.
Arrays
Use string_array for values such as tags or scopes and integer_array for repeated whole numbers.
{
"tags": ["security", "production"],
"ports": [443, 8443]
}
The runtime preserves supported arrays through BigQuery, ClickHouse, Snowflake, and Elasticsearch/OpenSearch adapters.
Analytics can return an array as native JSON or as joined text with a configured separator. Runtime array filters support:
| Operator | Meaning |
|---|---|
contains | The array contains one value |
not_contains | The array does not contain one value |
contains_any | At least one requested value is present |
contains_all | Every requested value is present |
Objects
An object contains one JSON key-value structure. Analytics can reference an explicit dotted path such as device.id when the underlying adapter supports the defined operation.
{
"device": {
"id": "dev_123",
"os": "linux"
}
}
Arrays of objects
object_array preserves repeated objects losslessly:
{
"hops": [
{ "ip": "192.0.2.10", "latency_ms": 12 },
{ "ip": "192.0.2.11", "latency_ms": 18 }
]
}
ReportPlane does not currently allow analytics grouping or filtering over object_array. Different warehouses use different explode/unnest semantics, and ReportPlane refuses to produce silently different results.