在一次因緣際會下,我們發現 Azure Databricks 下的 Serverless SQL 在 2024 年 1 月底出現了全球範圍的費用計算異常,本篇文章將紀錄如何使用 Databricks 的 System Tables 追蹤各服務的真實用量,並藉此計算成本後與 Azure 費用帳單核對,以保障自身權益。
Databricks System Tables
Databricks System Tables 是在啟用 Databricks Unity Catalog 後可以使用的一項新功能,截至目前還位於 Public Preview 階段並免費提供使用。
System Tables 在啟用後不用編寫任何程式,就會自動收集一系列由 Databricks 定義好的系統資訊,這邊我們主要先看 system.billing.usage 這張表。
system.billing.usage
system.billing.usage 這張表記錄了所有會被計算費用的 Databricks 資源,並以每個小時每個工作區做彙整,關於這張表的詳細欄位說明可以參考以下官方文檔。
參考連結:https://learn.microsoft.com/zh-tw/azure/databricks/admin/system-tables/billing
使用以下這段 SQL 我們可以整理出 2024 年一月每天 Serverless SQL 所花費的 DBU 數量:
其中我們用 workspace_id 限制查找有開啟 Serverless SQL 功能的工作區,這也會用在我們後續與 Azure 帳單核對。
system.billing.list_prices
system.billing.list_prices 這張表非常單純,紀錄的是各項服務的定價,同時也包含了歷史定價,欄位說明一樣參考官方文檔。
參考連結:https://learn.microsoft.com/zh-tw/azure/databricks/admin/system-tables/pricing
以下這段 SQL 可以看出 Serverless SQL 每 DBU 的歷史定價:
執行結果如下:
可以看出目前 Serverless SQL 的每 DBU 是 0.88 美金,而其中 2023 年 8 月到 2024 年 1 月有一個七折的特價活動,這段時間內每 DBU 是 0.616 美金。
而 0.88 美金這個金額也是公開的資訊,與官方提供的定價表相符合:
參考連結:https://azure.microsoft.com/en-us/pricing/details/databricks/
有了 system.billing.usage 的 DBU 使用量與 system.billing.list_prices 的每 DBU 價格,就能計算出該工作區在 Serverless SQL 的總花費,接著我們就以此金額來對比 Azure 帳單。
使用 Azure Cost Analysis 取得帳單金額
取得 Azure 帳單金額的方式有蠻多種的,這邊就選用最簡單的方式,從 Portal 的成本分析頁面來查看,這個方法只需要 UI 點擊就能做出我們需要的篩選。
首先選擇 Databricks 工作區所在的資源群組,並找到「成本管理」→「成本分析」頁面,再使用以下篩選條件:
- 時間:2024 年一月份
- 資源:上述 SQL 查詢的 Databricks 工作區
- Meter:Premium Serverless SQL DBU
- 資料粒度:每天
- 呈現方式:資料表
使用這組篩選條件整理出的資料表就能與前面使用 Databricks System Tables 依 DBU 使用量計算出的金額相比較。
找出異常費用
現在我們有從 Databricks System Tables 依 DBU 使用量計算出的金額,也有從 Azure Cost Analysis 取得的實際帳單金額,就可以將兩者放在一起做比較了。
兩個金額可能因為匯率或進位問題略有差異,但如果其中在 2024 年 1 月 21 日到 2024 年 1 月 31 日發現有較大誤差,那恭喜你也有機會一起爭取異常退款囉!
這個案例已經得到官方支援工程師確認,其導致的原因就是先前提到的 Serverless SQL DBU 七折特價活動,這個特價原預定在 2024 年 2 月 1 日結束,卻提早在 2024 年 1 月 20 日變回原訂價 0.88 美金。
Serverless SQL DBU
最後我們來看一下 Serverless SQL 的計價方式。
有別於在 Databricks 內最常使用的其他兩項服務 All-Purpose Compute 與 Jobs Compute ,費用是由 DBU 與 Azure VM 組成,在 Serverless SQL 中並沒有 Azure VM,而是完全使用 DBU 來計價,所以相比之下 Serverless SQL 具有較高的 DBU 耗用量。
在 DBU 高耗用的情況下 DBU 特價金額就顯得重要了,以 Serverless SQL 最低規格的 2X-Small 來說,需要使用到 4 個 DBU,在特價與原價的每小時費用分別為 $2.46 美金與 $3.52 美金,以不關機的方式計算,十天的異常就會被額外收取 $254.4 美金 💲😨
留言
張貼留言