1. 简介
BigQuery 是一个无服务器、扩缩能力极强且经济实惠的数据仓库。您只需将数据迁移至 BigQuery,余下的困难部分由我们负责,这样您就可以专注于真正重要的事情,即运营业务。您可以根据业务需求控制对项目和数据的访问权限,例如授权其他人来查看或查询您的数据。
在本实验中,您将探索 BigQuery 的分析功能。您将学习如何从 Google Cloud Storage 存储分区导入数据集,并通过处理零售银行业务数据集来熟悉 BigQuery 界面。此外,本实验还将教您如何发现 BigQuery 中的关键功能,这些功能可让您的日常分析工作变得更加轻松,例如将查询结果导出到电子表格、查看和运行查询历史记录中的查询、查看查询性能,以及创建供其他团队和部门使用的表视图。
学习内容
在本实验中,您将学习如何执行以下任务:
- 将新数据加载到 BigQuery 中
- 熟悉 BigQuery 界面
- 在 BigQuery 中运行查询
- 查看查询效果
- 在 BigQuery 中创建视图
- 与他人安全地共享数据集
2. 简介:了解 BigQuery 界面
在本部分中,您将学习如何浏览 BigQuery 界面、查看可用的数据集并运行简单的查询。
加载 BQ 界面
- 在 Google Cloud Platform 控制台顶部的搜索框中输入“BigQuery”。
- 从选项列表中选择 BigQuery。请务必选择带有 BigQuery 徽标(放大镜)的选项。
查看数据集和运行查询

- 在左侧窗格的“资源”部分,点击您的 BigQuery 项目。
- 点击
bq_demo可查看相应数据集中的表格 - 在“输入内容进行搜索”框中,输入“卡片”,即可看到名称中包含“卡片”的表和数据集的列表。
- 从搜索结果列表中选择“card_transactions”表

- 点击
card_transactions窗格下的“详细信息”标签页,查看此表的元数据。 - 点击“预览”标签页可查看表格的预览效果
[竞争性卖点]: 与 Google Data Catalog 集成意味着 BigQuery 元数据可以与其他数据源(例如数据湖或运营数据源)一起进行管理。此示例表明,Google Cloud 不仅是关系型数据仓库,还是一个完整的数据分析平台。
- 点击放大镜图标,查询“card_transactions”表。系统会自动生成文本并填充到 BigQuery 查询编辑器中。
- 输入以下代码,以显示 Card_Transactions 表中的不同商家
SELECT distinct (merchant) FROM bq_demo.card_transactions LIMIT 1000
- 点击“运行”按钮以运行查询。

3. 创建数据集和共享视图
数据共享和治理至关重要,可以在 BQ 界面中直观地完成。在本部分中,您将学习如何创建新数据集、使用视图填充该数据集,以及共享该数据集。
查看查询历史记录
- 点击 GCP Console 左侧窗格中的“查询历史记录”
- 点击“查询历史记录”窗格中的“刷新”
- 点击查询最右侧的下载图片/箭头,即可查看查询结果。

创建新数据集
- 在 BigQuery 界面的资源窗格中,选择 [您的项目名称]。
- 从项目信息窗格中选择“创建新数据集”
- 对于数据集 ID:
bq_demo_shared
- 将所有其他字段保留为默认值
- 点击“创建数据集”

创建视图
[竞争性卖点]: BigQuery 完全符合 ANSI SQL 标准,支持简单和复杂的多表联接以及丰富的分析函数。我们不断发布增强功能,以支持传统数据仓库中常用的 SQL 数据类型和函数,从而简化迁移流程。
- 在“查询编辑器”窗格顶部选择“编写新查询”。
- 在查询编辑器中插入以下代码
WITH revenue_by_month AS (
SELECT
card.type AS card_type,
FORMAT_DATE('%Y-%m', trans_date) as revenue_date,
SUM(amount) as revenue
FROM bq_demo.card_transactions
JOIN bq_demo.card ON card_transactions.cc_number = card.card_number
WHERE trans_date DATE_ADD(CURRENT_DATE, INTERVAL -1 YEAR)
GROUP BY card_type, revenue_date
)
SELECT
card_type,
revenue_date,
revenue as monthly_rev,
revenue - LAG(revenue) OVER (ORDER BY card_type, revenue_date ASC) as rev_change
FROM revenue_by_month
ORDER BY card_type, revenue_date ASC;
- 点击“保存视图”
- 为“项目名称”选择当前项目
- 选择新创建的数据集:
bq_demo_shared
- 对于表名称:
rev_change_by_card_type
- 点击“保存”。

共享视图和数据集
- 在 BigQuery 界面左侧的资源窗格中,选择“bq_demo_shared”数据集。
- 在数据集信息窗格中,点击“共享数据集”
- 输入电子邮件地址
- 从“角色”下拉菜单中选择“BigQuery Data Viewer”
- 点击“添加”
- 点击 完成

探索 Google 表格中的数据
[竞争性卖点]: 与竞争对手相比,BigQuery 的另一优势在于 BI Engine。BI Engine 可用于通过内存中缓存引擎使 BI 类型摘要查询在不到一秒的时间内返回结果。目前,Google 数据洞察支持此功能,但很快就会推出此功能,以加快 BigQuery 中的所有查询。
例如:
Snowflake 依赖于第三方 BI 工具来提供信息中心和数据可视化功能,而 GCP 提供了一系列集成式 BI 工具,包括关联工作表、数据洞察和 Looker。
- 在 BigQuery 界面中,从左侧资源窗格中选择“rev_change_by_card_type”视图。
- 点击放大镜图标可查询视图

- Type:
SELECT *
FROM bq_demo_shared.rev_change_by_card_type
- 点击“运行”
- 点击“结果”窗格中的“导出”图标
- 选择“使用 Google 表格探索数据”

- 点击“开始分析”
- 选择“透视表”
- 选择“新建工作表”
- 点击“创建”
- 在 Google 表格窗口右侧的数据透视表编辑器的“行”部分下添加“revenue_date”
- 在数据透视表编辑器的“列”部分下添加“card_type”
- 在数据透视表编辑器的“列”部分下添加“monthly_rev”
- 点击“应用”

- 前往 Google 表格界面的顶部功能区,然后选择“插入” “图表”
4. 设置:数据集成
在本部分中,您将学习如何创建新表,以及如何对 Google Cloud 提供的众多公开数据集之一执行 JOIN 操作。
[Competitive Talking Point]:
BigQuery 多年来一直支持共享数据集。任何项目中的客户都可以查询公共数据集以及已与他们共享的其他项目中的数据集。
BigQuery 可以通过使用外部表来支持 GCS 中的数据湖。除了批量加载之外,BigQuery 还支持以每秒数百 MB 以上的速度将数据流式传输到数据库中。Snowflake 不支持流式数据。
将数据导入到新表中
- 在资源窗格中,选择 bq_demo 数据集
- 在数据集信息窗格中,选择“创建表”
- 为来源选择 Google Cloud Storage
- 在文件路径文本框中:
gs://retail-banking-looker/district
- 为“文件格式”选择“CSV”
- 为“表名称”输入“district”
- 选中“自动检测架构”复选框
- 点击“创建表”
查询公共数据集
- 在查询编辑器中输入以下查询:
SELECT
CAST(geo_id as STRING) AS zip_code,
total_pop,
median_age,
households,
income_per_capita,
housing_units,
vacant_housing_units_for_sale,
ROUND(SAFE_DIVIDE(employed_pop, pop_16_over),4) AS rate_employment,
ROUND(SAFE_DIVIDE(bachelors_degree_or_higher_25_64, pop_25_64),4) AS rate_bachelors_degree_or_higher_25_64
FROM
`bigquery-public-data.census_bureau_acs.zip_codes_2017_5yr`;
- 点击“运行”
- 查看结果

- 现在,我们将此公开数据与另一个查询结合使用。在查询编辑器中输入以下 SQL 代码:
WITH customer_counts AS (
select regexp_extract(address, "[0-9][0-9][0-9][0-9][0-9]") as zip_code,
count(*) as num_clients
FROM bq_demo.client
GROUP BY zip_code
)
SELECT
CAST(geo_id as STRING) AS zip_code,
total_pop,
median_age,
households,
income_per_capita,
ROUND(SAFE_DIVIDE(employed_pop, pop_16_over),4) AS rate_employment,
num_clients
FROM
`bigquery-public-data.census_bureau_acs.zip_codes_2017_5yr`
JOIN customer_counts on zip_code = geo_id
ORDER BY num_clients DESC
- 点击“运行”
- 查看结果

5. 容量管理
使用槽和预留
BigQuery 提供多种价格模式,可满足您的需求。大多数大型客户主要采用固定费率,以获得可预测的价格和预留的容量。对于超出该基准容量的爆发,BQ 提供灵活槽,让您可以随时扩充容量,然后自动缩减,而不会影响正在运行的查询。BQ 还提供字节扫描模式,让您只需为运行的查询付费。
[竞争性卖点: 一些竞争对手完全采用固定容量模式,客户必须为其组织中的每个工作负载分配一个虚拟数据仓库。除了低成本的按查询付费模式(可让您轻松开始使用 BigQuery)之外,我们还支持固定费率容量定价模式,其中空闲容量可在一组工作负载之间共享。]
- 前往“预订”标签页。

- 点击“购买广告位”

- 选择“灵活”作为时长。
- 选择 500 个槽。
- 确认购买。

- 点击“查看槽用量承诺”。
- 点击“创建预留”
- 以“demo”作为预留名称的用户
- 选择“美国”作为位置
- 输入 500 作为槽数(所有槽均可用)
- 点击“分配关系”
- 为组织项目选择当前项目
- 为预留 ID 选择“demo”
- 点击“创建”。