Бизнес нашей команды требует повторной выборки из всего набора данных.Размер выборки каждый раз варьируется от 80 миллионов до 100 тысяч ...
Ниже приведен пример для BigQuery Standard SQL, в котором используется таблица с 12+ миллиардами строк, поэтому он также должен работать для вас: o)
Шаблон для запроса:
#standardSQL
SELECT start_position
FROM `bigquery-public-data.genomics_rice.Rice3K_DeepVariant_Os_Nipponbare_Reference_IRGSP_1_0`
WHERE MOD(CAST(<total number of rows in table> * RAND() AS INT64), <ratio of sample>) = 1
Формально = CAST (/ AS INT64)
И вместо 1
в = 1
- может быть любое целое число от 0 до <ratio of sample> - 1
Таким образом, для выборки 100K - вы можете использовать
#standardSQL
SELECT start_position
FROM `bigquery-public-data.genomics_rice.Rice3K_DeepVariant_Os_Nipponbare_Reference_IRGSP_1_0`
WHERE MOD(CAST(12186710727 * RAND() AS INT64), 121867) = 1
Выше возвращено 99 770 строк выборки за 8 секунд
А для выборки 80M - вы можете использовать
#standardSQL
SELECT start_position
FROM `bigquery-public-data.genomics_rice.Rice3K_DeepVariant_Os_Nipponbare_Reference_IRGSP_1_0`
WHERE MOD(CAST(12186710727 * RAND() AS INT64), 152) = 1
вернуло 80 175 660 строк выборки за 13 секунд