星期一, 4月 04, 2022

使用 Google Data Studio 觀察 GCP 費用小記

使用 Google Data Studio 觀察 GCP 費用小記


這邊文章要來講利用 Google Data Studio 來觀察 GCP 費用的相關紀錄


情境: 使用 Google Data Studio 來觀察特定區間的費用狀況

  • 希望可以觀察實際要支付的費用, 所以要扣掉 credit 部份來呈現, 然後呈現稅後台幣數字


先來說說 Google Data Studio


Data Studio 首頁


但是我在網路上有找到我覺得更棒的教學 ( 數據酷  )

Google Data Studio 入門介紹可以看他們這篇

  • https://datasupplied.com/google-data-studio/beginner-intro/

  • 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



沒有留言: