[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

非常适合年末年初学习! 将数据存储区数据加载到 GCP BigQuery 并进行分析

你好。
我是Mandai,负责Wild 开发团队。

我想分析Appmill的监控数据,但是数量已经增长到很难将其存储在DB中。
现在,说到 GCP,就是这样。

嗯,这就是 BigQuery 的用武之地。

在本文中,我将向您展示如何将数据从 GCP 上的数据存储区导入 BigQuery、运行查询以及导出以供重复使用。

 

准备从数据存储加载数据

首先,请注意,您无法将数据直接从 Datastore 导入到 BigQuery。

因此,首先将数据从 Datastore 移动到 Cloud Storage。

要将 Datastore 数据移至 Cloud Storage,请使用 Datastore 的备份功能。
提前准备一个存储桶,用于在 Cloud Storage 中存储备份。
正如我稍后将解释的,我们建议您在东京区域 (asia-northeast1) 创建存储桶。

数据存储菜单中有一个名为“管理”的项目,因此选择它。

接下来,有一个按钮显示“打开数据存储管理”,因此单击此处。
请注意,由于我们正在捕获真实数据,因此存在大量马赛克。

仅在第一次运行时才会要求您进行确认,但会打开一个单独的窗口,并显示所选项目的数据存储中每种类型的数据大小列表。

检查要提取的实体的种类,然后单击“备份实体”开始备份。
导出不会立即完成,因此请稍等片刻。

尝试重新加载几次,如果您看到类似上面的屏幕,则说明已完成。

 

在 BigQuery 中注册数据

准备好数据后,将其加载到 BigQuery 中。
由于用户界面已更新,我想继续进行更多捕获(抱歉马赛克太多)。

进入 BigQuery 屏幕后,点击左侧菜单中“资源”下的“添加数据”链接。
选择“固定项目”,然后选择保存数据存储区数据的 Cloud Storage 项目 ID。

如果搜索框下方显示指定的项目,则说明成功。

接下来,在您的项目中创建一个数据集。
单击之前添加的项目 ID。
然后,右侧窗格将切换为查询编辑器。

在查询编辑器下方,有一个名为“创建数据集”的链接,因此当您单击它时,将从右侧弹出数据集创建屏幕。

输入数据集 ID,以帮助您识别要输入的数据,然后选择数据位置。
该位置的重要一点是它与您创建的第一个 Cloud Storage 存储桶所在的区域相匹配。

在东京区域创建 Cloud Storage 存储桶后,选择 asia-northeast1,依此类推。
如果您在多个区域中创建了 BigQuery 数据,则您的 Cloud Storage 存储桶可以位于所选多区域内的任何位置。
截至撰写本文时,BigQuery 有两个多区域可用:美国和欧洲不可用。

如果您按照本文操作,您将在 asia-northeast1 中创建一个 Cloud Storage 存储分区,因此您还将在 asia-northeast1 中创建一个 BigQuery 数据集。

创建数据集后,下一步是创建表。

已经创建了一个树,您之前创建的数据集挂在左侧的项目 ID 下,因此这次单击数据集名称。

然后,右侧窗格将发生变化,您将看到一个名为“创建表”的链接,因此单击它。

输入项很多,我会一一解释!

  • 表创建自
    • 选择从哪里获取数据。如果上传,会显示上传者。这次选择云存储。
  • 从 GCS 存储桶中选择文件
    • 输入 Cloud Storage 存储桶名称中扩展名为“.[数据存储实体类型].backup_info”的文件的路径。您还可以从参考中挖掘目录树,但是 .backup_info 文件的文件名太长并且会被切断,因此我们建议从云存储屏幕复制并粘贴它,尽管这很痛苦。
  • 文件格式
    • 选择云数据存储备份。
  • 项目名称
    • 对于此步骤,它已被选择。
  • 数据集名称
    • 对于此步骤,它已被选择。
  • 表名
    • 请为其指定一个在数据集中易于识别的名称。

除非有特殊要求,其他项目无需更改。

当您按下“创建”按钮时,将创建一个数据加载作业并将其添加到作业历史记录中。

作业完成并且表中填充了数据后,您就可以运行查询了。

 

运行查询

在运行查询之前,让我们在编辑器中编写它。

上图中,由于指定了不存在的数据集或表而发生错误。
但是,此处可以编写的查询被设计为标准 SQL 查询。

通过用点连接数据集名称和表名称来指定 from 之后的表名称。
如果指定现有的数据集或表,则如下所示。

需要注意的是右下部分,它显示了搜索结果输出的数据大小。
随着这部分的增长,执行查询的成本将会增加。

2018/12/19 目前,每 1TB 价格为 5 美元,所以我认为您可以不用太担心地使用它。
每月还有 1TB 的免费套餐,我认为这足以尝试一下。

根据我这次尝试的数据,处理了4.01GB的数据,所以我可以免费运行它大约250次。
此外,相同的查询会缓存 24 小时,因此不会重新计算,也不会产生任何费用。

充分利用大量免费套餐并习惯使用少量数据!

目前,BigQuery配备了与SQL 2011兼容的标准SQL,因此即使只使用过MySQL或PostgreSQL的人也可以轻松上手。
不过,有些事情可以用 MySQL 来做,所以我想在另一篇文章中介绍它们。

 

写出结果

如果你想将完成的数据移动到某个地方,导出结果很方便。

这里我们将向您展示如何将执行结果导出为 CSV 并将其存储在 Cloud Storage 中。

导出查询执行结果的方法有多种,但如果结果集较小,直接导出为 CSV 并下载会更简单、更省时。
如果你想在程序中使用 JSON 也很好,如果你的公司使用 G Suite,你也可以使用 Google Sheets。

但是,如果您的结果集变大,您只能下载第一部分,并需要将其导出到 BigQuery 表。

要将大型结果集保存到 BigQuery 表,请从查询结果标题旁边的保存结果中选择 BigQuery Table。

将出现一个模式,将结果保存为表格,因此选择项目名称、数据集名称,输入要导出的表名称,然后就完成了。

根据数据大小,这可能需要一些时间,但完成后,新表将添加到注册的数据集中。
该表将被视为与要查询的表相同,因此我们使用导出该表本身的函数将其导出到 Cloud Storage。
如果您在 BigQuery 中创建表,则任何超过 10GB 的部分都会被收取费用,因此,如果您将其用于验证等,请注意这一点。

接下来,输入以云存储导出目标存储桶名称开头的完整路径,选择导出格式以及是否压缩,然后将开始导出。

这也作为作业进行管理,并且可以检查其状态。

我很难进行这次捕获,因为生成的数据量很小。

 

概括

这次,我总结了将数据从 Datastore 注册到 BigQuery 并以 CSV 格式保存到 Cloud Storage 的流程。

作为一个点

  • BigQuery 有一个即用即付的系统,其价格由查询处理的数据量决定(也有固定费率,但如果你三心二意地使用它,你最终会亏损)
  • BigQuery 的标准 SQL 与 MySQL 提供的 SQL 略有不同。
  • 云存储让数据交换变得简单
  • 就我个人而言,我认为 BigQuery 很容易使用。
  • 从数据存储导出到云存储需要非常长的时间

我想这就是我的意思。

这是一项出色的服务,查询执行时间短且毫无压力!
难怪它如此受欢迎。

从 BigQuery 导出的目的地有多种,而 Google Sheets 适合与非工程师交流,因此如果您记住它,在紧急情况下可能会很有用。

 
就是这样。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
1,547
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。