Databricksノートブックのウォークスルーおよびベストプラクティス

こちらで説明されているものを主にウォークスルーしていきます。色々な機能がありますが、これらを使いこなすことでより効率的に作業を進めることができます。

[Databricksノートブックでコードを開発する \| Databricks on AWS](https://docs.databricks.com/ja/notebooks/notebooks-code.html)

# Databricksの使い方

大まかな説明ですが、ノートブックにロジックを記述し、計算資源を用いてデータベースやファイルのデータを操作するというのがDatabricksの基本的な使い方となります。
![Screenshot 2024-05-27 at 13.06.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/41571c2f-e73e-c155-3b26-6267410f0bdb.png)

Databricksの計算資源はクラスター(ウェアハウス)、データはUnity Catalogで管理されています。
![Screenshot 2024-05-27 at 13.07.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/4b90626c-f39f-0aff-e2d8-29966c40b2d1.png)

作業場所はワークスペースと呼びます。**サイドメニュー**を用いて主要機能にアクセスし、設定画面に移動するには右上の**ユーザーアイコン**をクリックして、**設定**を選択します。
![Screenshot 2024-05-27 at 13.09.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2620dd67-59a2-d509-656c-23fab7251637.png)

ノートブックにロジックを記述します。ノートブックのUIの詳細は後ほど説明します。
![Screenshot 2024-05-27 at 13.12.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e7bf8d78-967a-021c-25c0-bf0e5e3cf07a.png)

計算資源であるクラスターを設定します。
![Screenshot 2024-05-27 at 13.13.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/6c4a201b-112a-253b-e821-cb2fff18eb5b.png)

:::note info
**ベストプラクティス**
Databricksにおける一番無駄なコストは「使っていないクラスターを起動しておく」ことです。自動停止の設定を活用しましょう。
:::

ノートブックをクラスターにアタッチすることで、プログラムを実行できる様になります。
![Screenshot 2024-05-27 at 13.14.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0232a0fc-0828-e615-cd30-59252ac5d6f0.png)

:::note info
**ベストプラクティス**
プログラムを実行する際にのみクラスターが必要となります。プログラムの修正を行う際はクラスターは不要です。
:::

これでPython/SQLなどのプログラムを実行できます。
![Screenshot 2024-05-27 at 13.14.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f2320f90-2648-b217-7ca9-6e087c400db6.png)


# Databricksのノートブックのウォークスルーおよびベストプラクティス

ここではノートブック活用の文脈でのベストプラクティスをご紹介します。

## ユーザー設定

生産性の観点では自分の使いやすい様に環境を設定することが重要です。

まずは言語設定を日本語にしましょう。
![Screenshot 2024-05-27 at 13.16.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8f0a46b4-222b-a801-e9fc-42c0cc383986.png)

この他に**開発者**メニューで細かい挙動を設定することができます。
![Screenshot 2024-05-27 at 13.16.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/040fab1d-58e2-5c42-49ca-36c014f5ad22.png)
![Screenshot 2024-05-27 at 13.17.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/c8aac727-a260-7cbc-23f5-013b9419a6a0.png)
![Screenshot 2024-05-27 at 13.17.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/522b0f7f-ddf6-7f08-1c98-14e7a5950c52.png)
![Screenshot 2024-05-27 at 13.18.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e7e0d021-1b9f-4fee-473e-ee8bcbe37f3e.png)

:::note info
**ベストプラクティス**
結構な頻度で実験的な機能は追加されていきます。定期的にチェックしてみてください。
:::

- [DatabricksのAIベースのオートコンプリート](https://qiita.com/taka_yayoi/items/a529500dfca2660cb0c0)
- [Databricksワークスペースのホームページがリニューアルされました！](https://qiita.com/taka_yayoi/items/d6378d480c26a285c1ed)

## 検索機能

他の方の資産を参考にすることは、習熟の早道です。Databricksの検索機能を活用しましょう。アクセス権を有している資産に対してキーワード、自然言語を用いた検索を行うことができます。種別、所有者などで絞り込むことができます。

![Screenshot 2024-05-27 at 13.20.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/bc1ee3eb-7705-0351-fee4-c70a2fb8ed7c.png)
![Screenshot 2024-05-27 at 13.20.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d26dba88-3345-46a7-9560-0fc22df49dde.png)
![Screenshot 2024-05-27 at 13.20.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/84360eca-b062-a699-68e0-41eb4e723744.png)

## ノートブックの活用

ノートブックにはいろいろな機能が搭載されています。
![Screenshot 2024-05-27 at 13.22.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/6e114096-1a5a-1cd0-e2e4-97ca8a1ff2b3.png)

### お気に入り

後からクイックにアクセスできるようになります。

![Screenshot 2024-05-27 at 13.23.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/40a5b197-a420-d983-6c0a-9bfeba25984d.png)

:::note info
**ベストプラクティス**
お気に入りはノートブック以外のフォルダ、データベース、テーブル、モデルなどでも設定できます。
:::

### 並び替え

ドラッグ&ドロップでセルの位置を変更できます。

<iframe width="560" height="315" src="https://www.youtube.com/embed/MOMLsS2JwS8?si=5_ss7EOkOKLrTc8f" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

### 折り畳み

マークダウンの見出しに基づいたセクションを折り畳みできます。

<iframe width="560" height="315" src="https://www.youtube.com/embed/g56IX3vQnzc?si=Uz2rG_m_XYkVwUQY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

### レイアウト変更

中央揃え・全幅レイアウトを変更できます。
![Screenshot 2024-05-27 at 13.28.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ab31a28c-cac6-d71b-04ae-f1de024a0927.png)

### フォーカスモード

特定のセルとのその出力のみを表示します。
![Screenshot 2024-05-27 at 13.29.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/869da427-90e8-e938-16a3-dbba0d576e4b.png)

:::note info
**ベストプラクティス**
特定のセルにフォーカスできるので、複雑なロジックに集中したい場合には活用しましょう。
:::

### マークダウン

他の方がロジックを理解できる様に説明文を記載します。
![Screenshot 2024-05-27 at 13.30.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5a8cfcef-a561-3c2a-2c6e-0fcf759f4504.png)

:::note info
**ベストプラクティス**
セルの先頭に`%md`を記述、あるいは言語セレクターでマークダウンを記述できます。
:::

### 目次

マークダウンの見出しに基づいた目次が生成されます。
![Screenshot 2024-05-27 at 13.31.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d147d5c6-872b-174c-37b3-3e3661e9bbb6.png)

### セルタイトル

:::note info
**ベストプラクティス**
セルタイトルの隣のアシスタントボタンでタイトルを自動生成できます。
:::

![Screenshot 2024-05-27 at 13.32.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5bf2ee95-0cde-9c42-7422-98bfc23aa2a1.png)

なお、ノートブックタイトルも自動生成できます。
![Screenshot 2024-05-27 at 14.37.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/50212ec7-4f42-d052-31e1-3d3b794f0aa1.png)


### セルメニュー

セルに対するアクションを選択します。
![Screenshot 2024-05-27 at 13.32.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d45fd8c2-e899-39e9-ab0f-992d5d205758.png)

### 実行メニュー

セルの実行に関するメニューを選択できます。
![Screenshot 2024-05-27 at 13.33.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e250af3d-4152-8d89-6a14-6e644955efbc.png)

### バージョン管理

過去のバージョンに遡ることができます。差分も確認できます。
![Screenshot 2024-05-27 at 13.34.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b0f5436b-cb31-241e-7090-c64cd527c131.png)

### ワークスペースエクスプローラ

他のノートブックやファイルにクイックにアクセスできます。
![Screenshot 2024-05-27 at 13.34.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b23bf251-adc8-2cda-5d58-9a509352ea88.png)

### カタログエクスプローラ

データベースやテーブルにクイックにアクセスできます。
![Screenshot 2024-05-27 at 13.35.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/738266a2-f62c-19c3-cb5f-3d9a57af58e3.png)

### AIアシスタント

コーディングの手助けをしてくれます。
![Screenshot 2024-05-27 at 13.36.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/34876ad5-8108-c17b-1bb6-a91696ff75ee.png)

[コンテキストを認識するAIアシスタント、Databricks Assistantの紹介 \| Databricks Blog](https://www.databricks.com/jp/blog/introducing-databricks-assistant)

### 変数エクスプローラ

定義済みの変数を確認できます。目のマークをクリックするとデータを確認できます。
![Screenshot 2024-05-27 at 13.36.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/65a7c7fc-434b-1a14-fcc6-ce534c0e8692.png)

[Databricks Notebooks向けの新しいデバッグ機能：Variable Explorer \| Databricks Blog](https://www.databricks.com/jp/blog/new-debugging-features-databricks-notebooks-variable-explorer)

### コードのフォーマット

Python/SQLのフォーマットを整形することができます。
![Screenshot 2024-05-27 at 13.37.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0f5bc39d-67c9-a775-85ad-959bbf525434.png)

### ターミナル

クイックにシェルコマンドを実行できます。
![Screenshot 2024-05-27 at 13.37.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3443c61a-422c-4704-4e7c-a9288df85595.png)

### マジックコマンド

セルからでもクイックにシェルコマンドを実行できます。
![Screenshot 2024-05-27 at 13.38.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/bf471572-87a3-80f2-4395-9d3e88c324d1.png)

### 可視化

データフレームに`display()`を適用しましょう。
![Screenshot 2024-05-27 at 13.52.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8ad56820-3682-0af6-bbb3-d4758a66f8a7.png)
![Screenshot 2024-05-27 at 13.53.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/4229074a-d758-6be9-07ef-ce14373a7ed0.png)


## コラボレーション

### アクセス権の設定

Databricksのワークスペースの資産は、アクセス権を適切に設定することで容易に他のユーザーに共有することができます。
![Screenshot 2024-05-27 at 13.39.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/22409e1a-edb7-a973-5120-789360280dfa.png)
![Screenshot 2024-05-27 at 13.39.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ac23645c-0dff-04e3-047b-c09bc9c04964.png)
![Screenshot 2024-05-27 at 13.39.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0ef40ccc-5a2f-20bd-24ea-bfe8af415a77.png)

共有されたノートブックは同時に参照、(権限が付与されていれば)編集を行うことができます。
![Screenshot 2024-05-27 at 13.40.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e0b2f432-219d-2f50-0b19-6c40cc7c685e.png)



# 参考資料

- [Databricksノートブックでコードを開発する | Databricks on AWS](https://docs.databricks.com/ja/notebooks/notebooks-code.html)
- [Databricksベストプラクティス：ノートブックのモジュール化](https://qiita.com/taka_yayoi/items/a16d43002b5c9d2dd0fc)
- [Databricksアシスタントの新機能を試す](https://qiita.com/taka_yayoi/items/058f324960cecceef218)
- [Databricksのインタラクティブデバッガー](https://qiita.com/taka_yayoi/items/7ef95f893a61c2aedf99)
- [プロの様にDatabricksをナビゲートする](https://qiita.com/taka_yayoi/items/4c5dea6c8cf8dcfdfcdc)

### はじめてのDatabricks

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

### Databricks無料トライアル

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