arrow_back

BigQuery:Qwik Start - 命令行

登录 加入
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

BigQuery:Qwik Start - 命令行

实验 30 分钟 universal_currency_alt 免费 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

GSP071

Google Cloud 自定进度实验

概览

如果没有合适的硬件和基础架构,存储和查询大量数据集可能非常耗时且成本昂贵。BigQuery 是一种无服务器、高扩展性的云数据仓库,它借助 Google 基础架构的强大处理能力实现了极其快速的 SQL 查询功能,从而解决了上述问题。您只需将数据迁移至 BigQuery,余下的困难部分由我们负责。您可以根据业务需求控制对项目和数据的访问权限,例如授权其他人来查看或查询您的数据。

您可以通过各种客户端库(例如 Java、.NET 或 Python)使用控制台网页界面命令行工具来访问 BigQuery。另外,还有许多解决方案提供商供您使用,让您能与 BigQuery 交互。

本实操实验将向您介绍如何使用 bq(一款适用于 BigQuery 基于 python 的命令行工具)来查询公开表,以及如何将示例数据加载到 BigQuery 中。

您将执行的操作

  • 查询公共数据集
  • 创建新数据集
  • 将数据加载到新表中
  • 查询自定义表格

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单导航菜单图标

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

  2. 现在,输出的内容应如下所示:

输出:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出

[core] project = <project_ID>

输出示例

[core] project = qwiklabs-gcp-44776a13dea667a6 Note: For full documentation of gcloud, in Google Cloud, refer to the gcloud CLI overview guide.

任务 1. 查看表

BigQuery 提供一些示例表,您可以基于这些表运行查询。在本实验中,您将基于 shakespeare 表运行查询,该表包含莎士比亚每场戏剧中每个单词的记录。

要查看示例数据集中“Shakespeare”表的架构,请运行以下命令:

bq show bigquery-public-data:samples.shakespeare

此命令的具体含义解析:

  • bq 用于调用 BigQuery 命令行工具
  • show 是要执行的操作
  • 后面列出的是希望在 BigQuery 中显示的 project:public dataset.table 的名称。

输出如下:

Last modified Schema Total Rows Total Bytes Expiration Time Partitioning Clustered Fields Labels ----------------- ------------------------------------ ------------ ------------- ------------ ------------------- ------------------ -------- 14 Mar 13:16:45 |- word: string (required) 164656 6432064 |- word_count: integer (required) |- corpus: string (required) |- corpus_date: integer (required)

任务 2. 运行帮助命令

如果您在帮助命令中添加某个命令的名称,那么您会获得该特定命令的相关信息。

  1. 例如,以下对 bq help 的调用可检索关于 query 命令的信息:
bq help query
  1. 要查看 bq 使用的所有命令的清单,只需运行 bq help

任务 3. 运行查询

接下来您将运行查询,来查看子字符串“raisin”在莎士比亚作品集中出现的次数。

  1. 要运行查询,请运行 bq query "[SQL_STATEMENT]" 命令:
  • 使用 \ 符号转义 [SQL_STATEMENT] 中的任何引号,或者

  • 使用与英文双引号不同的英文引号类型(不使用 " 而使用 ')。

  1. 在 Cloud Shell 中运行以下标准 SQL 查询来统计子字符串“raisin”在莎士比亚作品集中出现的次数:
bq query --use_legacy_sql=false \ 'SELECT word, SUM(word_count) AS count FROM `bigquery-public-data`.samples.shakespeare WHERE word LIKE "%raisin%" GROUP BY word'

在此命令中:

  • --use_legacy_sql=false 表示将标准 SQL 设为默认查询语法。

输出如下:

Waiting on job_e19 ... (0s) Current status: DONE +---------------+-------+ | word | count | +---------------+-------+ | praising | 8 | | Praising | 4 | | raising | 5 | | dispraising | 2 | | dispraisingly | 1 | | raisins | 1 |

此表表明,尽管 raisin 的确切单词并未出现,但这几个字母以整体形式作为其他单词的一部分曾几次出现在莎士比亚的作品集中。

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您成功对公开数据集运行了查询,系统会显示一个评估分数。

运行查询(数据集:samples [示例],表:shakespeare [莎士比亚],子字符串:raisin [葡萄干])

如果您搜索的字词未在莎士比亚的作品中出现过,则不会返回任何结果。

  • 例如,以下对“huzzah”的搜索不会返回任何匹配项:
bq query --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare WHERE word = "huzzah"'

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您成功对公开数据集运行了查询,系统会显示一个评估分数。

运行查询(数据集:samples [示例],表:shakespeare [莎士比亚],子字符串:huzzah [好哇])

任务 4. 创建新表

现在,请创建您自己的表。每个表都存储在一个数据集中。一个数据集是一组资源(例如表和视图)。

创建新数据集

  1. 您可以使用 bq ls 命令列出您项目中的所有现有数据集:
bq ls

由于您的项目中尚无任何数据集,系统会将您返回命令行。

  1. 运行 bq ls 加上项目 ID bigquery-public-data 来列出该特定项目中的数据集,并后接英文冒号 (:):
bq ls bigquery-public-data:

输出如下:

datasetId ----------------------------- austin_311 austin_bikeshare austin_crime austin_incidents austin_waste baseball bitcoin_blockchain bls census_bureau_construction census_bureau_international census_bureau_usa census_utility chicago_crime ...

现在我们来创建数据集。数据集名称最长可使用 1024 个字符,可包含 A-Z、a-z、0-9 和下划线,但不能以数字或下划线开头,也不能有空格。

  1. 使用 bq mk 命令在您的项目中创建名为 babynames 的新数据集:
bq mk babynames

示例输出:

Dataset 'qwiklabs-gcp-ba3466847fe3cec0:babynames' successfully created.

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您成功创建了名为“babynames”的 BigQuery 数据集,系统会显示一个评估分数。

创建新数据集(名称:babynames)
  • 运行 bq ls 来确认该数据集现已在您的项目中显示:
bq ls

示例输出:

datasetId ------------- babynames

上传数据集

在能够创建表之前,您需要将相应数据集添加至项目。您将使用的自定义数据文件包含了约 7 MB 的热门婴儿姓名数据,该文件由美国社会保障管理局提供。

  1. 运行以下命令将婴儿姓名 zip 文件 添加至您的项目,并使用数据文件的网址:
curl -LO http://www.ssa.gov/OACT/babynames/names.zip
  1. 列出文件:
ls

您会在项目中看到该文件名称。

  1. 现在解压缩该文件:
unzip names.zip
  1. 您会看到一大堆文本文件!再次列出各个文件:
ls

bq load 命令只需一步即可创建或更新表并加载数据。

您将使用 bq load 命令,将源文件加载到刚刚创建的婴儿姓名数据集中的新表(名为 names2010)中。默认情况下,此命令会以同步方式运行,并且只需几秒即可完成。

您将运行的 bq load 参数如下:

datasetID: babynames tableID: names2010 source: yob2010.txt schema: name:string,gender:string,count:integer
  1. 创建表:
bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer

示例输出:

Waiting on job_4f0c0878f6184119abfdae05f5194e65 ... (35s) Current status: DONE

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您已成功将数据加载到数据集表中,系统会显示一个评估分数。

将数据加载到新表中
  1. 运行 bq ls 加上 babynames,确认您的数据集中会显示该表:
bq ls babynames

输出如下:

tableId Type ----------- ------- names2010 TABLE
  1. 运行 bq show 加上 dataset.table 来查看架构:
bq show babynames.names2010

输出如下:

Last modified Schema Total Rows Total Bytes Expiration Time Partitioning Clustered Fields Labels ----------------- ------------------- ------------ ------------- ----------------- ------------------- ------------------ -------- 13 Aug 14:37:34 |- name: string 34073 654482 12 Oct 14:37:34 |- gender: string |- count: integer 注意:默认情况下,当您加载数据时,BigQuery 会要求采用 UTF-8 编码数据。如果您的数据采用 ISO-8859-1(或 Latin-1)编码,并且在加载数据时遇到问题,可以使用 -E 标志明确告知 BigQuery 将数据视为 Latin-1 编码。如需详细了解有关字符编码的信息,请参阅数据加载简介指南

任务 5. 运行查询

现在您就可以查询数据,让系统返回一些有趣的结果了。

  1. 运行以下命令来查询最受欢迎的五个女孩名:
bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'F' ORDER BY count DESC LIMIT 5"

输出如下:

Waiting on job_58c0f5ca52764ef1902eba611b71c651 ... (0s) Current status: DONE +----------+-------+ | name | count | +----------+-------+ | Isabella | 22913 | | Sophia | 20643 | | Emma | 17345 | | Olivia | 17028 | | Ava | 15433 | +----------+-------+
  1. 运行以下命令来查询最不常用的五个男孩名:
bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'M' ORDER BY count ASC LIMIT 5" 注意:最小计数为 5,因为源数据省略了出现次数少于 5 次的名字。

输出如下:

Waiting on job_556ba2e5aad340a7b2818c3e3280b7a3 ... (1s) Current status: DONE +----------+-------+ | name | count | +----------+-------+ | Aaqib | 5 | | Aaidan | 5 | | Aadhavan | 5 | | Aarian | 5 | | Aamarion | 5 | +----------+-------+

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您成功对自定义数据集运行了查询,系统会显示一个评估分数。

对您的数据集表运行查询

任务 6. 检验您的掌握情况

下列选择题应该可以强化您对本实验所涉概念的理解。请尽您所能回答。

任务 7. 清理

  1. 运行 bq rm 命令移除带有 -r 标记的 babynames 数据集,来删除数据集中的所有表:
bq rm -r babynames
  1. 输入 Y 以确认删除命令。

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您成功移除了婴儿名称数据集,系统会显示相应评分。

移除婴儿名称数据集

恭喜!

现在您可以使用命令行来查询公开表,并将示例数据加载到 BigQuery 中了。

后续步骤/了解详情

本实验是 Qwik Starts 系列实验的其中一项。通过这些实验,您可以一窥 Google Cloud 的诸多功能。请在实验目录中搜索“Qwik Starts”,找到您要参与的下一项实验!

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 1 月 26 日

上次测试实验的时间:2023 年 8 月 24 日

版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您