📌  相关文章
📜  Google Cloud Platform – 将数据加载到 BigQuery

📅  最后修改于: 2022-05-13 01:57:03.562000             🧑  作者: Mango

Google Cloud Platform – 将数据加载到 BigQuery

在本文中,我们将研究如何在 BigQuery 中加载和分析您自己的数据。由于通过示例更好地理解这个概念,我们将回答一个古老的问题“猫还是狗哪个更好?”

如果您想分析尚未作为公共数据集程序的一部分提供或由其他 BigQuery 用户公开托管的数据,您需要将自己的数据加载到 BigQuery 中。如何加载数据取决于您的分析需求和数据管道。如果您的数据变化缓慢或需要在一次性分析中加载,您可以将数据批量加载到 BigQuery 中。但是,如果您需要接近实时地提取和分析数据,在这种情况下,您可能需要将数据流式传输到 BigQuery。

BigQuery 提供了用于加载涵盖这两种情况的数据的选项。因此,让我们从批量加载数据开始。那么,您需要 BigQuery 中的哪些数据才能正式赢得猫狗大战的冠军?我们将通过分析大学篮球锦标赛比赛来确定冠军,以便看看当狗吉祥物和猫吉祥物正面交锋时谁赢了。

要运行此分析,我们需要两件事。首先,我们需要锦标赛结果数据,BigQuery 中已经提供了这些数据,作为公共NCAA 篮球公共数据集的一部分。其次,我们需要一个包含狗和猫吉祥物团队的列表,我们将其作为本地 CSV 文件提供。要将这两个数据集连接在一起进行分析,我们需要将 mascot CSV 文件加载到 BigQuery 中并创建一个表。

首先,在 BigQuery 中为 mascot 表创建一个主页。 BigQuery 将数据组织到称为数据集的容器中。这些数据集的函数有点像管理基础表的顶级文件夹。

现在按照以下步骤加载数据:

第 1 步:要创建新数据集,请在左侧导航中选择项目名称,然后单击“创建数据集”按钮。

第 2 步:然后我们将为数据集命名,然后确定位置。在这种情况下,我们需要将数据集与位于美国多区域的 NCAA 公共数据集放在一起。我们需要通过执行联接在一个查询中引用这两个表。这只能通过位于同一地理位置的表来完成。您始终可以通过单击 Web UI 中的详细信息选项卡来查看数据集的位置。单击创建数据集,新的数据集将出现在左侧导航中。

第 3 步:现在是时候通过加载 mascot CSV 文件在数据集中创建一个新表了。突出显示数据集并单击创建表。

这个对话框允许我们直接从本地机器上传文件,最大 10 兆字节,包含少于 16,000 行。如果您有更大的东西,您可以将其上传到云存储,然后从那里选择它。由于我们的 CSV 文件非常小,我们可以跳过它并使用浏览功能从本地计算机中选择文件。

第 4 步:为表命名,然后定义模式。架构是每列及其数据类型的列表。我们可以通过单击添加字段手动定义架构,或选中复选框以让 BigQuery 自动检测它。

第 5 步:单击 Create Table,将创建一个加载作业。数据加载完成后,您可以导航以查看表详细信息、查看架构并直接在控制台中预览数据。我们的 mascots 表已准备好进行查询。

第 6 步:我们将粘贴一个查询,该查询使用 mascot 表来分析猫对狗锦标赛比赛的对决。在我们的查询中,我们从锦标赛游戏表开始,然后使用一系列 SQL 连接与 mascots 表来查找获胜和失败球队的动物分类。然后,我们总结了特定猫对狗比赛中猫的获胜次数和狗的获胜次数。我们的查询将如下所示:

#standardSQL

WITH matchups AS {
SELECT g.win_team_id

,g.lose_team_id
,(SELECT win_masc.tax_genus FROM 'analytics-testing-321.basketball.mascots' win_masc WHERE win_masc.id = g.win_team_id) AS tax_genus_winner 
,(SELECT lose_masc.tax_family FROM 'analytics-testing-321-basketball.mascots' lose_masc WHERE lose_masc.id = g.lose_team_id) AS tax_family_loser
,(SELECT win_masc.tax_family FROM 'analytics-testing-321.basketball.mascots win_masc WHERE win_masc.id =g.win_tean_id) AS tax_family_winner
, (SELECT lose_masc.tax_genus FROM 'analytics-testing-321-basketball.mascots lose_masc WHERE lose_masc.id = g.lose_team_id) AS tax_genus_loser
 FROM 'bigquery-public-data.ncaa_basketball.mbb_historical_tournament_games' g
 )
SELECT
SUM(IF(tax_family_winner = "Felidae" AND tax_genus_loser = "Canis", 1, 0)) AS num_cat_wins,
SUM(IF(tax_genus_winner = "Canis" AND tax_family_loser = "Felidae", 1, 0)) AS num_dog_wins
FROM matchups

第 7 步:现在运行我们的查询。我们有它,在 43 场胜利中,狗吉祥物在大学篮球锦标赛的领域中获胜。您还可以查看狗和猫在其他指标上的表现,或者将这些数据与其他数据集相结合以测试新想法。