如何将数据集克隆到另一个 BigQuery 项目
How to clone a dataset to another BigQuery project
假设每个客户有一个 Google-BigQuery 项目。现在一位新客户即将上任。将项目、数据集或对象(如视图)克隆到新项目的最佳过程是什么?
我有一个数据集,其中包含一组包含分析逻辑的视图。如果我能将这些视图复制到新项目中,那就太好了。
谢谢
作为一个选项 - 您可以使用
的脚本
- 使用 Tables: list API
获取主数据集中所有视图的列表
- 循环遍历列表响应中的所有视图(检查type 属性)和
- 对于使用 Tables: get API view definition 和其他相关属性以及
读取的每个视图
- 然后在新数据集中创建 Tables: insert API 相应视图
应该很简单
我们有类似的要求,将所有或选择性视图和 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)
假设每个客户有一个 Google-BigQuery 项目。现在一位新客户即将上任。将项目、数据集或对象(如视图)克隆到新项目的最佳过程是什么?
我有一个数据集,其中包含一组包含分析逻辑的视图。如果我能将这些视图复制到新项目中,那就太好了。
谢谢
作为一个选项 - 您可以使用
的脚本- 使用 Tables: list API 获取主数据集中所有视图的列表
- 循环遍历列表响应中的所有视图(检查type 属性)和
- 对于使用 Tables: get API view definition 和其他相关属性以及 读取的每个视图
- 然后在新数据集中创建 Tables: insert API 相应视图
应该很简单
我们有类似的要求,将所有或选择性视图和 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)