1. 概览
此 Codelab 将引导您分析写入 Bigtable 的信用卡交易数据流。您将了解如何使用 Bigtable change streams to 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
。 - 在变更数据流列中,点击连接。
- 在 Connect with Dataflow 对话框中,选择 BigQuery。
- 点击创建 Dataflow 作业。
- 在提供的参数字段中,输入您的参数值。 您无需提供任何可选参数。
- 将 Cloud Bigtable 应用配置文件 ID 设置为
default
。 - 将 BigQuery 数据集设置为
bigtable_bigquery_tutorial
。
- 点击运行作业。
- 等待作业状态为正在启动或正在运行,然后再继续。作业加入队列后,可能需要大约五分钟的时间。该页面会自动更新。此模板会创建一个流式作业,以便在有人手动停止作业之前,持续处理写入 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
- 使用
cbt
CLI 将一系列信用卡交易写入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 信息中心
- 点击前往视图,前往新视图的详情页面。
- 点击导出。
- 选择 Explore with Looker Studio(使用 Looker 数据洞察进行探索)
8. 将图表添加到信息中心
现在,您可以将信息绘制成图表,以便于理解并以报告形式进行分享。您要向信息中心添加三个图表:
- 不同时间段的交易金额
- 每个商家的交易总次数
- 各类别交易所占的百分比
设置页面
- 点击每个现有图表,然后按删除键将其移除。
- 选择页面右侧的房源,以便修改图表数据。
添加图表
一段时间内的交易金额
- 点击添加图表,然后创建一个时序图表。
- 将维度设置为
transaction_date
。
- 将指标设置为
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
,然后点击它。 - 点击删除,输入“delete”,然后点击删除进行确认。