Skip to main content

Array and map functions

ARRAY

Creates an array from values.
SELECT ARRAY('a', 'b', 'c') -- ['a', 'b', 'c']
SELECT ARRAY(1, 2, 3) AS numbers

SIZE

Returns the number of elements in an array.
SELECT SIZE(tags) AS tag_count FROM company_data."123"

ELEMENT_AT

Returns an element at a specific index (1-based) or map key.
-- Array (1-based index)
SELECT ELEMENT_AT(ARRAY('a', 'b', 'c'), 2) -- 'b'

-- Map
SELECT ELEMENT_AT(properties, 'color') AS color FROM company_data."123"

ARRAY_FLATTEN

Flattens nested arrays into a single array.
SELECT ARRAY_FLATTEN(ARRAY(ARRAY(1, 2), ARRAY(3, 4))) -- [1, 2, 3, 4]

ARRAY_SORT

Sorts array elements.
SELECT ARRAY_SORT(ARRAY(3, 1, 2)) -- [1, 2, 3]

EXPLODE

Converts an array into multiple rows (use with LATERAL JOIN).
SELECT t.user_id, tag
FROM company_data."123" t
LATERAL JOIN EXPLODE(t.tags) AS tag

UNNEST

Expands an array into rows (alternative to EXPLODE).
SELECT t.user_id, element
FROM company_data."123" t, UNNEST(t.tags) AS element