Копировать таблицу в BigQuery без добавления новых полей в таблицу назначения - PullRequest
0 голосов
/ 22 января 2020

Итак, у меня есть таблица (скажем, tableA) в BigQuery, и я хочу ее копию (tableB), но исключая некоторые поля из оригинала. Я попытался просто поместить схему в таблицу B только с необходимыми полями (я исключил поля, которые не хотел копировать), а затем вывел ошибку Provided Schema does not match Table ... cannot add fields ... Затем я добавил метаданные, как в примере в ссылка на документацию BigQuery nodejs:

const metadata = { createDisposition: 'CREATE_NEVER', writeDisposition: 'WRITE_APPEND' }; tableA.copy(tableB, metadata, (err, apiResponse) => {});

, но она закончилась копированием всех полей и созданием полей, которые я даже не хочу копировать. Итак, мне интересно, знает ли кто-то опцию, запрещающую BigQuery копировать и создавать поля, или я должен загрузить все данные в tableA, а затем снова вставить их в tableB

Ответы [ 2 ]

1 голос
/ 23 января 2020

Отправьте запрос с nodejs, выберите более простой снизу

CREATE TABLE table_b AS
SELECT * EXCEPT(col1_you_dont_want, col2_you_dont_want)
FROM table_a

Или

CREATE TABLE table_b AS
SELECT col1_you_do_want, col2_you_do_want
FROM table_a
1 голос
/ 22 января 2020

Как вы можете видеть здесь , вы можете написать запрос в виде таблицы в BigQuery В вашем случае вы можете использовать BigQuery CLI, чтобы создать запрос, выбирая все, кроме полей, которые вы не указали. не хочу копировать. Например:

bq query \
--destination_table <destination_dataset.destination_table> \
--use_legacy_sql=false \
'SELECT
  <fields_that_you_want>
FROM
  <your_dataset.your_table>`

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

В этой ссылке вы также можете найти примеры того, как это сделать в некоторых языках программирования и в BigQuery API

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

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