1. 概览
此 Codelab 将引导您分析正在写入 Bigtable 的信用卡交易数据流。您将了解如何使用 Bigtable 变更数据流到 BigQuery 模板实时导出数据。然后,您将了解查询变更数据流日志的技巧,以及如何重新设置数据格式以使用 Looker 创建信息中心。
此 Codelab 适用于熟悉 Bigtable、使用命令行工具和事件流服务的技术用户。

此 Codelab 将介绍如何执行以下操作:
- 创建启用了变更数据流的 Bigtable 表。
- 创建 BigQuery 数据集。
- 部署 Dataflow 模板
Bigtable change streams to BigQuery. - 在 BigQuery 中查询事件流。
- 使用 Looker 直观呈现事件流。
此图显示了您将部署的系统架构。

2. 项目设置
- 在 Google Cloud 控制台的“项目选择器”页面上,选择或创建 Google Cloud 项目。

- 确保您的 Google Cloud 项目已启用结算功能。
- 访问此预填充的 API 启用页面,以启用 Dataflow、Bigtable、BigQuery、Looker 和 Cloud Storage 所需的 API。
3. 创建 BigQuery 数据集
您将在本 Codelab 的后续部分中使用 BigQuery 分析数据。请按照以下说明为数据流水线的输出创建数据集。
- 在 Google Cloud 控制台中,前往 BigQuery 页面。
- 在探索器窗格中,找到您的项目名称,然后点击溢出菜单(项目 ID 旁边的三个竖点)。
- 点击创建数据集。

- 在创建数据集面板中,执行以下操作:
- 在数据集 ID 部分,输入
bigtable_bigquery_tutorial。 - 其余默认设置保持不变。
- 点击创建数据集。
4. 创建启用了变更数据流的 Bigtable 表
Bigtable 是一种低延迟、可横向扩缩的 NoSQL 数据库服务,其常见应用场景之一是提供金融数据。在此处,您将创建一个可存储信用卡交易的表。Bigtable 可以处理全球交易的高吞吐量写入,甚至可以使用这些数据进行实时欺诈检测。
- 在 Google Cloud 控制台中,前往 Bigtable 实例页面。
- 点击您在本教程中使用的实例的 ID。如果您没有可用实例,请在您附近的区域中创建一个您选择名称的实例。对于其他所有内容,您都可以使用默认配置。

- 在左侧导航窗格中,点击表。
- 点击创建表。

- 将表格命名为
retail-database。 - 添加一个名为
transactions的列族。 - 选择启用变更数据流。
- 将垃圾回收政策和保留期限保留为默认值。
- 点击创建。

5. 初始化数据流水线以捕获变更数据流
Bigtable 的性能在点读取和行范围扫描方面表现出色,但全表分析可能会给服务容量和 CPU 资源带来压力。BigQuery 非常适合进行全表分析,因此您将在此处使用的解决方案是双重写入。这意味着您将数据写入 Bigtable 和 BigQuery,这是一种常用技术。由于您将使用 Bigtable change streams to BigQuery Dataflow 模板,因此无需进行额外的编码:当数据写入 Bigtable 时,流水线会在 BigQuery 中写入变更记录。将数据导入 BigQuery 后,您可以对整个数据集执行优化查询,而不会影响 Bigtable 中提供的数据的性能。

- 在 Bigtable 表页面上,找到表
retail-database。 - 在变更数据流列中,点击连接。
- 在使用 Dataflow 进行连接对话框中,选择 BigQuery。
- 点击创建 Dataflow 作业。
- 在提供的参数字段中,输入您的参数值。 您无需提供任何可选参数。
- 将 Cloud Bigtable 应用配置文件 ID 设置为
default。 - 将 BigQuery 数据集设置为
bigtable_bigquery_tutorial。
- 点击运行作业。
- 等待作业状态为正在启动或正在运行,然后再继续。作业排队后,可能需要大约 5 分钟才能完成。页面会自动更新。此模板会创建流式作业,因此它可以持续处理写入 Bigtable 的新数据,直到手动停止该作业为止。

6. 向 Bigtable 写入一些数据
现在,您将向 Bigtable 表中写入一年的信用卡交易数据。此示例数据集包含信用卡号、商家名称和 ID 以及金额等信息。在实际的信用卡处理应用中,此数据会在每次交易发生时实时流入数据库。
- 点击云控制台右上角的按钮,打开 Cloud Shell。

- 如果系统提示您授权 Cloud Shell,请接受该提示。
- 下载数据集。
gsutil cp gs://cloud-bigtable-public-datasets/change-streams-tutorial/cc-transactions-2023.csv .
- 在命令行中设置环境变量
PROJECT_ID=your-project-id
BIGTABLE_INSTANCE_ID=your-bigtable-instance-id
- 使用
cbtCLI 将一些信用卡交易写入retail-database表。
cbt -instance=$BIGTABLE_INSTANCE_ID -project=$PROJECT_ID import \
retail-database cc-transactions-2023.csv column-family=transactions
输出将显示
Done importing 10000 rows.
7. 在 BigQuery 中查看变更日志
- 在 Google Cloud 控制台中,前往 BigQuery 页面。
- 在探索器窗格中,展开您的项目和数据集
bigtable_bigquery_tutorial。 - 点击表
retail-database_changelog。如果未显示该表,您可能需要刷新数据集。 - 如需查看变更日志,请点击预览。

尝试一些查询
现在,您可以针对此数据集运行一些查询,以获取一些数据洞见。此处提供了 SQL 查询,但在 BigQuery 中查询 Bigtable 更新日志文档中提供了有关如何为更新日志数据编写查询的更多信息。
查找交易
使用以下查询查找特定交易的数据。
SELECT *
FROM `bigtable_bigquery_tutorial.retail-database_changelog`
WHERE row_key="3034-442694-3052#2023-03-03T14:50:46.824Z"
您会看到,写入的每个列都已转换为 BigQuery 中的单独一行。
查找每个类别中的购买次数
使用以下查询可统计每个类别的购买次数。
SELECT value as category, count(*) as `number of sales`
FROM `bigtable_bigquery_tutorial.retail-database_changelog`
WHERE column="category"
GROUP BY category
重新格式化数据
为了将每笔交易重构为单个 BigQuery 表行,您需要透视数据并将结果保存到新表中。这种格式更易于查询。
CREATE VIEW bigtable_bigquery_tutorial.retail_transactions_view AS (
SELECT *, parse_numeric(amount) as sales_dollars FROM (
SELECT row_key, timestamp, column, value
FROM `bigtable_bigquery_tutorial.retail-database_changelog`
)
PIVOT (
MAX(value)
FOR column in ("merchant", "amount", "category", "transaction_date")
)
)
创建 Looker 信息中心
- 点击前往查看,即可前往新视图的详情页面。
- 点击导出。
- 选择使用 Looker Studio 进行探索

8. 将图表添加到信息中心
现在,您可以将这些信息绘制成图表,以便更轻松地理解和以报告的形式分享。您将向信息中心添加三个图表:
- 不同时间段的交易金额
- 每位商家的总交易次数
- 各类别交易的百分比

设置页面
- 点击每个现有图表,然后按 Delete 键将其移除。
- 选择页面右侧的房源,以便修改图表数据。
添加图表
不同时间段的交易金额
- 点击添加图表,然后创建时序图表。
- 将维度设置为
transaction_date。
- 将 Metric 设置为
sales_dollars。

每位商家的总交易次数
- 点击添加图表,然后创建一个表格。
- 将维度设置为
merchant。 - 将指标设置为
sales_dollars
各类别交易的百分比
- 点击添加图表,然后创建饼图。
- 将维度设置为
category。 - 将指标设置为
sales_dollars
查看实时更改
花些时间探索图表中的值。您可以点击表格中的特定商家或特定类别,这样所有图表都会根据这些特定值进行过滤,从而为您提供更多数据洞见。接下来,您可以写入更多数据,看看此图表会如何实时更新。
- 返回到 Cloud Shell。
- 下载并写入第二个数据集。
gsutil cp gs://cloud-bigtable-public-datasets/change-streams-tutorial/cc-transactions-2024-jan.csv .
cbt -instance=$BIGTABLE_INSTANCE_ID -project=$PROJECT_ID import \
retail-database cc-transactions-2024-jan.csv column-family=transactions
- 返回 Looker 信息中心,然后使用命令
Ctrl+Shift+E刷新数据,或点击视图菜单中的刷新数据。现在,您应该会在图表中看到 2024 年 1 月的数据。
除了上述图表和指标之外,您还可以创建许多其他类型的图表和指标。如需了解详情,请参阅 Looker 文档。
9. 清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
停止变更数据流流水线
- 在 Google Cloud 控制台中,前往 Dataflow 作业页面。
- 从作业列表中选择您的流处理作业。
- 在导航中,点击停止。
- 在“停止作业”对话框中,选择取消,然后点击停止作业。
删除 Bigtable 资源
如果您为本教程创建了一个 Bigtable 实例,可以将其删除,也可以清理您创建的表。
- 在 Google Cloud 控制台中,前往 Bigtable 实例页面。
- 点击您在本教程中使用的实例的 ID。
- 在左侧导航窗格中,点击表。
- 找到
retail-database表。 - 点击修改。
- 清除启用变更数据流。
- 点击保存。
- 打开该表的溢出菜单。
- 点击删除,然后输入表名称进行确认。
- 可选:删除实例(如果您为此教程创建了新实例)
删除 BigQuery 数据集
- 在 Google Cloud 控制台中,前往 BigQuery 页面。
- 在探索器面板中,找到数据集
bigtable_bigquery_tutorial,然后点击它。 - 点击删除,输入“删除”,然后点击删除进行确认。