Каков наиболее эффективный способ случайной выборки с заменой в BigQuery? - PullRequest
0 голосов
/ 27 февраля 2020

Ответы на этот вопрос объясняют, как производить случайную выборку из таблицы BigQuery. Есть ли эффективный способ сделать это с заменой ?

В качестве примера, предположим, у меня есть таблица с 1M строк, и я буду sh, чтобы выбрать 100K независимо выбранных случайных строк.

1 Ответ

2 голосов
/ 27 февраля 2020

Нашли изящное решение:

  • Индексируйте строки таблицы
  • Создайте фиктивную таблицу со 100К случайными целыми числами от 1 до 1М
  • Внутреннее присоединение к таблицы по индексу = случайное значение

код:

# randomly sample 100K rows from `table` with replacement
with large_table as (select *, row_number() over() as rk from `table`),
num_elements as (select count(1) as n from large_table),
dummy_table as (select 1 + cast(rand() * (select n - 1 from num_elements) as int64) as i from unnest(generate_array(1, 100000)))
select * from dummy_table
inner join large_table on dummy_table.i = large_table.rk
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...