簡體   English   中英

使用 Google Cloud Functions 在兩個 BigQuery 項目之間傳輸數據

[英]Data Transfer between two BigQuery Projects using Google Cloud Functions

我在 Google Cloud Platform 上創建了兩個項目,分別是 project1 和 project2。 Project1 有一個名為 dataset1 的 bigquery 數據集,其中包含一個名為 table1 的表,其中包含一些內容。 Project2 有一個名為 dataset2 的 bigquery 數據集,其中包含一個名為 table2 的表,該表為空。 我需要一個 python 代碼,它將使用 Google Cloud Functions 工具復制/導入 table1 並將其導出/復制到最初為空的 table2。

  1. 了解如何按照文檔使用 Python 向 BigQuery 發送查詢。

  2. 您需要的“復制/導入 table1 並將其導出/復制到 table2”的查詢是(假設 table2 與 table1 具有完全相同的架構):

INSERT INTO project2.dataset2.table2 
SELECT * FROM project1.dataset1.table1;

在此處找到 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 TABLEINSERT INTO因為它們更方便)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM