Delta Live Tablesのメンテナンスタスクのコストを追跡する

Databricksの[Delta Live Tables(DLT)](https://www.databricks.com/jp/product/delta-live-tables)を用いることで、高信頼・高性能のデータパイプラインを容易に構築、管理できるようになります。

このDLTでは、宣言型でETLパイプラインを構築することで複雑なデータパイプラインを容易に構築でき、以下のようにパイプラインの可視性を高めることができます。
![Screenshot 2023-01-21 at 7.19.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a5127de0-0fdd-4953-83f1-544cc0c6b423.png)

そして、DLTでパイプラインを作成すると、パイプラインに含まれるDeltaテーブルをメンテナンスする[メンテナンスタスク](https://qiita.com/taka_yayoi/items/ab79b80936f8e87403d6#delta-live-tables%E3%81%AF%E7%A7%81%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B)がデイリーで実行されるようになります。このタスクのコストを追跡したい際にどうするのかというのがタイトルの話という訳です。

Databricksのコストは[アカウントコンソールの使用量](https://accounts.cloud.databricks.com/usage)で確認することができます。ただ、ここから上記のメンテナンスタスクのコストを切り出すには、事前の準備が必要になります。当該メンテナンスタスクを実行するクラスターに[タグ](https://qiita.com/taka_yayoi/items/8d951b660cd87c6c5f18#%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%BF%E3%82%B0)を追加することで、そのタグが紐付けられているタスクを切り出します。
![Screenshot 2023-01-21 at 7.36.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5f63f338-1757-aa88-44f7-260d1bcb5043.png)

1. 当該パイプラインの設定画面を開きます。
![Screenshot 2023-01-21 at 7.36.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/00f000b6-119f-3c47-af57-5bad90a9583b.png)
1. 右上の**JSON**をクリックし、設定をJSON形式で表示します。
![Screenshot 2023-01-21 at 7.38.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/9d7e256c-201f-e4c6-9ebc-f8be8d6bfd23.png)
1. `clusters`に以下のブロックを追加します。`"label": "maintenance"`でメンテナンスタスク用のクラスターを参照し、その配下に`"custom_tags"`で任意のタグを追加しています。以下の例では`"Resource"`が`"DLT_Maintenance"`というタグを追加していますが、任意のタグを追加することができます。

    ```json:JSON
    {
            "label": "maintenance",
            "custom_tags": {
                "Resource": "DLT_Maintenance"
            }
    }
    ```

1. `clusters`は以下のようになります。これで、メンテナンスタスクのクラスターを`"Resource"`が`"DLT_Maintenance"`というタグで特定できるようになります。

    ```json:JSON
    "clusters": [
        {
            "label": "default",
            "autoscale": {
                "min_workers": 1,
                "max_workers": 1,
                "mode": "LEGACY"
            }
        },
        {
            "label": "maintenance",
            "custom_tags": {
                "Resource": "DLT_Maintenance"
            }
        }
    ]
    ```

1. DLTパイプラインを実行します。これで上記設定が反映されたメンテナンスタスクが実行されるようになります。
1. メンテナンスタスクが実行されるように、24時間待ちます。
1. [アカウントコンソールの使用量](https://accounts.cloud.databricks.com/usage)にアクセスし、**タグ別**を開くと、上で設定したタグ`Resource`が表示されるはずです。これを選択するとタグ`Resource`ごとに集計された使用量が表示されます。
![Screenshot 2023-01-21 at 7.42.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/845c114c-efa1-052d-8d27-ab177513b557.png)
1. 定義した`DLT_Maintenance`が表示されています。
![Screenshot 2023-01-21 at 7.43.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f13c7306-315a-dfda-966b-fc1f5a46dd58.png)
1. より詳細に確認するには、右上のダウンロードボタンをクリックしてCSVファイルをダウンロードします。
![Screenshot 2023-01-21 at 7.43.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/62a8485a-06ed-3020-c5a9-1f7f26727f84.png)
1. メンテナンスタスクのコストを確認することができます。
![Screenshot 2023-01-21 at 7.45.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/94fa4f65-6498-c8d7-2f68-522aa13e482c.png)

### Databricks 無料トライアル

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