予算ポリシーによるDatabricksサーバレスのコスト按分

こちらで説明されている**予算ポリシー**をウォークスルーします。

https://docs.databricks.com/ja/admin/usage/budget-policies.html

# どのような機能か？

サーバレスコンピュートを利用する以下の機能のコストに**タグ**をつけることができる機能です。

- [サーバレス for ノートブック](https://docs.databricks.com/ja/compute/serverless/notebooks.html)
- [サーバレス for ワークフロー](https://docs.databricks.com/ja/jobs/run-serverless-jobs.html)
- [サーバレス for Delta Live Tables](https://docs.databricks.com/ja/delta-live-tables/serverless-dlt.html)

:::note info
サーバレスSQLウェアハウスはサポートされていません。
:::

# 何のための機能か？

サーバレス以前においても、**どの部門がどれだけ計算資源を使ったのか**は管理者の方にとって非常に重要な事柄となっています。部門ごとの使用量が分かれば、それに応じてコストを按分することができます。

サーバレス以前のクラシックコンピュートであれば、[クラスターポリシー]()で部門名を示すタグの付与を強制することで、クラウドサービスのアカウントにタグ情報を伝播させることができ、それに基づいてコストの按分を行うことが可能でした。

![Screenshot 2024-10-23 at 16.08.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b5e85c7e-8b7d-b1dd-bea9-b99061a8f96c.png)

しかし、サーバレスコンピュートにおいてはクラスターポリシーが存在しておらず、どの部門がどれだけサーバレスコンピュートを使ったのかを追跡することができませんでした。この課題を解決するために導入されたのが、**サーバレスコンピュート向けの予算ポリシー**です。

予算ポリシーを用いることで、Databricksユーザーはサーバレスコンピュートを使用する際に必ず予算ポリシーを選択することになります。予算ポリシーには任意のタグを設定することができますので、予算ポリシーを選択した際に部門名などのタグの値が課金システムテーブルに反映されるようになります。

![Screenshot 2024-10-23 at 16.16.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a1a60fd2-2c8b-2c39-61df-00215cb69e3a.png)

# 予算と予算ポリシーの考え方

予算ポリシーを説明する前に、[アカウントの予算](https://docs.databricks.com/ja/admin/account-settings/budgets.html)についても触れておきます。アカウントの予算とは、皆様のDatabricksアカウント全体における予算のキャップを設定する機能です。ですので、ワークスペースが複数存在する際にはそれらすべてが対象になります。なお、[設定](https://docs.databricks.com/ja/admin/account-settings/budgets.html)で集計対象のワークスペース、タグを定義することは可能です。

予算ポリシーはこれと関連はしますが、別の機能となります。予算ポリシーはワークスペースで設定します。アカウントの予算はアカウント全体での予算キャップですが、予算ポリシーは**誰がどれだけサーバレスコンピュートを使用したのかを示すタグの付与を強制する**機能です。

予算ポリシーを定義する際、**誰に予算ポリシーを割り当てるのか**を検討する必要があります。一つのグループ、ユーザーに複数のポリシーを割り当てることができますが、ベストプラクティスとしては一つのエンティティに一つのポリシーを割り当てるというものとなります。これによって、ポリシーの付け間違いを回避することができます。

# 予算ポリシーの作成

ワークスペース管理者として設定画面にアクセスし、**クラスター > 予算ポリシー > 管理**にアクセスします。

![Screenshot 2024-10-23 at 12.13.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/913510f7-529e-0a5d-c796-713d32118b0e.png)

作成ボタンをクリックします。

![Screenshot 2024-10-23 at 12.13.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/9978cff3-14de-6286-c671-6d3daa95c7c0.png)

ポリシーの名称、キーバリューのフォーマットでタグを定義します。以下の例では、タグ`Team`に対する値`Data Analyst`を定義しています。必要に応じてタグを追加します。

![Screenshot 2024-10-23 at 16.26.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/95d1623f-9a01-71b4-c0ea-c9c5f9b235ec.png)

ポリシーが作成されたら**権限**タブを開きます。ポリシーに対するロールにはマネージャとユーザーがあります。マネージャはポリシーの編集ができますが、ユーザーはポリシーの使用のみが許可されています。

![Screenshot 2024-10-23 at 16.28.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2d29f1f9-7fdb-d2fa-7748-6f6fe3df9ee1.png)

クラスターポリシーと同じように、予算ポリシーが割り当てられたユーザー、グループは、**予算ポリシーを選択することなしにサーバレスコンピュートを使用することができなくなります**。これによって、サーバレスの使用に対してタグを強制できるようになります。

以下の例では、3つのポリシーを作成しています。

![Screenshot 2024-10-23 at 16.30.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/160a7a01-6a5c-0201-4a45-af1c41c5cabc.png)

# 予算ポリシーの使用

こちらに記載されているように、(SQLウェアハウスを除く)サーバレスコンピュートを使用する際に、自身に予算ポリシーが割り当てられている場合には必ず予算ポリシーを選択する必要があります。一つしか割り当てられていないのであれば、デフォルトでそのポリシーが適用されます。

ノートブックの場合、右側の**環境**メニューから予算ポリシーを確認、変更することができます。

![Screenshot 2024-10-23 at 12.57.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f14c46f6-465f-f334-1b49-50a2f60b9dff.png)

# 予算の監視

予算ポリシーが選択されている状態でサーバレスコンピュートを使用すると、請求システムテーブルのレコードの`custom_tags`列にタグが記載されるようになります。

```sql
SELECT * FROM system.billing.usage WHERE size(custom_tags) != 0 ORDER BY usage_start_time DESC
```

![Screenshot 2024-10-23 at 16.34.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/cdff0d22-c0fb-61ea-2529-4b68773c3bd1.png)

こちらのサンプルクエリーも活用ください。

https://docs.databricks.com/ja/admin/system-tables/serverless-billing.html

また、アカウントコンソールから作成できる[ダッシュボード](https://docs.databricks.com/ja/admin/account-settings/usage.html)でもタグを活用できます。

![Screenshot 2024-10-23 at 16.36.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3ec6bd67-81c4-0665-6ffe-584866e10a33.png)

是非ご活用ください！

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)