Delta Live Tablesノートブックにおける開発体験の改善

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

[Delta Live Tables notebook developer experience improvements (Public Preview)](https://docs.databricks.com/en/release-notes/product/2024/april.html#delta-live-tables-notebook-developer-experience-improvements-public-preview)

> Delta Live Tablesコードの開発とデバッグをアシストするDatabricksノートブックの一連のパブリックプレビュー機能をリリースしました。[Delta Live Tables開発のためのプログラマティック エクスペリエンス (パブリック プレビュー)](https://docs.databricks.com/ja/delta-live-tables/dlt-notebook-devex.html)をご覧ください。

ということで、ウォークスルーします。

:::note info
**プレビュー**
本機能は[パブリックプレビュー](https://docs.databricks.com/release-notes/release-types.html)です。
:::

# Delta Live Tablesノートブックの作成

まず、パイプラインのロジックを記述するノートブックを作成します。今回はSQLで作成します。

```sql
CREATE OR REFRESH LIVE TABLE covid_sql_raw
COMMENT "日本のCOVID感染者数データ"
AS SELECT * FROM read_files(
  '/Volumes/takaakiyayoi_catalog/japan_covid_analysis/covid_data/newly_confirmed_cases_daily.csv',
  format => 'csv',
  header => true,
  mode => 'FAILFAST')
```

# Delta Live Tablesパイプラインの作成

サイドメニューの**Delta Live Tables**にアクセスして、パイプラインを作成します。上のノートブックを指定し、データを公開するUnity Catalogのカタログ、スキーマを指定します。
![Screenshot 2024-04-06 at 7.08.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/472c0d3f-030e-4d0b-99d7-56b375bc930d.png)
![Screenshot 2024-04-06 at 7.08.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/55a317e5-eacc-1b05-a7d9-9ef03912678b.png)
![Screenshot 2024-04-06 at 7.08.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b3d2b916-bac4-88ea-d745-46f9de7e85ee.png)

# Databricksノートブックからのデバッグ

これでノートブックがパイプラインに登録されたので、ソースコードのリンクをクリックしてノートブックに戻ります。

右上にダイアログが表示されるので、**接続**をクリックします。これで各種機能を利用できるようになります。
![Screenshot 2024-04-06 at 7.09.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/cb3a080b-b43f-15dc-4f9e-c6b5aa800ae2.png)

**検証**ボタンを押すことで、パイプラインのロジックを検証します。
![Screenshot 2024-04-06 at 7.09.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f7bd5e64-be6c-f3d8-133a-a15321afc13f.png)

検証は問題ありませんでした。
![Screenshot 2024-04-06 at 7.15.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/140781b3-d134-4e44-fe0d-00f0d2666f89.png)

# Databricksノートブックからのパイプライン実行

これは嬉しい。これまではノートブックで開発、DLTパイプラインから実行という形で行ったり来たりがありましたが、ノートブックからクイックにパイプラインを実行できます。右上の**起動**をクリックするとパイプラインが実行されます。
![Screenshot 2024-04-06 at 7.16.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5d039b6e-cd94-d20b-7c38-4d0e2e189ed4.png)

テーブルも作成されています。
![Screenshot 2024-04-06 at 7.16.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/9f354667-e728-228f-4850-a5828776feb4.png)

このようにして、徐々にロジックを拡張していきます。次は[`UNPIVOT`](https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-qry-select-unpivot.html)します。というか、いつの間にかアンピボット(melt)もSQLでサポートされてました。

```sql
CREATE
OR REFRESH LIVE TABLE covid_sql_unpivoted COMMENT "都道府県別COVID感染者数の時系列データ" AS
SELECT
  *
FROM
  live.covid_sql_raw UNPIVOT INCLUDE NULLS (
    cases FOR prefecture IN (
      ALL,
      Hokkaido,
      Aomori,
      Iwate,
      Miyagi,
      Akita,
      Yamagata,
      Fukushima,
      Ibaraki,
      Tochigi,
      Gunma,
      Saitama,
      Chiba,
      Tokyo,
      Kanagawa,
      Niigata,
      Toyama,
      Ishikawa,
      Fukui,
      Yamanashi,
      Nagano,
      Gifu,
      Shizuoka,
      Aichi,
      Mie,
      Shiga,
      Kyoto,
      Osaka,
      Hyogo,
      Nara,
      Wakayama,
      Tottori,
      Shimane,
      Okayama,
      Hiroshima,
      Yamaguchi,
      Tokushima,
      Kagawa,
      Ehime,
      Kochi,
      Fukuoka,
      Saga,
      Nagasaki,
      Kumamoto,
      Oita,
      Miyazaki,
      Kagoshima,
      Okinawa
    )
  )
```

効率よくステップバイステップでロジックを構築していくことができます。
![Screenshot 2024-04-06 at 7.28.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/909d69cc-da0c-3bd3-640c-edfa148711e1.png)

最後に集計ロジックを追加します。

```sql
CREATE
OR REFRESH LIVE TABLE covid_sql_aggregated COMMENT "都道府県別COVID感染者集計データ" AS
SELECT
  prefecture,
  SUM(cases) as cases_total
FROM
  live.covid_sql_unpivoted
WHERE
  prefecture != "ALL"
GROUP BY
  prefecture
ORDER BY
  cases_total DESC
```

![Screenshot 2024-04-06 at 7.42.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d74e8690-be0c-ef6d-4003-c640ddb0f2f7.png)

最終テーブルはこのようになりました。
![Screenshot 2024-04-06 at 7.43.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/98b699a6-4960-ecfd-371b-f8d0a58b7afe.png)

パイプライン開発で是非ご活用ください！

### はじめてのDatabricks

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

### Databricks無料トライアル

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