Передача данных между двумя проектами BigQuery с использованием облачных функций Google - PullRequest
0 голосов
/ 01 октября 2019

Я создал два проекта в Google Cloud Platform, например, project1 и project2. Project1 имеет большой набор данных с именем dataset1, который содержит таблицу с именем table1, которая имеет некоторое содержимое. Project2 имеет большой набор данных с именем dataset2, который содержит таблицу с именем table2, которая является пустой. Мне нужен код Python, который будет копировать / импортировать table1 и экспортировать / копировать его в table2, который изначально был пуст с помощью инструмента Google Cloud Functions.

Ответы [ 2 ]

1 голос
/ 01 октября 2019
  1. Узнайте, как использовать Python для отправки запроса в BigQuery, следуя документации .

  2. Запрос "скопировать / импортироватьtable1 и экспортируйте / скопируйте его в table2 ", который вам понадобится (при условии, что table2 имеет ту же схему, что и table1):

INSERT INTO project2.dataset2.table2 
SELECT * FROM project1.dataset1.table1;
0 голосов
/ 01 октября 2019

Найдите код Python для копирования таблицы здесь:

Код:

# from google.cloud import bigquery
# client = bigquery.Client()

source_dataset = client.dataset("samples", project="bigquery-public-data")
source_table_ref = source_dataset.table("shakespeare")

# dataset_id = 'my_dataset'
dest_table_ref = client.dataset(dataset_id).table("destination_table")

job = client.copy_table(
    source_table_ref,
    dest_table_ref,
    # Location must match that of the source and destination tables.
    location="US",
)  # API request

job.result()  # Waits for job to complete.

assert job.state == "DONE"
dest_table = client.get_table(dest_table_ref)  # API request
assert dest_table.num_rows > 0

Есть еще один ответ натот вопрос, который показывает, что вы можете сделать это с INSERT INTO *, но эта операция обойдется в полную проверку таблицы - по сравнению с бесплатной.

(я обычно использую CREATE TABLE или INSERT INTO, потому что они более удобны, хотя)

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