GSP849

概述
在本实验中,您将通过编写并执行查询来查询存储在 BigQuery 表中的数据,从而掌握更多关于体育数据科学的基础知识。本实验重点演示数据库的工作原理,并解答与以下足球热点话题相关的一些有趣问题。
- 总进球数最多。
- 尝试传球次数最多。
- 点球成功率最高。
本实验中使用的数据来自以下来源:
- Pappalardo 等人,(2019 年)A public data set of spatio-temporal match events in soccer competitions(关于足球比赛中时空匹配事件的公开数据集),Nature 旗下《Scientific Data》期刊第 6 卷第 236 号文章,https://www.nature.com/articles/s41597-019-0247-7
- Pappalardo 等人(2019 年)PlayerRank: Data-driven Performance Evaluation and Player Ranking in Soccer via a Machine Learning Approach(PlayerRank:基于机器学习方法的足球比赛数据驱动型表现评估与球员排名)。《ACM Transactions on Intelligent Systems and Technologies》(TIST) 第 10 卷第 5 期第 59 号文章(2019 年 9 月发表),共 27 页。DOI:https://doi.org/10.1145/3343172
目标
在本实验中,您将学习如何完成以下操作:
- 在 BigQuery 中查询足球比赛事件数据。
- 编写并执行查询,以联接多个表中的信息。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
任务 1. 打开 BigQuery
通过 BigQuery 控制台界面,您可以查询表(包括由 BigQuery 提供的公共数据集)。
- 进入 Cloud 控制台后,从导航菜单中选择 BigQuery:
您会看到欢迎在 Cloud 控制台中使用 BigQuery 消息框,其中提供了指向快速入门指南和版本说明的链接。
- 点击完成。
BigQuery 控制台即会打开。
注意:创建数据集和表的流程已在 BigQuery 足球数据注入实验中讲解过。在本实验中,重点是学习如何查询信息。
表创建完毕后,界面中显示的内容大致如下:
在下一部分,我们将开始学习关于在 BigQuery 中创建查询的基础知识。
任务 2. 进球最多的比赛
在本部分中,您将创建一个查询,将包含足球数据的多个表联接在一起。根据现有信息,您可以执行一些基本分析,例如特定联赛中两支球队在一场比赛中的进球总数最多是几个。
- 在查询编辑器中,点击“+”(创建 SQL 查询)。
- 将以下查询添加到查询编辑器:
SELECT
date,
label,
(team1.score + team2.score) AS totalGoals
FROM
`soccer.matches` Matches
LEFT JOIN
`soccer.competitions` Competitions ON
Matches.competitionId = Competitions.wyId
WHERE
status = 'Played' AND
Competitions.name = 'Spanish first division'
ORDER BY
totalGoals DESC, date DESC
此查询将执行以下操作:
- 将 matches 表(包含最终得分)与 competitions 表联接起来。
- 过滤出“Spanish first division”(西班牙甲级联赛)的比赛。
- 按表示一场比赛中总进球数的计算字段排序。
- 点击运行。
查询结果会显示在查询窗口下方。
点击“检查我的进度”,核查是否完成了以下目标:
检查查询是否已运行
在此部分中,我们使用 BigQuery 演示了如何定义一个显示足球信息的查询。该查询会创建一个过滤器,用于显示特定联赛的具体比赛信息,且支持按定义的字段对信息进行分类。
任务 3. 传球次数最多的球员
在本部分中,您将创建一个查询,将包含足球数据的多个表联接在一起。根据现有信息,您可以执行一些基本分析,例如球员的总传球次数。
- 在查询编辑器中,点击“+”(创建 SQL 查询)。
- 将以下查询添加到查询编辑器中:
SELECT
playerId,
(Players.firstName || ' ' || Players.lastName) AS playerName,
COUNT(id) AS numPasses
FROM
`soccer.events` Events
LEFT JOIN
`soccer.players` Players ON
Events.playerId = Players.wyId
WHERE
eventName = 'Pass'
GROUP BY
playerId, playerName
ORDER BY
numPasses DESC
LIMIT 10
此查询执行以下操作:
- 将 events 表(其中记录了每次传球)与 players 表联接,以根据球员 ID 获取球员姓名
- 按球员分组
- 计算每位球员的传球次数
- 按传球次数排序,找出传球最多的球员
- 点击运行。查询结果会显示在查询窗口下方。
点击“检查我的进度”,核查是否完成了以下目标:
检查查询是否已运行
在此部分中,我们使用 BigQuery 演示了如何定义一个显示球员信息的查询。该查询会创建一个联接,用于显示有关 playerId 的具体信息,且支持按定义的字段对信息进行分类。
在下一部分中,您将详细了解现有数据集,并探索如何使用该数据集来确定球员的点球成功率。
任务 4. 确定点球成功率
在本部分中,您将创建一个查询,将包含足球数据的多个表联接在一起。根据现有信息,您可以进行一些分析,例如每位球员的点球成功率。
- 在查询编辑器中,点击“+”(创建 SQL 查询)。
- 复制以下查询并将其粘贴到查询编辑器中:
SELECT
playerId,
(Players.firstName || ' ' || Players.lastName) AS playerName,
COUNT(id) AS numPKAtt,
SUM(IF(101 IN UNNEST(tags.id), 1, 0)) AS numPKGoals,
SAFE_DIVIDE(
SUM(IF(101 IN UNNEST(tags.id), 1, 0)),
COUNT(id)
) AS PKSuccessRate
FROM
`soccer.events` Events
LEFT JOIN
`soccer.players` Players ON
Events.playerId = Players.wyId
WHERE
eventName = 'Free Kick' AND
subEventName = 'Penalty'
GROUP BY
playerId, playerName
HAVING
numPkAtt >= 5
ORDER BY
PKSuccessRate DESC, numPKAtt DESC
该查询按球员汇总了点球尝试次数和成功次数,并过滤出点球尝试次数至少为 5 次的球员,然后按成功率排序。
注意:上面的查询将 events 表(在本例中经过了过滤,仅包含点球)与 players 表联接,以根据球员 ID 获取球员姓名。
events 表中的 tags 字段使用了 BigQuery 的数组功能(允许为每个事件存储多个标记),因此必须取消嵌套才能确定点球是否成功(可以使用 tags2name 表确认标记 101 代表进球)。
- 点击运行。查询结果会显示在查询窗口下方。
点击“检查我的进度”,核查是否完成了以下目标:
检查查询是否已运行
在本部分中,我们使用 BigQuery 演示了如何定义一个查询来显示与点球有关的球员信息。该查询会创建一个联接,用于显示有关 playerId 的具体信息,且支持显示更详细的信息。
任务 5. 随堂测验
通过完成关于本实验所涵盖主题的简短测验,检验您对 BigQuery 的掌握情况。
恭喜!
恭喜!在本实验中,您成功编写并执行了查询来分析存储在 BigQuery 表中的数据。此外,您还学习了如何联接多个表中的信息,以回答有关足球的有趣问题。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 1 月 25 日
上次测试实验的时间:2024 年 1 月 25 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。