繁体   English   中英

如何在不同区域的数据集之间移动数据?

[英]how to move data between datasets in different regions?

我正在使用与 Firebase 集成的 BigQuery,所有数据集都在同一个项目中。 我的analytics数据集在useast-4中,但由于某种原因,我的firebase_imported_segments数据集区域被标记为US我想将数据从analytics数据集移动到firebase_imported_segments中的表中。

起初,我尝试了一个简单的 INSERT 查询,但出现错误firebase_imported_segments was not found in location us-east4

因此,我尝试构建一个 SELECT 语句并使用“保存结果 > 大查询表”导出行,但这给出了一个类似的错误,即找不到目标数据集。 奇怪的是,如果我在firebase_imported_segments中创建一个表并尝试使用该表名保存结果,我会收到“表已存在”错误。 所以并不是它找不到firebase_imported_segments数据集,它只是不会在该数据集中创建新表。

我该如何解决这个问题? 我看到一些 BQ 文档表明在区域之间移动数据是可能的,但我没有简单地介绍它是如何完成的。 我也很困惑为什么 firebase 会在一个特定区域 ( useast-4 ) 中放置一些数据,然后在多区域 ( US ) 中放置其他数据(如果它们不兼容)。

您可以使用 BigQuery UI 中的“复制”移动数据集,然后删除旧数据集。 请参阅复制数据集文档

选项 1:使用复制按钮。

  1. Go 到 Cloud 控制台中的 BigQuery 页面。

  2. 在资源管理器面板中,展开您的项目和 select 数据集。

  3. 展开更多操作选项(三点按钮)并单击打开。

  4. 单击复制。 在出现的“复制数据集”对话框中,执行以下操作:

    一种。 在数据集字段中,创建新数据集或 select 列表中的现有数据集 ID。

    项目中的数据集名称必须是唯一的。 项目和数据集可以在不同的地域,但并非所有地域都支持跨地域复制数据集。

    b. 在位置字段中,显示源数据集的位置。

    c。可选:要用源表覆盖目标表的数据和架构,select 覆盖目标表复选框。

    d. 要复制数据集,请单击复制。

为避免额外的存储成本,请考虑删除旧数据集。

选项 2:使用 BigQuery 数据传输服务。

  1. 启用 BigQuery 数据传输服务。

  2. 为您的数据源创建传输。

我对此进行了测试,可以确认它是否有效。 我在us-east4中创建了一个名为analytics_us_regional的数据集,并有一个名为east_4_table的表,并将其复制到位于US的数据集。

us-east4复制到US数据集:

在此处输入图像描述

启动复制时,会创建一个数据传输作业:

在此处输入图像描述

复制到US

在此处输入图像描述

关于位于us-east4的 firebase 中的数据,从firebase 导出到 BQ 首次启用导出时,用户将定义表格的位置。 可能最初选择了us-east4区域。

不知道它是否适用于你的情况,但我在 europe-west1 有一个数据集,我想将它复制到欧盟地区,我已经完成了这两种方式并且都有效:

第一种方式:1-单击要复制的数据集,然后单击“复制”。

2- 在数据集目标的复制菜单上单击“创建新数据集”和 select 您希望该数据集所在的目标区域。 单击创建数据集。

3 - 在“复制数据集”菜单上单击复制。

4 - 当目标数据集位于 JURISDICTION_EU 时,您将收到错误“无法在 REGION_EUROPE_WEST_1 中创建传输”,但将在您的目标区域创建没有表的数据集。

5 - 现在,如果您尝试通过单击“复制”并选择在第 4 组中创建的数据集来复制源数据集,它现在可以工作了。

第二种方式:(最佳方式)1 - 打开一个新的查询表点击更多 - >查询设置 - >高级选项,取消选中“自动位置选择”和 select 你想要的目标区域或多区域(在我的例子中是欧盟) .

2- 在此查询表上运行“CREATE SCHEMA your_new_dataset_name ”-> 这将在第 1 点中选择的目标区域中创建数据集“your_new_dataset_name”。

3 - 单击要复制的数据集,然后单击“复制”。

4 - 在数据集目标 select 上的复制菜单上,点 2 中创建的数据集,然后单击复制。

两种方式都使用 BigQuery 数据传输服务,但您不需要直接访问该服务。 事实上,这两种方法做的事情完全相同,即在要复制的正确区域中创建目标空数据集,一旦复制 function 将正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM