2016-06-10 4 views
2

У меня есть таблицы с той же схемой tab1 и tab1_partitioned, где последний разделен на день.Вставка BigQuery в секционированную таблицу из существующей таблицы

Я пытаюсь вставить данные в секционированной таблицы с помощью следующей команды:

bq query --allow_large_results --replace --noflatten_results --destination_table 'advertiser.development_partitioned$20160101' 'select * from advertiser.development where ymd = 20160101'; 

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

BigQuery error in query operation: Error processing job 'total-handler-133811:bqjob_r78379ac2513cb515_000001553afb7196_1': Provided Schema does not match Table 

Оба имеют точно такую ​​же схему, и я действительно дону Не понимаю, почему я получаю эту ошибку. Может кто-то пролить свет на мою проблему?

На самом деле, я бы предпочел Если BigQuery поддерживает динамическое разбиение вставку, которая поддерживается в улье, но через несколько дней поиска, кажется, указывают, что не представляется возможным: -/

ответ

3

поведение вы видите из-за как мы относимся к диспозициям писем при их использовании с табличными разделами.

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

bq query --allow_large_results --append_table --noflatten_results --destination_table 'advertiser.development_partitioned$20160101' 'select * from advertiser.development where ymd = 20160101'; 

Есть некоторые сложности, чтобы сделать его работу с --replace, но мы ищем в улучшенную схеме поддержку для таблицы разделов в это время.

Пожалуйста, дайте мне знать, если это не сработает для вас. Благодаря!

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

+0

Спасибо, ваше предложение действительно работает. Cheers – gire

+0

Дополнительная информация о динамическом разбиении: какой способ вставить существующие данные в таблицу секционированных bigquery? Наша существующая таблица в Hadoop содержит массу данных и уже разбита на разделы. – gire

+0

Если у вас есть данные в существующих таблицах с таблицей с большими точками, вы можете скопировать их в секционированную таблицу с помощью команды bq cp. Если у вас есть данные за пределами bigquery, вы можете загрузить их в таблицы BigQuery, используя загрузочное задание, которое записывает в раздел таблицы (пример: таблица $ 20160615) в качестве адресата. Это гарантирует, что данные попадут в раздел по вашему выбору. https://cloud.google.com/bigquery/docs/creating-partitioned-tables#restating_data_in_a_partition –

Смежные вопросы