如何将数据集克隆到另一个 BigQuery 项目

How to clone a dataset to another BigQuery project

假设每个客户有一个 Google-BigQuery 项目。现在一位新客户即将上任。将项目、数据集或对象(如视图)克隆到新项目的最佳过程是什么?

我有一个数据集,其中包含一组包含分析逻辑的视图。如果我能将这些视图复制到新项目中,那就太好了。

谢谢

作为一个选项 - 您可以使用

的脚本

应该很简单

我们有类似的要求,将所有或选择性视图和 Table 定义从一个大查询项目转移到每个数据集级别的另一个项目,因此在内部编码以转移 all/selective tables 使用 Biq 查询 API 的模式和视图定义。它是浅克隆(没有 table 数据传输)到目标 Big Query 项目。

如果您仍然需要代码示例,请随时索取。我很乐意分享我的 Java 代码。

这是基于 Mikhail Berlyant 的回答的解决方案。创建新数据集后:

from google.cloud import bigquery
from google.cloud.bigquery.table import Table


ORIGINAL_PROJECT_ID = "original-project-id"
NEW_PROJECT_ID = "new-project-id"
ORIGINAL_DATASET_ID = "original-dataset-id"
NEW_DATASET_ID = "new-dataset-id"

client = bigquery.Client(project=ORIGINAL_PROJECT_ID)

tables_list = [
    table
    for table in client.list_tables(dataset=ORIGINAL_DATASET_ID)
    if table.table_type == "VIEW"
]

tables = [client.get_table(table) for table in tables_list]

for table in tables:
    new_table = Table(f"{NEW_PROJECT_ID}.{NEW_DATASET_ID}.{table.table_id}")
    new_table.view_query = table.view_query
    client.create_table(new_table)