新たなResource Quotas APIを用いたクォータに対するUnity Catalogオブジェクトの使用量の監視

こちらのアップデートです。

[**Monitor Unity Catalog object usage against quotas using the new Resource Quotas APIs**](https://docs.databricks.com/en/release-notes/product/2024/august.html#monitor-unity-catalog-object-usage-against-quotas-using-the-new-resource-quotas-apis)

> 新たなResource Quotas APIによって、リソースのクォータに対するUnity Catalogのセキュリティ保護可能オブジェクトの使用量を監視できるようになります。まもなく、クォータ制限に到達しそうになった際にメールで通知を行えるようになります。[Unity Catalog のリソース クォータの使用状況を監視する](https://docs.databricks.com/ja/data-governance/unity-catalog/resource-quotas.html)や[Resource Quotas API reference](https://docs.databricks.com/api/workspace/resourcequotas/)をご覧ください。

早速動かしてみます。こちらを実行するにはアカウント管理者である必要があります。

```py
import requests
import json

headers = {'Authentication': f'Bearer {token}'}
r = requests.get('https://<Databricksワークスペースのホスト名>/api/2.1/unity-catalog/resource-quotas/catalog/main/schema-quota', headers=headers)

response_json = json.loads(r.text)
print(json.dumps(response_json, indent=2))
```

上のAPI呼び出しでは、カタログ`catalog`の`main`に対しスキーマの制限に対する使用量`schema-quota`を確認しています。`token`はパーソナルアクセストークンを使っています(非推奨です)。

上を実行すると、以下のように`quota_limit`の10000に対して`quota_count`が6であることがわかります。

```json
{
  "quota_info": {
    "parent_securable_type": "CATALOG",
    "parent_full_name": "main",
    "quota_name": "schema-quota",
    "quota_count": 6,
    "quota_limit": 10000,
    "last_refreshed_at": 1715690931393
  }
}
```

次の例では、メタストア内のオブジェクトのすべてのクォータをチェックしています。

:::note info
**注意**
API呼び出し数のレート制限に引っかかる場合がありますので、スリープ処理を入れるなどした方がいいと思います。
:::

```py
import requests
headers = {'Authentication': f'Bearer {token}'}
next_page = None
max_results = 5
results = []

while True:
  payload = {'max_results': max_results, 'page_token': next_page}
  r = requests.get(
'https://<Databricksワークスペースのホスト名>/api/2.1/unity-catalog/resource-quotas/all-resource-quotas', headers=headers, params=payload).json()
  
  print(json.dumps(r, indent=2))
  results.extend(r["quotas"])
  if "next_page_token" not in r: break
  next_page = r["next_page_token"]

results
```

`catalog-quota`や`connection-quota`なども表示されています。

```json
{
  "quotas": [
    {
      "parent_securable_type": "CATALOG",
      "parent_full_name": "test",
      "quota_name": "schema-quota",
      "quota_count": 1,
      "quota_limit": 10000,
      "last_refreshed_at": 3601000
    },

    <中略>

{
  "quotas": [
    {
      "parent_securable_type": "METASTORE",
      "parent_full_name": "4c55425f-e291-45f8-a4e7-29a103c19e29",
      "quota_name": "catalog-quota",
      "quota_count": 12,
      "quota_limit": 1000,
      "last_refreshed_at": 1719878450546
    },
    {
      "parent_securable_type": "METASTORE",
      "parent_full_name": "4c55425f-e291-45f8-a4e7-29a103c19e29",
      "quota_name": "connection-quota",
      "quota_count": 2,
      "quota_limit": 1000,
      "last_refreshed_at": 3601000
    },
    {
      "parent_securable_type": "METASTORE",
      "parent_full_name": "4c55425f-e291-45f8-a4e7-29a103c19e29",
      "quota_name": "external_location-quota",
      "quota_count": 5,
      "quota_limit": 10000,
      "last_refreshed_at": 1715689266451
    }
  ],
```

これらのデータを活用することで、アカウント全体でのオブジェクト数が制限を超えそうかどうかをダッシュボードなどで監視できるようになります。是非ご活用ください。

### はじめてのDatabricks

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

### Databricks無料トライアル

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