Okay, it was easier than I thought it would be. One can just use ARRAY in conjunction with UNNEST in the SELECT statement. Basically it looks like this

ARRAY(SELECT transform(x)
        FROM UNNEST(array) AS x WITH OFFSET AS y ORDER BY y) AS transformed

So to complete the example from above

WITH
  races_with_struct AS (
  SELECT
    "800M" AS race,
    [STRUCT("Rudisha" AS name,
      [23.4, 26.3, 26.4, 26.1] AS splits),
    STRUCT("Makhloufi" AS name,
      [24.5, 25.4, 26.6, 26.1] AS splits),
    STRUCT("Lewandowski" AS name,
      [25.0, 25.7, 26.3, 27.2] AS splits),
    STRUCT("Nathan" AS name,
      ARRAY<FLOAT64>[] AS splits),
    STRUCT("David" AS name,
      NULL AS splits)] AS participants),
  races AS (
  SELECT
    race,
    participant.name AS name,
    participant.splits AS splits
  FROM
    races_with_struct r
  CROSS JOIN
    UNNEST(r.participants) AS participant)
SELECT
  race,
  name,
  splits,
  ARRAY(SELECT x + 2
        FROM UNNEST(splits) AS x WITH OFFSET AS y ORDER BY y) AS transformed
FROM
  races
Answer from p13rr0m on Stack Overflow
๐ŸŒ
Google
docs.cloud.google.com โ€บ bigquery โ€บ array functions
Array functions | BigQuery | Google Cloud Documentation
Returns a concatenation of the elements in array_expression as a STRING or BYTES value. The value for array_expression can either be an array of STRING or BYTES data type. If the null_text parameter is used, the function replaces any NULL values ...
๐ŸŒ
Owox
owox.com โ€บ blog โ€บ articles โ€บ bigquery-array-functions
BigQuery Array Functions: 2025 Guide to Syntax, Usage & Examples
January 16, 2026 - The ARRAY_LENGTH function is a straightforward and efficient way to find out how many elements are in an array in BigQuery. This function is handy for working with arrays with different numbers of elements and helps your queries adjust automatically ...
People also ask

How do you create an array from rows in BigQuery?
You can create an array from rows in BigQuery using the ARRAY_AGG() function. This function combines values from multiple rows into a single array.
๐ŸŒ
hevodata.com
hevodata.com โ€บ home โ€บ learn โ€บ bigquery
BigQuery Array Functions and Examples Simplified | Hevo Data
What is the difference between array and STRUCT in BigQuery?
The main difference is that an array stores multiple values of the same type (like 
numbers or strings), while a STRUCT can hold different types of data in a single field. An array is like a list, while a STRUCT is like a record containing various fields.
๐ŸŒ
hevodata.com
hevodata.com โ€บ home โ€บ learn โ€บ bigquery
BigQuery Array Functions and Examples Simplified | Hevo Data
๐ŸŒ
Google
docs.cloud.google.com โ€บ bigquery โ€บ work with arrays
Work with arrays | BigQuery | Google Cloud Documentation
To learn more about the ARRAY data type, including NULL handling, see Array type. With GoogleSQL, you can construct array literals, build arrays from subqueries using the ARRAY function, and aggregate values into an array using the ARRAY_AGG ...
๐ŸŒ
Hevo
hevodata.com โ€บ home โ€บ learn โ€บ bigquery
BigQuery Array Functions and Examples Simplified | Hevo Data
January 9, 2026 - This article will delve into BigQuery Arrays and Structs, exploring key functions like ARRAY_LENGTH(), ARRAY_CONCAT(), and GENERATE_ARRAY, with examples to solidify your knowledge.
๐ŸŒ
Medium
medium.com โ€บ codex โ€บ google-launched-new-bigquery-array-functions-4d2cd96e3740
Google launched new BigQuery Array Functions | by Christianlauer | CodeX | Medium
June 16, 2025 - Google launched new BigQuery Array Functions Three New Functions: Array_First, Array_Last and Array_Slice Google just announced that the three following GoogleSQL and therefor also BigQuery functions โ€ฆ
Find elsewhere
๐ŸŒ
TutorialsPoint
tutorialspoint.com โ€บ bigquery โ€บ bigquery-array-data-type.htm
BigQuery - ARRAY Data Type
The UNNEST() function is used in the FROM clause with a comma. For context: The comma represents an implicit CROSS JOIN. To properly access this ARRAY, use the following query โˆ’
๐ŸŒ
Learn BigQuery!
scosco.github.io โ€บ learn-bigquery โ€บ foundation โ€บ arrays.html
Arrays | Learn BigQuery!
WITH t AS ( SELECT 1 AS id, [1,2,3] AS arr UNION ALL SELECT 2 AS id, [4,5,6] AS arr UNION ALL SELECT 3 AS id, [42] AS arr ) SELECT ARRAY_CONCAT_AGG( arr) as concArr FROM t ยท The aggregation function has some nice features that might come in handy:
๐ŸŒ
Orchestra
getorchestra.io โ€บ guides โ€บ bigquery-sql-functions-generate-date-array
BigQuery SQL Functions: GENERATE_DATE_ARRAY | Orchestra
April 8, 2024 - One such function that can prove to be incredibly useful is GENERATE_DATE_ARRAY. This function allows you to generate an array of dates within a specified range, enabling you to manipulate and analyze time-based data efficiently.
๐ŸŒ
Google Cloud
cloud.google.com โ€บ blog โ€บ products โ€บ data-analytics โ€บ bigquery-advanced-aggregation-functions
BigQuery advanced aggregation functions | Google Cloud Blog
July 9, 2025 - GROUP BY STRUCT, ARRAY (GA) STRUCT and ARRAY are among the most commonly used data types in BigQuery today. Working with STRUCT and ARRAY data in BigQuery just got easier! You can now use GROUP BY and SELECT DISTINCT for these semi-structured data types directly.
๐ŸŒ
Medium
medium.com โ€บ @thomas.ellyatt โ€บ mastering-arrays-in-bigquery-2024-e62612b15c30
A Complete Guide To Arrays in BigQuery (2024) | Medium
February 13, 2024 - In this article, I will walkthrough the ins and outs of the array datatype and demonstrate how it can save you query time and money.
๐ŸŒ
CastorDoc
castordoc.com โ€บ how-to โ€บ how-to-use-array-contains-in-bigquery
How to use array contains in BigQuery?
In this article, we explore how to effectively utilize the "array contains" function in BigQuery. This feature enhances your querying capabilities, making it easier to search arrays within your dataset.
๐ŸŒ
Towards Data Science
towardsdatascience.com โ€บ home โ€บ latest โ€บ 6 bigquery sql functions every user should know
6 BigQuery SQL Functions Every User Should Know | Towards Data Science
January 19, 2025 - Since then I discovered 6 more useful SQL functions I wished I had known earlier and that Iโ€™d like to share today. The GENERATE_ARRAY function allows you to create an array with a start and ending ...
๐ŸŒ
Datawise
datawise.dev โ€บ accessing-array-elements-in-bigquery
BigQuery Array Access: OFFSET, ORDINAL, and SAFE Variants
March 2, 2026 - Access BigQuery arrays with OFFSET (0-based) or ORDINAL (1-based). Use SAFE_OFFSET and SAFE_ORDINAL to return NULL instead of erroring on out-of-bounds.
๐ŸŒ
Google Cloud
cloud.google.com โ€บ bigquery โ€บ array parameters
Array parameters | BigQuery | Google Cloud Documentation
// Run a query using array query parameters // Import the Google Cloud client library const {BigQuery} = require('@google-cloud/bigquery'); const bigquery = new BigQuery(); async function queryParamsArrays() { // The SQL query to run const sqlQuery = `SELECT name, sum(number) as count FROM \`bigquery-public-data.usa_names.usa_1910_2013\` WHERE gender = @gender AND state IN UNNEST(@states) GROUP BY name ORDER BY count DESC LIMIT 10;`; const options = { query: sqlQuery, // Location must match that of the dataset(s) referenced in the query.
๐ŸŒ
Tempered
tempered.works โ€บ posts โ€บ 2024 โ€บ 07 โ€บ 31 โ€บ map-over-an-array-in-bigquery
Map over an array in BigQuery - Tempered Works Ltd.
July 31, 2024 - These techniques give me a lot ... I'd use to process ten rows to process ten billion rows in seconds. BigQuery supports array-typed columns but doesn't provide an obvious map or a filter function....