使用 Google Data Studio 觀察 GCP 費用小記
這邊文章要來講利用 Google Data Studio 來觀察 GCP 費用的相關紀錄
情境: 使用 Google Data Studio 來觀察特定區間的費用狀況
- 希望可以觀察實際要支付的費用, 所以要扣掉 credit 部份來呈現, 然後呈現稅後台幣數字 
先來說說 Google Data Studio
Data Studio 首頁
但是我在網路上有找到我覺得更棒的教學 ( 數據酷 )
Google Data Studio 入門介紹可以看他們這篇
- Google Data Studio 是一個將數據可視化的分析工具,不管是 Google Analytics、Google Ads、Facebook Ads 都可以透過數據的串接讓 Data Studio 讀取數據並透過簡單的拖拉將數據轉換成簡單易懂的圖表,將所有有價值的數據全部彙整到同一個頁面當中。 
- 重點是 Data Studio 完全免費!只要擁有 Google 帳戶,即可開始使用 Data Studio。 
然後有滿多 Data Studio 免費的學習資源可以參考
準備工作
首先你的專案費用必須已經 export 到 Big Query, 可以參考之前的文章
因為想要知道實際上要支付的費用
所以在該專案的 BigQuery 建立一個 View ( 名稱自訂 )
Query 的內容如下
SELECT
billing_account_id,
project.id AS project_id,
service.description AS service,
invoice.month,
CAST(DATETIME(usage_start_time,
'PST8PDT') AS DATE) usage_date,
-- 這次的處理, 就不加上 ROUND() 函數, 來讓數字更精準
SUM(cost) AS total_cost,
-- 這邊在 credits 前面加上 - (負數), 是為了負負得正, 讓 credits 顯示正值
-SUM(IFNULL((
SELECT
-- c.amount 是下面 credits 的加總
SUM(c.amount)
FROM
-- credits 是優惠點數或是折扣, 使用 UNNEST 逐條列出, 定義為 c
UNNEST(credits) c),
0)) AS credits,
SUM(cost) + SUM(IFNULL((
SELECT
-- c.amount 是下面 credits 的加總
SUM(c.amount)
FROM
-- credits 是優惠點數或是折扣, 使用 UNNEST 逐條列出, 定義為 c
UNNEST(credits) c),
0)) AS cost_after_credits,
FROM
`YOUR_PROJECT.YOUR_DATASET.gcp_billing_export_v1_XXXXX_YYYYY_ZZZZZ`
GROUP BY billing_account_id,
project_id,
service,
invoice.month,
usage_date
ORDER BY
cost_after_credits DESC
- 因為如果直接在 Data Studio 使用 cost 與 credit, 要計算費用淨值的時候會有問題, 所以透過這邊來進行預處理. 
- 請把 FROM 的部份換成自己的資料 
開啟 Data Studio
點選建立空白報表 ( Blank Report )
Connectors 的部份選取 BigQuery
選取專案 剛剛建立的 BigQuery View -- > 點選 Add
出現要確認將資料加入報表的視窗 -- > 點選 ADD TO REPORT
預設會有個 Chart Table -- > 可以先刪除
搞定 Data 連接之後
在 Data Studio 我們可以會加入一些元件
Chart 部份
- 我目前用到的是 Table / Scorecard / Bar / Pivot table 
Control 的部份
- 目前有用到 Drop-down list / Date range control 
開始來進行規劃
首先建立一個 Date range control ( 控制要觀察的日期 )
點選該物件
DATA 這邊, 預設是 Auto date range
點選下拉式選單, 選取自己想要預設的觀察區間
例如我是選取 Last week (starts Monday)
上面就會出現相關日期
再來建立一個 Drop-down list control (控制要觀察的專案)
點選該物件
Date Range Dimension 預設是 usage_date, 預設是 Auto
- 這樣的作法是由 上面建立的 Date Range Control 來控制 
Control field 的部份
可以改為 project_id
- 這個可以勾選想要觀察的 Project 來進行觀察 
Metric 的部份
因為之後我們想要顯示的是 稅後的台幣金額
所以需要建立一個 FIELD, 然後又想要被所有的物件利用, 所以要建立到 default group
點選 Available Fields 下方的 ADD A FIELD
輸入名稱
輸入公式, 我是用淨額 * 30 * 1.05 來計算
點選 SAVE
點選 DONE
這個時候就會發現剛剛建立的 Field 已經出現
Metric 的部份 點選預設的 Record Count
就可以選取我們剛剛建立的 cost_after_credits_TWD
- 這樣在下拉選單選取 Project 的時候, 也可以看一下費用 
接下來 建立一個 Chart > Scorecard (顯示期間的費用)
點選該物件
Metric 的部份
點選 cost_after_credits_TWD
然後 Comparison date range 的地方
選取 Previous period ( 跟上個區間比較 )
但是出來的圖示, 雖然是費用下降, 竟然是紅色的, 這個不符合使用者的期待
所以在 STYLE 的設定將 Comparison Metric 的顏色調換
- 下降是好事要使用綠色, 上升要注意, 所以使用紅色 
- 個人也喜歡顯示 Comparison Label, 所以取消隱藏 
輸出效果如下
接下來 建立一個 Chart > Bar ( Stacked column chart ) ( 顯示個專案不同服務的組成圖示 )
點選該物件
Dimension 一樣使用 Project_id
Breakdown Dimension 的部份採取 service 來進行分類
輸出效果如下
因為我們還要增加其他的物件, 可是目前的可用空間應該不太夠了
所以我們先來調整頁面大小
點選 Page -- > Current Page Settings
在 STYLE 設定裡面
調整 Canvas Size
- 例如我這邊調整為 1200 x 1800 
調整 Page 的顏色
接下來 建立一個 Chart > Table ( 顯示以費用排序的各專案 TOP x )
點選該物件
Dimension 的部份調整為 project_id
Metric 一樣使用 cost_after_credits_TWD
Default date range : Comparison date range 加上 Previous period
調整 STYLE 將 Comparison Metric 的顏色調換, 調整文字大小
輸出效果如下
接下來 建立一個 Chart > Table ( 顯示以費用排序的各服務 TOP x )
點選該物件
Dimension 的部份調整為 service
Metric 一樣使用 cost_after_credits_TWD
Default date range : Comparison date range 加上 Previous period
調整 STYLE 將 Comparison Metric 的顏色調換, 調整文字大小
輸出效果如下
接下來 建立一個 Chart > Pivot Table ( 顯示各專案服務費用排序 )
點選該物件
Row dimension 使用 project_id
Column dimension 使用 service
Metric 一樣使用 cost_after_credits_TWD
輸出效果如下
選取多專案時, 同上一個 Table, 目前是 Compute Engine 費用最多
單一專案時, 可以觀察主要服務費用狀況
最後建立一個 Chart > Table ( 顯示前幾週的服務費用, 判斷是否合理? )
先說明最後這個 Table 會建立的原因
- 如果不是有簽 CUD, 一般 Compute Engine 如果一定的時間會有 SUD 折扣, 所以費用是會變動的, 因為有 Credit 產生, 按照之前的實驗, 如果要觀察上週的費用, 一般來說要在本周三下午去觀察上週, 費用才是相對穩定, 以有 SUD 影響的狀況, 下半月費用是比較低的. 
- 有些資源本身會有免費額度, 例如 Geocoding API, 所以月初可能費用會比較低. 
點選該物件
Data source 的部份我們使用 BLEND DATA
點選 BLEND DATA
Table 1 的部份
Dimensions 的部份使用 project_id 以及 service
Data range 一樣是使用 usage_date
區間的部份點選 Custom -- > 選取 Advanced
時間區間為
- Today - 9 天 為開始日期 
- Today - 3 天 為結束日期 
如果我剛剛說的, 我大部份是周三查詢上週的費用狀況, 因為費用已經穩定下來了. 所以如果以 4/6 來進行查詢, 他的起始日期就是 3/28 (一) ~ 4/3 (日)
點選 Metrics 上面的 FIELD ( 例如 cost_after_credits_TWD )
點選 CREATE FIELD 來建立新的 FIELD
輸入名稱
輸入公式
點選 APPLY
所以 Table 1 的部份, Last 1 WK 就是 上一周扣除 credit 的台幣費用
接下來處理上上週
點選 Join another table ( 加入 Table 2 )
資料來源還是同一個 BQ View
Dimensions 與 Table 1 一樣
Date range 就是
時間區間為
- Today - 16 天 為開始日期 
- Today - 10 天 為結束日期 
建立新的 FIELD Last 2 WK
點選 Configure join
點選 Left outer
點選 Save
以此類推, 我總共建立 5 個 Table
點選 SAVE
輸出效果如下
- 如果是觀察周費用的時候, 可以藉由觀察前幾周的費用來觀察費用成長幅度是否合理, 是否為 SUD 或是免費額度影響 
建立完呈現大概如以下
又多往 GCP 前進一步
~ enjoy it
Reference
 
 
沒有留言:
張貼留言