Есть ли другой способ решить мою проблему внутри BigQuery?
Если ваш вариант использования позволяет вам немного ослабить требования, вместо
The second column to be 25,000 id concatenated into one column
это будет
The second column to be about (close to) 25,000 id concatenated into one column
В этом случае ниже (для BigQuery Standard SQL) может / должно работать хорошо для вас
#standardSQL
SELECT
GENERATE_UUID() AS batch_id,
COUNT(1) batch_size,
STRING_AGG(id) AS ids_str
FROM (
SELECT
CAST((cnt * RAND()) / 25000 + 0.5 AS INT64) AS batch_count,
CAST(id AS STRING) AS id
FROM `project.dataset.table`
CROSS JOIN (SELECT COUNT(1) cnt FROM `project.dataset.table`)
)
GROUP BY batch_count
это должно дать результат как показано ниже
![enter image description here](https://i.stack.imgur.com/7VtYi.png)
Как вы можете видеть здесь, число идентификаторов в каждой строке не точно 25 000, но достаточно близко к этому
Надеюсь, что это может быть вариант для вас