透過 BigQuery 和 Looker 分析 Bigtable 中的信用卡交易資料,並以圖表呈現

1. 總覽

本程式碼研究室會逐步說明如何分析寫入 Bigtable 的信用卡交易資料串流。您將瞭解如何使用 Bigtable 變更串流至 BigQuery 範本,即時匯出資料。接著,您將瞭解如何查詢變更串流記錄,以及如何重新格式化資料,以便使用 Looker 建立資訊主頁。

本程式碼研究室的目標對象為熟悉 Bigtable、指令列工具和事件串流服務的技術人員。

426dc59200875a20.png

本程式碼研究室會說明如何執行下列操作:

  • 建立已啟用變更串流的 Bigtable 資料表。
  • 建立 BigQuery 資料集。
  • 部署 Dataflow 範本 Bigtable change streams to BigQuery.
  • 在 BigQuery 中查詢事件串流。
  • 使用 Looker 以視覺化的方式呈現事件串流。

下圖顯示您將部署的系統架構。

336e940307d0e0a.png

2. 專案設定

  1. 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案

eb5309715175de69.png

  1. 請確認 Google Cloud 專案已啟用計費功能
  2. 前往這個預先填入的 API 啟用頁面,啟用 Dataflow、Bigtable、BigQuery、Looker 和 Cloud Storage 的必要 API。

3. 建立 BigQuery 資料集

您會在程式碼實驗室稍後使用 BigQuery 分析資料。請按照下列操作說明,為資料管道的輸出內容建立資料集。

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。
  2. 在「Explorer」窗格中找到專案名稱,然後點選溢位選單 (專案 ID 旁邊的三個垂直點)。
  3. 點選「建立資料集」

122bc1a411b8dc63.png

  1. 在「建立資料集」面板中,執行下列操作:
  • 在「Dataset ID」(資料集 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 的「Tables」(資料表) 頁面中,找出所需資料表 retail-database
  2. 在「變更串流」欄中,按一下「連線」
  3. 在「Connect with Dataflow」(透過 Dataflow 連線) 對話方塊中,選取「BigQuery」
  4. 按一下「建立 Dataflow 工作」
  5. 在提供的參數欄位中輸入參數值。您不需要提供任何選用參數。
  • 將 Cloud Bigtable 應用程式設定檔 ID 設為 default
  • 將 BigQuery 資料集設為 bigtable_bigquery_tutorial
  1. 按一下「Run Job」(執行工作)
  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. 在「Explorer」窗格中,展開專案和資料集 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. 選取「透過 Looker Studio 查看」

bb45482e9101b0f.png

8. 將圖表新增至資訊主頁

現在您可以將資訊繪製成圖表,方便解讀並以報表形式分享。您會在資訊主頁中新增三張圖表:

  • 一段時間內的交易金額
  • 每位商家的交易總數
  • 各類別的交易百分比

426dc59200875a20.png

設定頁面

  1. 按一下現有圖表,然後按 Delete 鍵即可移除。
  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. 在「Explorer」面板中找出並點選 bigtable_bigquery_tutorial 資料集。
  3. 依序點選「Delete」(刪除)、輸入「delete」,然後點選「Delete」(刪除) 確認操作。

後續步驟