Биллинг - копирование исторических журналов c BQ из старой таблицы в новую. Google Cloud Platfom - PullRequest
0 голосов
/ 07 января 2020

Я включил биллинг BQ в Project1, и все работает нормально.

Теперь мне нужно переместить биллинг BQ в Project2 со всеми данными истории в один набор данных и одну таблицу в новом Project2.

Что я пробовал.

В моей тестовой подписке ProjectX я включил биллинг BQ и начал сбор данных. Затем я попытался вставить старые данные из Project1 в ProjectX, но безуспешно. В таблице счетов BQ используются вложенные таблицы. Я не уверен, как вставить старые данные счетов в новые счета.

Возможно ли это вообще? Есть ли другой способ перемещения данных выставления счетов BQ между проектами?

Спасибо

Обновление: проекты находятся в разных регионах (европа-запад2 и ЕС)

Ответы [ 3 ]

0 голосов
/ 10 января 2020

Чтобы переместить ваши платежные данные в новый проект, сначала вам нужно переместить данные в тот же регион, что и ваш новый набор данных. Вы можете следовать этому руководству , чтобы выполнить sh этого. Обратите внимание, что в таблице счетов есть вложенные данные; поэтому вы должны использовать формат файла, который поддерживает такие данные, как JSON или форматы Avro . Кроме того, примите во внимание соображения местоположения , поскольку вы не можете напрямую копировать наборы данных между различными регионами.

Получив данные в облачном хранилище Google, вы можете загрузить их в новую таблицу расчетов, следуя документации " Загрузка данных в многораздельную таблицу ", пожалуйста, будьте осторожны на этом этапе. так как есть 2 варианта: "WRITE_APPEND" и "WRITE_TRUNCATE" . Тип загрузки будет зависеть от того, является ли раздел новым или уже содержит данные.

Другой вариант - использование бета-функции " Копирование наборов данных "; однако не все регионы в настоящее время поддерживаются для копирования наборов данных. Вы можете создавать копии набора данных в регионах, где в настоящее время поддерживается служба передачи данных BigQuery . Используя функцию «Копирование наборов данных», я рекомендую вам загрузить данные в отдельном наборе данных в новый проект (в том же месте, где находится ваш целевой набор данных), а затем добавить данные в целевой набор данных с помощью заданий запросов. .

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

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

На всякий случай, если кто-то еще придет к тому же ребусу:

  • GCP, журналы BQ, где перенаправляются в «выставление счетов» в регионе we2.

  • Был создан новый проект "BillingNew" (регион ЕС), который был запрошен в журналы c BQ для этого проекта. Также перенесите исторические данные.

Решение:

  1. Создать новый набор данных в «BillingNew». Перенести все проекты туда. Проверьте, убедитесь, что текущие журналы идут туда.

  2. Скопируйте набор данных из старого "биллинга" в новый проект "BillingNew", используя "перевод задания" (в качестве примера приведен ниже скрипт):

bq mk --transfer_config --project_id = TARGET_PROJECT_ID --data_source = cross_region_copy --target_dataset = TARGET_DATASET_NAME --display_name = 'Передать имя задания, введите любой' 'source_dat = = ":" SOURCE_DATASET_NAME (ID)», "source_project_id": "SOURCE_PROJECT_NAME (ID)", "overwrite_destination_table": "истинный"} '

Теперь у вас есть оба набора данных с одинаковыми схемами таблиц журналов в одном проекте и наиболее важные в одном регионе (ЕС). Используйте синтаксис SQL insert to newtable ... select * from oldtable. .. ' Готово, у вас есть текущие и старые журналы в одной таблице, включая раздел et c.

Другой способ:

  1. Копировать Вставьте набор данных из старого в новый проект.
  2. Направьте туда журналы BQ. При перенаправлении проектов вы потеряете некоторые записи, они будут записаны в старой таблице. Поэтому в конечном итоге потребуется скопировать эти данные о пробелах.

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

0 голосов
/ 08 января 2020

Если вы используете многораздельные таблицы, BigQuery не позволяет вам копировать многораздельные таблицы одновременно. Если вы собираетесь мигрировать ваши таблицы только один раз, я предлагаю вам сделать что-то подобное в SHELL Script:

tables=("20200107"  "20200106"  "20200105"  "20200104")

for val in ${tables[*]}; do
     bq cp project1:dataset1.table1_$val project2:dataset2.table2_$val
done

Вы должны поместить все свои разделы даты в виде строки внутри списка, а затем запустить l oop. Я надеюсь, что это поможет

РЕДАКТИРОВАТЬ 1:

Поскольку у вас возникают проблемы при копировании таблиц между регионами, я предлагаю следующее:

Учитывая, что вы собираетесь мигрировать Таблицы только один раз, вы можете использовать копию набора данных между регионами:

bq mk --transfer_config --project_id=myproject --data_source=cross_region_copy --target_dataset=123_demo_tokyo --display_name='My Dataset Copy' --params='{"source_dataset_id":"123_demo_eu","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'

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

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

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