Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Google云函数在两个BigQuery项目之间进行数据传输_Python_Google Cloud Platform_Google Bigquery_Google Cloud Functions - Fatal编程技术网

Python 使用Google云函数在两个BigQuery项目之间进行数据传输

Python 使用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

我在谷歌云平台上创建了两个项目,分别是project1和project2。Project1有一个名为dataset1的bigquery数据集,其中包含一个名为table1的表,该表包含一些内容。Project2有一个名为dataset2的bigquery数据集,其中包含一个名为table2的空表。我需要一个python代码,该代码将复制/导入table1,并使用Google Cloud Functions工具将其导出/复制到最初为空的table2

  • 了解如何使用Python按照以下步骤向BigQuery发送查询

  • 您将需要查询“复制/导入table1并将其导出/复制到table2”(假设table2与table1具有完全相同的架构):

  • 了解如何使用Python按照以下步骤向BigQuery发送查询

  • 您将需要查询“复制/导入table1并将其导出/复制到table2”(假设table2与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 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进行复制是免费的。出于好奇,您为什么需要为此使用云函数?出于好奇,您为什么需要为此使用云函数?