关于此 Codelab
1. 简介
不妨想象一下,您无需成为编码专家,就能更快、更高效地准备好数据以供分析。借助 BigQuery 数据准备,这已成为现实。这项强大的功能可简化数据提取、转换和清理流程,让组织中的所有数据从业者都能轻松完成数据准备工作。
准备好解锁商品数据中隐藏的秘密了吗?
前提条件
- 对 Google Cloud 控制台有基本的了解
- 对 SQL 有基本的了解
学习内容
- 通过时尚和美容行业的真实示例,了解 BigQuery 数据准备功能如何清理原始数据并将其转换为富有实用价值的商业智能。
- 如何为已清理的数据运行和安排数据准备
所需条件
- Google Cloud 账号和 Google Cloud 项目
- 网络浏览器,例如 Chrome
2. 基本设置和要求
自定进度的环境设置
- 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个。
- 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
- 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常情况下,您无需关注该字符串。在大多数 Codelab 中,您都需要引用项目 ID(通常用
PROJECT_ID
标识)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且此 ID 在项目期间会一直保留。 - 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档。
- 接下来,您需要在 Cloud 控制台中启用结算功能,才能使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有的话)。若要关闭资源以避免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除项目。Google Cloud 新用户符合参与 300 美元免费试用计划的条件。
3. 准备工作
启用 API
如需在 BigQuery 中使用 Gemini,您必须启用 Gemini for Google Cloud API。通常,具有 serviceusage.services.enable
IAM 权限的服务管理员或项目所有者会执行此步骤。
- 如需启用 Gemini for Google Cloud API,请前往 Google Cloud Marketplace 中的 Gemini for Google Cloud 页面。前往 Gemini for Google Cloud
- 在项目选择器中,选择一个项目。
- 点击启用。页面会更新,并显示状态为已启用。现在,具有所需 IAM 权限的所有用户都可以在所选的 Google Cloud 项目中使用 Gemini in BigQuery。
设置角色和权限以开发数据准备流程
- 在“IAM 和管理”中,选择“IAM”
- 选择您的用户,然后点击铅笔图标以“修改主要用户”
如需使用 BigQuery 数据准备,您需要拥有以下角色和权限:
- BigQuery Data Editor (roles/bigquery.dataEditor)
- Service Usage Consumer (roles/serviceusage.serviceUsageConsumer)
4. 在 BigQuery Analytics Hub 中查找并订阅“bq data preparation demo”(bq 数据准备演示)列表
在本教程中,我们将使用 bq data preparation demo
数据集。这是 BigQuery Analytics Hub 中的一个关联数据集,我们将从中读取数据。
数据准备功能绝不会将数据写回来源,我们会要求您定义要写入的目标表。为降低费用,我们在本练习中使用的表只有 1,000 行,但数据准备会在 BigQuery 上运行,并会随之扩容。
请按照以下步骤查找并订阅关联的数据集:
- 访问 Analytics Hub:在 Google Cloud 控制台中,前往 BigQuery。
- 在 BigQuery 导航菜单中,选择“治理”下的“分析中心”。
- 搜索商品详情:在 Analytics Hub 界面中,点击搜索商品详情。”
- 在搜索栏中输入
bq data preparation demo
,然后按 Enter 键。
- 订阅商家信息:从搜索结果中选择
bq data preparation demo
商家信息。 - 在商家信息详情页面上,点击订阅按钮。
- 查看所有确认对话框,并根据需要更新项目/数据集。默认值应该是合适的。
- 在 BigQuery 中访问数据集:成功订阅后,商家信息中的数据集将与您的 BigQuery 项目相关联。
返回 BigQuery Studio。
5. 探索数据并启动数据准备
- 找到数据集和表格:在“探索器”面板中,选择您的项目,然后找到
bq data preparation demo
列表中包含的数据集。选择stg_product
表。 - 在“数据准备”中打开:点击表格名称旁边的三个竖点,然后选择
Open in Data Preparation
。
这会在“数据准备”界面中打开该表,以便您开始转换数据。
如您在下方的数据预览中所看到的,我们需要解决一些数据问题,包括:
- 价格列同时包含金额和币种,因此难以进行分析。
- “商品”列混合了商品名称和类别(以管道符号 | 分隔)。
Gemini 会立即分析您的数据,并建议您进行多项转换。在此示例中,我们看到了多条建议。在后续步骤中,我们将应用所需的注解。
6. 处理价格列
我们来处理价格列。如我们所知,它包含币种和金额。我们的目标是将这些数据分为两个不同的列:币种和金额。
Gemini 针对“价格”列提供了一些建议。
- 找到一条内容类似于以下内容的建议:
说明:“此表达式会从指定字段中移除前面的‘USD’”
REGEXP_REPLACE(Price,` `r'^USD\s',` `r'')
- 选择“预览”
- 选择“应用”
接下来,针对 Price 列,将数据类型从 STRING 转换为 NUMERIC。
- 找到一条内容类似于以下内容的建议:
说明:“将‘Price’列从字符串类型转换为 float64”
SAFE_CAST(Price AS float64)
- 选择“应用”。
现在,您应该会在步骤列表中看到三个已应用的步骤。
7. 处理商品列
“商品”列包含商品名称和类别,以英文竖线 (|) 分隔。
虽然我们可以再次使用自然语言,但我们来探索一下 Gemini 的另一项强大功能。
清理商品名称
- 选择商品条目的类别部分(包括
|
字符),然后将其删除。
Gemini 会智能识别此模式,并建议对整个列应用转换。
- 选择“修改”。
Gemini 的建议非常准确:它会移除‘|’字符后的所有内容,从而有效地隔离商品名。
但这次我们不想覆盖原始数据。
- 在目标列下拉菜单中,选择“新建列”。
- 将名称设置为 ProductName。
- 预览更改,确保所有内容都看起来不错。
- 应用转换。
提取商品类别
我们将使用自然语言指示 Gemini 提取“产品”列中竖线 (|) 后面的字词。系统会将此提取的值覆盖到名为“Product”的现有列中。
- 点击
Add Step
以添加新的转换步骤。
- 从下拉菜单中选择
Transformation
- 在自然语言提示字段中,输入“提取“商品”列中英文冒号 (|) 后面的字词”。然后按回车键生成 SQL。
- 将“目标列”保留为“商品”。
- 点击“应用”。
转换后,您应该会看到以下结果。
8. 联接以丰富数据
通常,您需要使用其他来源的信息来丰富数据。在本例中,我们将商品数据与第三方表中的扩展商品属性 stg_extended_product
联接起来。此表格包含品牌和发布日期等详细信息。
- 点击
Add Step
- 选择
Join
- 浏览到
stg_extended_product
表。
Gemini in BigQuery 会自动为我们选择 productid 联接键,并对左侧和右侧进行限定,因为键名称相同。
注意:确保“Description”字段显示“Join by productid”。如果它包含其他联接键,请将“Description”字段替换为“Join by productid”,然后选择“Description”字段中的“Generate”按钮,以使用以下条件 L 重新生成联接表达式。
productid
= R.
productid
。
- (可选)选择“预览”以预览结果。
- 点击
Apply
。
清理扩展属性
虽然联接成功了,但需要对扩展属性数据进行一些清理。LaunchDate
列的日期格式不一致,并且 Brand
列中缺少一些值。
我们先从 LaunchDate
列开始。
在创建任何转换之前,请先查看 Gemini 的建议。
- 点击
LaunchDate
列名称。您应该会看到系统生成的一些建议,类似于下图中的建议。
- 如果您看到包含以下 SQL 的建议,请采纳该建议,然后跳过后续步骤。
COALESCE(SAFE.PARSE_DATE('%Y-%m-%d',
LaunchDate),SAFE.PARSE_DATE('%Y/%m/%d', LaunchDate))
- 如果您没有看到与上述 SQL 匹配的建议,请点击
Add Step
。 - 选择
Transformation
。 - 在“SQL”字段中,输入以下内容:
COALESCE(SAFE.PARSE_DATE('%Y-%m-%d',
LaunchDate),SAFE.PARSE_DATE('%Y/%m/%d', LaunchDate))
- 将
Target Columns
设置为LaunchDate
。 - 点击
Apply
。
“LaunchDate”列现在采用一致的日期格式。
9. 添加目标表
现在,我们的数据集已经过清理,可以加载到数据仓库中的维度表中了。
- 点击
ADD STEP
。 - 选择
Destination
。 - 填写必需参数:数据集:
bq_data_preparation_demo
表:DimProduct
- 点击
Save
。
现在,我们已经使用了“数据”和“架构”标签页。除此之外,BigQuery 数据准备还提供了“图表”视图,可直观显示流水线中的转换步骤序列。
10. 附录 A:处理“Manufacturer”列并创建“Error”表
我们还发现了 Manufacturer
列中存在空值。对于这些记录,我们希望实现数据质量检查,并将其移至错误表以供进一步审核。
创建错误表
- 点击
stg_product data preparation
标题旁边的More
按钮。 - 在
Setting
部分下,选择Error Table
。 - 选中
Enable error table
复选框,然后按如下方式配置设置:
- 数据集:选择
bq_data_preparation_demo
- 表格:输入
err_dataprep
- 在
Define duration for keeping errors
下,选择30 days (default)
- 点击
Save
。
为“制造商”列设置验证
- 选择“制造商”列。
- Gemini 可能会发现相关的转换。找到仅保留“Manufacturer”字段不为空的行所对应的建议。其 SQL 将类似于以下内容:
Manufacturer IS NOT NULL
2. 点击此建议上的“修改”按钮进行查看。
- 选中“验证失败的行会转到错误表”选项(如果未选中)
- 点击
Apply
。
您可以随时点击“已应用的步骤”按钮,查看、修改或删除已应用的转换。
清理多余的 ProductID_1 列
现在,可以删除 ProductID_1 列,该列复制了联接表中的 ProductID。
- 前往
Schema
标签页 - 点击
ProductID_1
列旁边的三点状图标。 - 点击
Drop
。
现在,我们可以运行数据准备作业并验证整个流水线了。当我们对结果满意后,就可以安排作业自动运行。
- 在离开数据准备视图之前,请保存您的准备工作。您应该会在
stg_product data preparation
标题旁边看到Save
按钮。点击按钮进行保存。
11. 清理环境
- 删除
stg_product data preparation
- 删除
bq data preparation demo
数据集