Это очень широкая проблема, но я постараюсь решить ее чисто в BigQuery.
Первое, что вам нужно, это какой-то статический рейтинг для ваших идентификаторов. Таким образом, вы можете решить проблему получения фиксированного набора идентификаторов идентификаторов. Таким образом, вы можете создать (единовременную) таблицу, которая содержит ранги для ваших идентификаторов:
bq query --nouse_legacy_sql --allow_large_results --replace \
--destination_table=dataset.ranking_table \
"select row_number() over () as rnk, id from dataset.table1"
Получив статический ranking_table
, вы можете многократно создавать свои чанки в разных диапазонах. Например (для 1 - 10):
Для table1_chunk1
:
bq query --nouse_legacy_sql --allow_large_results --replace \
--destination_table=dataset.table1_chunk1 \
"select a.* from dataset.table1 a join dataset.ranking_table b on b.id=a.id
where b.rnk between 1 and 10"
Для table1_chunk2
:
bq query --nouse_legacy_sql --allow_large_results --replace \
--destination_table=dataset.table2_chunk1 \
"select a.* from dataset.table2 a join dataset.ranking_table b on b.id=a.id
where b.rnk between 1 and 10"
И тогда вы можете приступить к экспортуданные в этих таблицах в корзину GCS, а затем локально. Я оставлю эту часть, предполагая, что вы можете понять это.
Надеюсь, это поможет.