使用 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
沒有留言:
張貼留言