Как генерировать невероятно большие массивы в SQL - PullRequest
0 голосов
/ 03 июня 2019

При попытке создать большой массив с помощью следующей команды

GENERATE_ARRAY(1467331200, 1530403201, 15)

Я получаю следующую ошибку:

google.api_core.exceptions.BadRequest: 400 GENERATE_ARRAY(1467331200, 1530403201, 15) produced too many elements

Есть ли способ создать массив указанного размера?

1 Ответ

2 голосов
/ 03 июня 2019

Существует ограничение на количество элементов результата до 1048575.

Test: bq query --dry_run --nouse_legacy_sq "[replace query below]"
Query: select GENERATE_ARRAY(1, 1048575) as test_array;
Output: Query successfully validated. Assuming the tables are not modified, running this query will process 0 bytes of data.

Query: select GENERATE_ARRAY(1, 1048576) as test_arr;
Output: GENERATE_ARRAY(1, 1048576, 1) produced too many elements

В документации нет упоминания об этом ограничении, поэтому я предлагаю вам либо отправить документациюоставить отзыв на странице или подать запрос на добавление функции, чтобы увеличить лимит или, если возможно, удалить лимит.

Возможный обходной путь - конкатенация массива.Пример: SELECT ARRAY_CONCAT(GENERATE_ARRAY(1,1048575), GENERATE_ARRAY(1,1048575))...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...