Экспорт двух таблиц из BigQuery в CSV на основе первичного ключа - PullRequest
0 голосов
/ 16 октября 2019

У меня есть две таблицы в таблицах BigQuery, которые агрегируются и обрабатываются, которые могут иметь до 2 миллионов и 10 миллионов строк соответственно.

У них очень разные столбцы, но у каждого одинаковый первичный ключ (IDXX). В таблице 1 есть одна строка для каждого IDXX, а в таблице 2 может быть до 10 строк с IDXX.

Я бы хотел экспортировать эти две таблицы из BigQuery в соответствующие куски. Например:

  • table1_chunk1.csv: должен иметь IDXX: 1 - 10 (10 строк)
  • table2_chunk1.csv: должен иметь IDXX: 1 - 10 (могможет быть до 100 строк)

  • table1_chunk2.csv: должен иметь IDXX: 11 - 20 (10 строк)

  • table2_chunk2.csv: должен иметь IDXX:11 - 20 (может быть до 100 строк)

Каков наилучший способ сделать это? Использовать облачный поток данных? Делать это в Bash?

1 Ответ

0 голосов
/ 16 октября 2019

Это очень широкая проблема, но я постараюсь решить ее чисто в 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, а затем локально. Я оставлю эту часть, предполагая, что вы можете понять это.

Надеюсь, это поможет.

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