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 Instance」(Bigtable 執行個體) 頁面。
- 按一下您在本教學課程中使用的執行個體 ID。如果您沒有可用的執行個體,請在附近的地區建立執行個體,並為其命名。其他設定則可使用預設設定。
- 在左側導覽窗格中,按一下「Tables」。
- 點選「建立資料表」。
- 將資料表命名為
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」對話方塊中,選取「BigQuery」。
- 按一下「建立 Dataflow 工作」。
- 在提供的參數欄位中輸入參數值。您不需要提供任何選用參數。
- 將 Cloud Bigtable 應用程式設定檔 ID 設為
default
。 - 將 BigQuery 資料集設為
bigtable_bigquery_tutorial
。
- 按一下「Run Job」(執行工作)。
- 請等到工作狀態顯示為「Starting」或「Running」,再繼續操作。工作排入佇列後,可能需要五分鐘的時間。頁面會自動更新。這個範本會建立串流工作,以便持續處理寫入 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 頁面。
- 在「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 資訊主頁
- 按一下「Go to view」(前往檢視表),前往新檢視表的詳細資料頁面。
- 按一下 [匯出]。
- 選取「透過 Looker Studio 探索」
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
指令重新整理資料,或點選「view」選單中的「Refresh data」。圖表中現在應該會顯示 2024 年 1 月的資料。
除了上述圖表和指標,您還可以建立許多其他圖表和指標。詳情請參閱 Looker 說明文件。
9. 清理
如要避免系統向您的 Google Cloud 帳戶收取本教學課程所用資源的費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。
停止變更串流管道
- 前往 Google Cloud 控制台的 Dataflow「Jobs」(工作) 頁面。
- 從工作清單中選取串流工作。
- 在導覽選單中,按一下「停止」。
- 在「Stop job」對話方塊中,選取「Cancel」,然後按一下「Stop job」。
刪除 Bigtable 資源
如果您為本教學課程建立了 Bigtable 執行個體,可以刪除該執行個體,也可以清除您建立的資料表。
- 前往 Google Cloud 控制台的「Bigtable 執行個體」頁面。
- 按一下您在本教學課程中使用的執行個體 ID。
- 在左側導覽窗格中,按一下「Tables」。
- 找出
retail-database
資料表。 - 按一下 [編輯]。
- 清除「Enable change stream」。
- 按一下 [儲存]。
- 開啟表格的溢位選單。
- 按一下「刪除」並輸入資料表名稱加以確認。
- 選用:如果您是為了本教學課程建立新的執行個體,請刪除該執行個體
刪除 BigQuery 資料集
- 前往 Google Cloud 控制台的「BigQuery」頁面。
- 在「Explorer」面板中找出資料集
bigtable_bigquery_tutorial
,然後按一下該資料集。 - 按一下「刪除」,輸入刪除內容,然後按一下「刪除」確認。