1. 總覽
本程式碼研究室會逐步說明如何分析寫入 Bigtable 的信用卡交易資料串流。您將瞭解如何使用 Bigtable 變更串流至 BigQuery 範本,即時匯出資料。接著,您將瞭解如何查詢變更串流記錄,以及如何重新格式化資料,以便使用 Looker 建立資訊主頁。
本程式碼研究室的目標對象為熟悉 Bigtable、指令列工具和事件串流服務的技術人員。

本程式碼研究室會說明如何執行下列操作:
- 建立已啟用變更串流的 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 資料集
您會在程式碼實驗室稍後使用 BigQuery 分析資料。請按照下列操作說明,為資料管道的輸出內容建立資料集。

- 在「建立資料集」面板中,執行下列操作:
- 在「Dataset 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 的「Tables」(資料表) 頁面中,找出所需資料表
retail-database。 - 在「變更串流」欄中,按一下「連線」。
- 在「Connect with Dataflow」(透過 Dataflow 連線) 對話方塊中,選取「BigQuery」。
- 按一下「建立 Dataflow 工作」。
- 在提供的參數欄位中輸入參數值。您不需要提供任何選用參數。
- 將 Cloud Bigtable 應用程式設定檔 ID 設為
default。 - 將 BigQuery 資料集設為
bigtable_bigquery_tutorial。
- 按一下「Run Job」(執行工作)。
- 請先等待工作狀態顯示為「啟動中」或「執行中」,再繼續操作。工作排入佇列後,大約需要五分鐘才能完成。頁面會自動更新。這個範本會建立串流工作,因此可以持續處理寫入 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」頁面。
- 在「Explorer」窗格中,展開專案和資料集
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。
- 將「指標」設為
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」頁面。
- 在「Explorer」面板中找出並點選
bigtable_bigquery_tutorial資料集。 - 依序點選「Delete」(刪除)、輸入「delete」,然後點選「Delete」(刪除) 確認操作。