Python 使用Google云函数在两个BigQuery项目之间进行数据传输
我在谷歌云平台上创建了两个项目,分别是project1和project2。Project1有一个名为dataset1的bigquery数据集,其中包含一个名为table1的表,该表包含一些内容。Project2有一个名为dataset2的bigquery数据集,其中包含一个名为table2的空表。我需要一个python代码,该代码将复制/导入table1,并使用Google Cloud Functions工具将其导出/复制到最初为空的table2Python 使用Google云函数在两个BigQuery项目之间进行数据传输,python,google-cloud-platform,google-bigquery,google-cloud-functions,Python,Google Cloud Platform,Google Bigquery,Google Cloud Functions,我在谷歌云平台上创建了两个项目,分别是project1和project2。Project1有一个名为dataset1的bigquery数据集,其中包含一个名为table1的表,该表包含一些内容。Project2有一个名为dataset2的bigquery数据集,其中包含一个名为table2的空表。我需要一个python代码,该代码将复制/导入table1,并使用Google Cloud Functions工具将其导出/复制到最初为空的table2 了解如何使用Python按照以下步骤向BigQu
在此处查找复制表的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
,因为它们更方便)在此处查找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
,因为它们更方便)使用configuration.query.destination\u TABLE=project2.dataset2.table2
和configuration.query.write\u disposition=write\u EMPTY
(这是默认值)插入查询作业也可以,假设模式是兼容的:但是可以通过查询完成更多的事情。类似于增量复制表的语句。请注意,查询将有一个完整表扫描的成本,并且通过API进行复制是免费的。假设模式兼容,插入带有configuration.query.destination\u table=project2.dataset2.table2
和configuration.query.write\u disposition=write\u EMPTY
(这是默认值)的查询作业也会起作用:但查询可以完成更多的事情。类似于增量复制表的语句。请注意,查询将有一个完整表扫描的成本,并且通过API进行复制是免费的。出于好奇,您为什么需要为此使用云函数?出于好奇,您为什么需要为此使用云函数?