Databricks ノートブックでコードを開発する

このページでは、オートコンプリート、Python と SQL の自動書式設定、ノートブックでの Python と SQL の組み合わせ、ノートブックのバージョン履歴の追跡など、Databricks ノートブックでコードを開発する方法について説明します。

オートコンプリート、変数選択、マルチカーソルのサポート、横並び差分表示など、エディターで使用できる高度な機能について詳しくは、「Databricks ノートブックとファイル エディターを使用する」をご覧ください。

ノートブックまたはファイル エディターを使用する場合は、コードの生成、説明、デバッグに役立つ Databricks Assistant を使用できます。 詳細については、「Databricks Assistant を使用する」を参照してください。

Databricks ノートブックには、Python ノートブック用の対話型デバッガーも組み込みで含まれています。 「ノートブックのデバッグ」を参照してください。

Databricks Assistant からコーディングのヘルプを取得する

Databricks Assistant は、会話型インターフェイスを使用して対話できるコンテキストに対応した AI アシスタントであり、Databricks 内での生産性が向上します。 タスクを英語で説明し、アシスタントに Python コードまたは SQL クエリを生成させ、複雑なコードを説明させ、エラーを自動的に修正させることができます。 アシスタントでは、テーブル、列、説明、社内全体でよく使用されるデータ資産を理解し、パーソナライズされた応答を提供するために、Unity Catalog のメタデータが使用されます。

Databricks Assistant は、次のタスクに役立ちます。

  • コードの生成。
  • コードのデバッグ (エラーの識別や修正の提案を含む)。
  • コードの変換と最適化。
  • コードの説明。
  • Azure Databricks のドキュメントで関連情報を見つけるのに役立つ。

Databricks Assistant を使用してより効率的にコードを書く方法については、「Databricks Assistant を使用する」を参照してください。 Databricks Assistant の一般的な情報については、「DatabricksIQ を利用した機能」を参照してください。

編集のためにノートブックにアクセスする

ノートブックを開くには、ワークスペースの検索機能を使用するか、ワークスペース ブラウザーを使用してノートブックに移動し、ノートブックの名前またはアイコンをクリックします。

データを参照する

ノートブックで使用できる Unity Catalog オブジェクトを調べるには、スキーマ ブラウザーを使います。 ノートブックの左側にある ノートブックのデータ アイコン をクリックして、スキーマ ブラウザーを開きます。

[For you] ボタンでは、現在のセッションで使ったオブジェクト、または以前にお気に入りとしてマークしたもののみが表示されます。

[Filter] ボックスにテキストを入力すると、表示が変わり、入力したテキストを含むオブジェクトのみが表示されます。 現在開かれているオブジェクト、または現在のセッションで開かれたもののみが表示されます。 [Filter] ボックスでは、ノートブックで使用できるカタログ、スキーマ、テーブル、ボリュームの完全な検索は行われません。

ケバブ メニュー ケバブ メニューを開くには、次に示すように、オブジェクトの名前をカーソルでポイントします。

スキーマ ブラウザーのケバブ メニュー

オブジェクトがテーブルの場合は、次のことができます。

  • セルを自動的に作成して実行し、テーブル内のデータのプレビューを表示します。 テーブルのケバブ メニューから [Preview in a new cell] (新しいセルでプレビュー) を選択します。
  • カタログ エクスプローラーでカタログ、スキーマ、またはテーブルを表示します。 ケバブ メニューの [Open in Catalog Explorer](カタログ エクスプローラーで開く) を選択します。 新しいタブが開き、選択したオブジェクトが示されます。
  • カタログ、スキーマ、またはテーブルへのパスを取得します。 オブジェクトのケバブ メニューの [Copy … path] を選びます。
  • テーブルをお気に入りに追加します。 テーブルのケバブ メニューの [Add to favorites] を選びます。

オブジェクトがカタログ、スキーマ、またはボリュームの場合は、オブジェクトのパスをコピーするか、カタログ エクスプローラーで開くことができます。

テーブルまたは列名をセルに直接挿入するには、次のようにします。

  1. セル内の、名前を入力する位置でカーソルをクリックします。
  2. スキーマ ブラウザーのテーブル名または列名の上にカーソルを移動します。
  3. オブジェクトの名前の右側に表示される二重矢印 二重矢印 をクリックします。

キーボード ショートカット

キーボード ショートカットを表示するには、[キーボード ショートカットの>ヘルプ] を選択します。 使用できるキーボード ショートカットは、カーソルがコード セル内にあるかどうか (編集モード) か (コマンド モード) かによって異なります。

コマンド パレット

コマンド パレットを使用して、ノートブックでアクションをすばやく実行できます。 ノートブック アクションのパネルを開くには、ワークスペースの右下隅にある _ をクリックするか、ショートカット Cmd + Shift + P (MacOS の場合) または Ctrl + Shift + P (Windows の場合) をクリックします。

コマンド パレット

テキストを検索して置き換える

ノートブック内でテキストを検索して置換するには、[編集] > [検索と置換] を選択します。 現在の一致はオレンジ色で強調表示され、他のすべての一致は黄色で強調表示されます。

現在の一致を置き換えるには、[置換] をクリックします。 ノートブック内のすべての一致を置換するには、[すべて置換] をクリックします。

一致から別の一致に移動するには、[前へ][次へ] のボタンをクリックします。 Shift + Enter キーを押して前の一致に、Enter キーを押して次の一致に移動することもできます。

検索と置換のツールを閉じるには、削除アイコン をクリックするか Esc キーを押します。

選択したセルを実行する

1 つのセルまたはセルの集まりを実行できます。 1 つのセルを選択するには、セル内の任意の場所をクリックします。 複数のセルを選択するには、スクリーンショットのように、MacOS の場合は Command キーを押しながら (Windows の場合は Ctrl キー)、テキスト領域の外側のセルをクリックします。

複数のセルを選択する方法

選択対象を実行する際、このコマンドの動作はノートブックがアタッチされているクラスターによって異なります。

  • Databricks Runtime 13.3 LTS 以下を実行しているクラスターでは、選択したセルが個別に実行されます。 セル内でエラーが発生した場合、実行は後続のセルで続行されます。
  • Databricks Runtime 14.0 以上を実行しているクラスター、または SQL ウェアハウスでは、選択したセルがバッチとして実行されます。 エラーが発生すると実行が停止します。個々のセルの実行を取り消すことはできません。 [割り込み] ボタンを使用してすべてのセルの実行を停止できます。

コードをモジュール化する

重要

この機能はパブリック プレビュー段階にあります。

Databricks Runtime 11.3 LTS 以降では、Azure Databricks ワークスペースでソース コード ファイルを作成して管理し、必要に応じてこれらのファイルをノートブックにインポートできます。

ソース コード ファイルの操作について詳しくは、「Databricks ノートブック間でコードを共有する」と「Python と R のモジュールを使用する」をご覧ください。

選択したテキストを実行する

ノートブック セル内のコードまたは SQL ステートメントを強調表示し、その選択範囲のみを実行できます。 これは、コードとクエリをすばやく繰り返したい場合に便利です。

  1. 実行する行を強調表示します。

  2. [実行] > [選択したテキストを実行する] を選択するか、キーボード ショートカット Ctrl+Shift+Enter を使用します。 テキストが強調表示されていない場合、[選択したテキストを実行する] では、現在の行が実行されます。

    選択した行を実行する

セルの混合言語を使用している場合、選択範囲に %<language> 行を含める必要があります。

[選択したテキストを実行する] で、強調表示された選択範囲内に折りたたまれたコードがある場合、そのコードも実行されます。

%run%pip%sh などの特殊なセル コマンドがサポートされています。

複数の出力タブがあるセル (つまり、データ プロファイルまたは視覚化を定義したセル) では、[選択したテキストを実行する] は使用できません。

コード セルの書式設定

Azure Databricks には、ノートブック セル内の Python および SQL コードを迅速で簡単に書式設定できるツールがあります。 これらのツールを使用すると、コードが書式設定された状態を維持するための労力が減り、同じコーディング標準を自分のすべてのノートブックに適用するのに役立ちます。

Python black フォーマッタ ライブラリ

重要

この機能はパブリック プレビュー段階にあります。

Azure Databricks では、ノートブック内で black を使用した Python コードの書式設定がサポートされています。 ノートブックは、black および tokenize-rt Python パッケージがインストールされたクラスターにアタッチされている必要があります。

Databricks Runtime 11.3 LTS とそれ以降では、Azure Databricks は blacktokenize-rt をプレインストールします。 これらのライブラリをインストールしなくても、フォーマッタを直接使用できます。

Databricks Runtime 10.4 LTS とそれ以降では、Python フォーマッタを使用するには、ノートブックまたはクラスターに PyPI から black==22.3.0tokenize-rt==4.2.1 をインストールする必要があります。 ノートブックで次のコマンドを実行できます:

%pip install black==22.3.0 tokenize-rt==4.2.1

または、ライブラリをクラスターにインストールします。

ライブラリのインストールの詳細については、「Python 環境の管理」を参照してください。

Databricks Git フォルダーのファイルとノートブックの場合、pyproject.toml ファイルに基づいて Python フォーマッタを構成できます。 この機能を使用するには、Git フォルダー ルート ディレクトリに pyproject.toml ファイルを作成し、Black 構成形式に従って構成します。 ファイルの [tool.black] セクションを編集します。 構成は、その Git フォルダー内の任意のファイルとノートブックの書式を設定する際に適用されます。

Python セルと SQL セルの書式を設定する方法

コードを書式設定するには、そのノートブックに対する編集可能アクセス許可が必要です。

Azure Databricks では、Gethue/sql-formatter ライブラリを使用して、SQL と Python 用の black コード フォーマッタの書式を設定します。

書式指定ツールを起動するには、次の方法があります。

  • 1 つのセルを書式設定する

    • キーボード ショートカット: Cmd + Shift + F キーを押します。
    • コマンド コンテキスト メニュー:
      • SQL セルの書式設定: SQL セルのコマンド コンテキスト ドロップダウン メニューで [SQL の書式設定] を選択します。 このメニュー項目は、SQL ノートブックのセルまたは %sql 言語マジックがあるセル内でのみ表示されます。
      • Python の書式設定セル: Pythonセルのコマンド コンテキスト ドロップダウン メニューで [Python の書式設定] を選択します。 このメニュー項目は、Python ノートブックのセルまたは %python 言語マジックがあるセル内でのみ表示されます。
    • ノートブック編集メニュー: Pythonセルまたは SQLセルを選択し、[書式セル]の[編集]>を選択します
  • 複数のセルを書式設定する

    複数のセルを選択してから、[編集]、[セルの書式設定] の順に選択します。 選択したセルの言語が 1 つだけではない場合も、SQL および Python セルだけが書式設定されます。 これには、%sql%python を使用するものも含まれます。

  • ノートブック内のすべての Python セルと SQL セルの書式を設定する

    [編集] > [ノートブックの書式設定] を選択します。 ノートブックに複数の言語が含まれている場合は、SQL セルと Python セルのみが書式設定されます。 これには、%sql%python を使用するものも含まれます。

コードの書式設定の制限事項

  • Black では、4 スペースインデントに対して PEP 8 標準が適用されます。 インデントは構成できません。
  • SQL UDF 内の埋め込み Python 文字列の書式設定はサポートされていません。 同様に、Python UDF 内の SQL 文字列の書式設定はサポートされていません。

バージョン履歴

Azure Databricks ノートブックは、ノートブック バージョンの履歴を保持しているため、ノートブックの以前のスナップショットを表示および復元できます。 バージョンに対して、コメントの追加、バージョンの復元と削除、およびバージョン履歴のクリアなどのアクションを実行できます。

Databricks での作業をリモート Git リポジトリと同期することもできます。

ノートブックのバージョンにアクセスするには、右側のサイドバーにあるバージョン履歴アイコンをクリックします。 ノートブックのバージョン履歴が表示されます。 [ファイル] > [バージョン履歴] を選択することもできます。

コメントの追加

最新のバージョンにコメントを追加するには:

  1. バージョンをクリックします。

  2. [今すぐ保存] をクリックします。

    コメントを保存する

  3. [ノートブックのバージョンの保存] ダイアログで、コメントを入力します。

  4. [保存] をクリックします。 入力したコメントと一緒にノートブックのバージョンが保存されます。

バージョンを復元する

バージョンを復元するには:

  1. バージョンをクリックします。

  2. [Restore this version] (このバージョンの復元) をクリックします。

    バージョンを復元する

  3. [Confirm](確認) をクリックします。 選択されているバージョンが、そのノートブックの最新のバージョンになります。

バージョンを削除する

バージョン エントリを削除するには、次の操作を行います。

  1. バージョンをクリックします。

  2. ごみ箱アイコン ごみ箱 をクリックします。

    バージョンの削除

  3. [はい、消去します] をクリックします。 選択したバージョンが履歴から削除されます。

バージョン履歴をクリアする

バージョン履歴は、クリアされた後は復旧できません。

ノートブックのバージョン履歴をクリアするには:

  1. [ファイル>バージョン履歴を消去] を選択します。
  2. [はい、消去します] をクリックします。 ノートブックのバージョン履歴が消去されます。

ノートブックのコード言語

既定の言語を設定する

ノートブックの既定の言語がノートブック名の横に表示されます。

Notebook の既定の言語

既定の言語を変更するには、言語ボタンをクリックし、ドロップダウン メニューから新しい言語を選択します。 既存のコマンドを引き続き確実に機能させるために、前の既定の言語のコマンドには、その先頭に言語マジック コマンドが自動的に付加されます。

言語を混在させる

既定では、ノートブックの既定の言語がセルに使用されます。 セル内で既定の言語以外の言語を使用するには、言語ボタンをクリックしてドロップダウン メニューから言語を選択します。

セル言語のドロップダウン

別の方法として、言語マジック コマンド %<language> をセルの先頭で使用することもできます。 サポートされているマジック コマンドは %python%r%scala%sql です。

注意

言語マジック コマンドを呼び出すと、そのコマンドはノートブックの実行コンテキストの中で REPL にディスパッチされます。 ある言語で定義された (したがって、その言語の REPL 内で定義された) 変数を、別の言語の REPL の中で使用することはできません。 REPL どうしが状態を共有するには、外部リソース (たとえば DBFS 内のファイルやオブジェクト ストレージ内のオブジェクト) を介する以外に方法はありません。

ノートブックでは、いくつかの補助マジック コマンドもサポートされています。

  • %sh: シェル コードをノートブック内で実行できます。 シェル コマンドの終了状態が 0 以外の場合にセルを異常終了させるには、-e オプションを追加します。 このコマンドは Apache Spark ドライバー上でのみ実行され、ワーカーでは実行されません。 シェル コマンドをすべてのノードで実行するには、初期化スクリプトを使用します。
  • %fs: dbutils のファイルシステム コマンドを使用できます。 たとえば、dbutils.fs.ls コマンドを実行してファイルを一覧表示するには、代わりに %fs ls を指定します。 詳細については、「Azure Databricks でファイルを操作する」を参照してください。
  • %md: テキスト、画像、数式や方程式など、さまざまな種類のドキュメントを含めることができます。 次のセクションを参照してください。

Python コマンドでの SQL 構文の強調表示とオートコンプリート

SQL を Python のコマンドの中で (たとえば spark.sql コマンドで) 使用するときに、構文の強調表示と SQL オートコンプリートを使用できます。

Python を使用して Python ノートブックで SQL セルの結果を確認する

SQL を使用してデータを読み込み、Python を使用して調べることができます。 Databricks Python ノートブックでは、SQL 言語セルのテーブル結果が、変数 _sqldf に割り当てられた Python DataFrame として自動的に使用できるようになります。

Databricks Runtime 13.3 LTS 以降では、IPython の出力キャッシュ システムを使用して、DataFrame の結果にアクセスすることもできます。 プロンプト カウンターは、セルの結果の下部に表示される出力メッセージに表示されます。 提示した例では、結果が Out[2] として表示されています。

注意

  • 変数 _sqldf は、%sql セルが実行されるたびに再度割り当てられる場合があります。 DataFrame の結果への参照が失われるのを防ぐには、次の %sql セルを実行する前に、新しい変数名に割り当てます。

    new_dataframe_name = _sqldf
    
  • クエリでパラメーター化にウィジェットを使用する場合、結果は Python DataFrame として使用できません。

  • クエリでキーワード CACHE TABLE または UNCACHE TABLE を使用する場合、結果は Python DataFrame として使用できません。

次のスクリーンショットに例を示します。

SQL 結果のデータフレーム

SQL セルを並列で実行する

コマンドが実行中で、ノートブックが対話型クラスターにアタッチされている間は、現在のコマンドと同時に SQL セルを実行できます。 SQL セルは、新しい、並列のセッションで実行されます。

セルを並列で実行するには、以下のようにします。

  1. セルを実行します

  2. [今すぐ実行] をクリックします。 セルが直ちに実行されます。

    現在実行中のセルと並列で SQL セルを実行する

セルは新しいセッションで実行されるため、一時ビュー、UDF、暗黙的な Python DataFrame (_sqldf) は、並列で実行されるセルではサポートされません。 また、並列実行中は既定のカタログ名とデータベース名が使用されます。 コードが別のカタログまたはデータベースのテーブルを参照している場合は、3 レベルの名前空間 (catalog.schema.table) を使用してテーブル名を指定する必要があります。

SQL ウェアハウスで SQL セルを実行する

SQL 分析用に最適化されたコンピューティングの種類である SQL ウェアハウス上の Databricks ノートブックで SQL コマンドを実行できます。 「SQL ウェアハウスを使用してノートブックを使用する」を参照してください。

画像を表示する

Azure Databricks では、Markdown セルで画像の表示がサポートされています。 ワークスペース、ボリューム、FileStore に格納されている画像を表示できます。

ワークスペースに格納されている画像を表示

絶対パスまたは相対パスのいずれかを使用して、ワークスペースに格納されている画像を表示できます。 ワークスペースに格納されている画像を表示するには、次の構文を使用します。

%md
![my_test_image](/Workspace/absolute/path/to/image.png)

![my_test_image](./relative/path/to/image.png)

Markdown セルに画像の埋め込み

ボリュームに格納されている画像の表示

絶対パスを使用してボリュームに格納されている画像を表示できます。 ボリュームに格納されている画像を表示するには、次の構文を使用します。

%md
![my_test_image](/Volumes/absolute/path/to/image.png)

FileStore に格納されている画像の表示

FileStore に格納されている画像を表示するには、次の構文を使用します。

%md
![my_test_image](files/image.png)

たとえば、Databricks ロゴ画像ファイルが FileStore にあるとします。

dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png

次のコードが Markdown セルの中に含まれていると、

Markdown セル内の画像

画像が次のようにセル内にレンダリングされます。

レンダリング済みイメージ

画像のドラッグ アンド ドロップ

画像をローカル ファイル システムから Markdown セルにドラッグ アンド ドロップできます。 画像は現在のワークスペース ディレクトリにアップロードされてセルに表示されます。

画像を Markdown セルにドラッグ アンド ドロップ

数式を表示する

ノートブックでは KaTeX がサポートされており、数式を表示することができます。 たとえば、次のように入力します。

%md
\\(c = \\pm\\sqrt{a^2 + b^2} \\)

\\(A{_i}{_j}=B{_i}{_j}\\)

$$c = \\pm\\sqrt{a^2 + b^2}$$

\\[A{_i}{_j}=B{_i}{_j}\\]

次のようにレンダリングされます。

レンダリング済み方程式 1

and

%md
\\( f(\beta)= -Y_t^T X_t \beta + \sum log( 1+{e}^{X_t\bullet\beta}) + \frac{1}{2}\delta^t S_t^{-1}\delta\\)

where \\(\delta=(\beta - \mu_{t-1})\\)

次のようにレンダリングされます。

レンダリング済み方程式 2

HTML を含める

ノートブックの中に HTML を含めるには、関数 displayHTML を使用します。 これを行う方法の例については、「ノートブックの HTML、D3、および SVG」を参照してください。

注意

displayHTML iframe はドメイン databricksusercontent.com から提供され、iframe サンドボックスには allow-same-origin 属性が含まれます。 databricksusercontent.com はブラウザーからアクセスできる必要があります。 現在、企業ネットワークによってブロックされている場合、許可リストに追加する必要があります。

Markdown セルの中で、他のノートブックまたはフォルダーに相対パスを使用してリンクすることができます。 アンカー タグの href 属性を相対パスとして指定します。先頭に $ を置き、それ以降は Unix ファイル システムと同じパターンに従います。

%md
<a href="$./myNotebook">Link to notebook in same folder as current notebook</a>
<a href="$../myFolder">Link to folder in parent folder of current notebook</a>
<a href="$./myFolder2/myNotebook2">Link to nested notebook</a>