使用 BigQuery 和 Looker 在 Bigtable 中分析和直观呈现信用卡交易数据

1. 概览

此 Codelab 将引导您分析写入 Bigtable 的信用卡交易数据流。您将了解如何使用 Bigtable change streams to BigQuery 模板实时导出数据。然后,您将了解查询变更数据流日志的技术,以及如何重新格式化数据以使用 Looker 创建信息中心。

此 Codelab 适用于熟悉 Bigtable、使用命令行工具和事件流服务的技术用户。

426dc59200875a20.png

此 Codelab 将介绍如何执行以下操作:

  • 创建启用了变更数据流的 Bigtable 表。
  • 创建 BigQuery 数据集。
  • 部署 Dataflow 模板 Bigtable change streams to BigQuery.
  • 在 BigQuery 中查询事件流。
  • 使用 Looker 可视化事件流。

下图显示了将要部署的系统的架构。

336e940307d0e0a

2. 项目设置

  1. 在 Google Cloud 控制台的“项目选择器”页面上,选择或创建 Google Cloud 项目

eb5309715175de69.png

  1. 确保您的 Google Cloud 项目已启用结算功能
  2. 访问这个已预先填充的 API 启用页面,为 Dataflow、Bigtable、BigQuery、Looker 和 Cloud Storage 启用必要的 API。

3. 创建 BigQuery 数据集

稍后您将在此 Codelab 中使用 BigQuery 分析数据。请按照以下说明为数据流水线的输出创建数据集。

  1. 在 Google Cloud 控制台中,前往 BigQuery 页面
  2. 探索器窗格中,找到您的项目名称,然后点击溢出菜单(项目 ID 旁边的三个垂直点)。
  3. 点击创建数据集

122bc1a411b8dc63

  1. 创建数据集面板中,执行以下操作:
  • 数据集 ID 部分,输入 bigtable_bigquery_tutorial
  • 将其余默认设置保持不变。
  • 点击创建数据集

4. 创建启用了变更数据流的 Bigtable 表

Bigtable 是一种低延迟、可横向扩缩的 NoSQL 数据库服务,其常见用例之一是提供金融数据。在这里,您将创建一个用于存储信用卡交易的表。Bigtable 可以处理全球范围内的事务高吞吐量写入,甚至可以利用这些数据进行实时欺诈检测

  1. 在 Google Cloud 控制台中,前往 Bigtable 实例页面
  2. 点击您在本教程中使用的实例的 ID。如果您没有可用实例,请在您附近的区域中创建一个实例并为其指定您选择的名称。您可以对所有其他内容使用默认配置。

a2e8de7b66dc42e.png

  1. 在左侧导航窗格中,点击
  2. 点击创建表

9c267c00f93747c4.png

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

696cd1399c354816.png

5. 初始化数据流水线以捕获变更数据流

Bigtable 的性能对于点读取和行范围扫描而言是最佳的,但表级分析可能会给服务容量和 CPU 资源造成压力。BigQuery 非常适合进行表级分析,因此您在此处要使用的解决方案是双写入。这意味着,您将数据写入 Bigtable 和 BigQuery,这是一种常见的技术。您无需额外编码,因为您将使用 Bigtable change streams to BigQuery Dataflow 模板:当数据写入 Bigtable 时,流水线会在 BigQuery 中写入更改记录。数据进入 BigQuery 后,您可以对整个数据集执行经过优化的查询,而不会影响 Bigtable 中服务数据的性能。

f4cd9d8faf10ce77.png

  1. 在 Bigtable 页面上,找到表 retail-database
  2. 变更数据流列中,点击连接
  3. Connect with Dataflow 对话框中,选择 BigQuery
  4. 点击创建 Dataflow 作业
  5. 在提供的参数字段中,输入您的参数值。 您无需提供任何可选参数。
  • 将 Cloud Bigtable 应用配置文件 ID 设置为 default
  • 将 BigQuery 数据集设置为 bigtable_bigquery_tutorial
  1. 点击运行作业
  2. 等待作业状态为正在启动正在运行,然后再继续。作业加入队列后,可能需要大约五分钟的时间。该页面会自动更新。此模板会创建一个流式作业,以便在有人手动停止作业之前,持续处理写入 Bigtable 的新数据。

a04908b37c6fe96b.png

6. 将一些数据写入 Bigtable

现在,您将向 Bigtable 表中写入一年的信用卡交易数据。此示例数据集包含信用卡号、商家名称和 ID 以及金额等信息。在实际的信用卡处理应用中,每笔交易发生时,这些数据都会实时流式传输到您的数据库。

  1. 点击云端控制台右上角的按钮,打开 Cloud Shell。

f6395329b04ecb64.png

  1. 如果系统提示,请接受授权 Cloud Shell 的提示。
  2. 下载数据集。
gsutil cp gs://cloud-bigtable-public-datasets/change-streams-tutorial/cc-transactions-2023.csv .
  1. 在命令行中设置环境变量
PROJECT_ID=your-project-id
BIGTABLE_INSTANCE_ID=your-bigtable-instance-id
  1. 使用 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 中查看变更日志

  1. 在 Google Cloud 控制台中,前往 BigQuery 页面
  2. 探索器窗格中,展开您的项目和数据集 bigtable_bigquery_tutorial
  3. 点击表 retail-database_changelog。如果没有该表,您可能需要刷新数据集。
  4. 如需查看变更日志,请点击预览

aa97ff01f944832.png

尝试查询一些查询

现在,您可以对此数据集运行一些查询,以获取一些数据洞见。此处提供了 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 信息中心

  1. 点击前往视图,前往新视图的详情页面。
  2. 点击导出
  3. 选择 Explore with Looker Studio(使用 Looker 数据洞察进行探索)

bb45482e9101b0f.png

8. 将图表添加到信息中心

现在,您可以将信息绘制成图表,以便于理解并以报告形式进行分享。您要向信息中心添加三个图表:

  • 不同时间段的交易金额
  • 每个商家的交易总次数
  • 各类别交易所占的百分比

426dc59200875a20.png

设置页面

  1. 点击每个现有图表,然后按删除键将其移除。
  2. 选择页面右侧的房源,以便修改图表数据。

添加图表

一段时间内的交易金额

  1. 点击添加图表,然后创建一个时序图表。
  2. 维度设置为 transaction_date
  1. 指标设置为 sales_dollars

372bdf2a2bcdb817.png

每个商家的交易总次数

  1. 点击添加图表,然后创建一个表格。
  2. 维度设置为 merchant
  3. 指标设置为 sales_dollars

每个类别的交易所占百分比

  1. 点击添加图表,然后创建一个饼图。
  2. 维度设置为 category
  3. 指标设置为 sales_dollars

查看实时更改

花些时间探索图表中的值。您可以点击表格中的特定商家或特定类别,这会导致所有图表都按这些特定值进行过滤,以便您获得更多数据洞见。接下来,您可以写入更多数据,并查看此图表将如何实时更新。

  1. 返回 Cloud Shell。
  2. 下载并写入第二个数据集。
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
  1. 返回 Looker 信息中心并使用 Ctrl+Shift+E 命令刷新数据,或点击视图菜单中的刷新数据。现在,您应该会在图表中看到 2024 年 1 月的数据。

除此之外,您还可以创建许多不同的图表和指标。如需了解详情,请参阅 Looker 文档

9. 清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

停止变更数据流流水线

  1. 在 Google Cloud 控制台中,前往 Dataflow 作业页面
  2. 从作业列表中选择您的流处理作业。
  3. 在导航中,点击停止
  4. 在“停止作业”对话框中,选择取消,然后点击停止作业

删除 Bigtable 资源

如果您为本教程创建了一个 Bigtable 实例,可以将其删除,也可以清理所创建的表。

  1. 在 Google Cloud 控制台中,前往 Bigtable 实例页面
  2. 点击您在本教程中使用的实例的 ID。
  3. 在左侧导航窗格中,点击
  4. 找到 retail-database 表。
  5. 点击修改
  6. 清除启用变更数据流
  7. 点击保存
  8. 打开该表的溢出菜单。
  9. 点击删除,然后输入表名称进行确认。
  10. 可选:删除实例(如果您为本教程创建了新实例)

删除 BigQuery 数据集

  1. 在 Google Cloud 控制台中,前往 BigQuery 页面
  2. 探索器面板中,找到数据集 bigtable_bigquery_tutorial,然后点击它。
  3. 点击删除,输入“delete”,然后点击删除进行确认。

后续步骤