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

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

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

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

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

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

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

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

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

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

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

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

データを参照する

スキーマ ブラウザーを使用して、ノートブックで使用できるテーブルとボリュームを調べます。 ノートブックの左側にある ノートブックのデータ アイコン をクリックして、スキーマ ブラウザーを開きます。

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

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

ケバブ メニュー ケバブ メニューを開くには、こちらに示すように、項目名の上にカーソルを合わせます。

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

項目がテーブルの場合は、次の操作を実行できます。

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

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

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

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

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

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

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

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

一致するテキスト

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

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

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

変数エクスプローラー

ノートブック UI で Python、Scala、R の変数を直接観察できます。 Databricks Runtime 12.2 LTS 以降の Python の場合、変数はセルが実行されると更新されます。 Databricks Runtime 11.3 LTS 以下の Python の Scala、R、Python の場合、セルの実行が完了すると変数が更新されます。

変数エクスプローラーを開くには、右側のサイドバー変数エクスプローラー アイコンをクリックします。 変数エクスプローラーが開き、ノートブックで現在定義されている各変数の値とデータ型 (図形を含む) が表示されます。 (PySpark データフレームの図形は '?' です。これは、図形の計算は計算コストが高くなる場合があるためです)

表示をフィルター処理するには、検索ボックスにテキストを入力します。 入力すると、自動的に一覧がフィルター処理されます。

ノートブック セルを実行すると、変数の値が自動的に更新されます。

変数エクスプローラー パネルの例

選択したセルを実行する

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 セルの書式設定

重要

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

Azure Databricks では、ノートブック内で Black を使用した Python コードの書式設定がサポートされています。 ノートブックは、blacktokenize-rtPython パッケージがインストールされたクラスターにアタッチされている必要があり、Black フォーマッタはノートブックがアタッチされているクラスターで実行されます。

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 セルの書式を設定する方法

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

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

  • 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 ウェアハウスを使用してノートブックを使用する」を参照してください。

画像を表示する

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

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

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

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

次のコードが 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>