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

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

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

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

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

Databricks Assistant からコーディングのサポートを受ける

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

Databricks Assistant は、次のタスクを支援します。

  • コードを生成します。

  • エラーの特定と修正の提案を含む、コードをデバッグします。

  • コードを変換して最適化します。

  • コードを説明する。

  • Databricks ドキュメントで関連情報を見つけるのに役立ちます。

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

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

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

データを閲覧する

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

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

フィルタ」ボックスにテキストを入力すると、入力したテキストを含むアイテムのみが表示されるようになります。現在開いているアイテム、または現在のセッションで開いたことのあるアイテムのみが表示されます。「フィルタ」ボックスは、ノートブックで使用可能なカタログ、スキーマ、テーブルを完全に検索するためのものではありません。

ケバブメニューを開く ケバブメニュー には、次のようにアイテムの名前の上にカーソルを置きます。

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

アイテムがテーブルの場合、以下の操作を実行できます。

  • セルを自動的に作成して実行し、テーブル内のデータのプレビューを表示します。テーブルのケバブメニューから「新しいセルでプレビュー」を選択します。

  • カタログ、スキーマ、またはテーブルをカタログ エクスプローラで表示します。 ケバブメニューから [カタログエクスプローラーで開く ]を選択します。 新しいタブが開き、選択した項目が表示されます。

  • カタログ、スキーマ、テーブルへのパスを取得します。アイテムのケバブメニューから「パスをコピー」を選択します。

  • テーブルをお気に入りに追加します。テーブルのケバブメニューから「テーブルをお気に入りに追加」選択します。

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

テーブル名または列名をセルに直接挿入するには、以下を実行します。

  1. 名前を入力したい場所のセルでカーソルをクリックします。

  2. スキーマブラウザでテーブル名または列名の上にカーソルを移動します。

  3. アイテム名の右側に表示される二重矢印 両方向の矢印をクリックします。

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

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

テキストの検索と置換

ノートブック内のテキストを検索して置換するには、「編集」>「検索と置換」を選択します。現在選択されている一致はオレンジ色でハイライトされ、他のすべての一致は黄色でハイライトされます。

一致するテキスト

現在選択されている一致を置き換えるには、「置換」をクリックします。ノートブック内の一致をすべて置換するには、「すべて置換」をクリックします。

一致の間を移動するには、「前へ」ボタンと「次へ」ボタンをクリックします。また、Shift+Enterキーを押して前の一致へ、Enterキーを押して次の一致へ移動することもできます。

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

変数エクスプローラー

ノートブックのUIでPython、Scala、Rの変数を直接観察できます。Databricks Runtime 12.1以降のPythonの場合、セルが実行されると変数が更新されます。ScalaとRの場合とDatabricks Runtime 12.0以前のPythonの場合、セルの実行が終了した後に変数が更新されます。

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

表示内容をフィルタリングするには、検索ボックスにテキストを入力します。入力すると、リストが自動的にフィルタリングされます。

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

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

選択したセルを実行する

単一のセルまたはセルのコレクションを実行できます。 1 つのセルを選択するには、セル内の任意の場所をクリックします。 複数のセルを選択するには、MacOS では Command キー、Windows では Ctrl キーを押したまま、スクリーン ショットに示すように、テキスト領域の外側のセルをクリックします。

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

選択したセルを実行するには、[ 実行] > [選択したセルを実行] を選択します。

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

  • 13.3 LTS 以下を実行しているクラスタでは、選択したセル Databricks Runtime 個別に実行されます。 セルでエラーが発生した場合、後続のセルで実行が続行されます。

  • Databricks Runtime 14.0以降を実行しているクラスター、またはSQLウェアハウスでは、選択したセルがバッチとして実行されます。エラーが発生すると実行が停止し、個々のセルの実行をキャンセルすることはできません。 [割り込み] ボタンを使用して、すべてのセルの実行を停止できます。

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

プレビュー

この機能はパブリックプレビュー段階です。

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

ソースコードファイルの操作については、「Databricksノートブック間でのコードの共有」と「PythonおよびRモジュールの操作」を参照してください。

選択したテキストを実行

ノートブックのセル内のコードまたはSQLステートメントをハイライトして、その選択部分のみを実行することができます。これは、コードやクエリーをすばやく反復処理したい場合に便利です。

  1. 実行する行をハイライトします。

  2. 「実行」>「選択したテキストを実行」を選択するか、キーボードショートカットCtrl+Shift+Enterキーを使用します。テキストがハイライトされていない場合、「選択したテキストを実行 」を使用すると、現在の行が実行されます。

    選択した行を実行

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

ハイライトされた選択範囲に折りたたまれたコードがある場合、「選択したテキストを実行」を使用すると、それも実行されます。

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

複数の出力タブがあるセル(つまり、データプロファイルまたはビジュアライゼーションを定義しているセル)では、「選択したテキストを実行」を使用することはできません。

コードセルをフォーマットする

Databricksは、ノートブックのセル内のPythonおよびSQLコードを迅速かつ簡単にフォーマットできるツールを提供しています。これらのツールは、コードのフォーマットを維持するための労力を軽減し、ノートブック全体に同じコーディング標準を適用するのに役立ちます。

Pythonセルをフォーマットする

プレビュー

この機能はパブリックプレビュー段階です。

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

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

Databricks Runtime 11.1以下で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セルをフォーマットする方法

コードをフォーマットするには、ノートブックに対するCAN EDIT 権限が必要です。

フォーマッタは、以下の方法でトリガーできます。

  • 1つのセルをフォーマットする

    • キーボードショートカット:Cmd+Shift+Fキーを押します。

    • コマンドコンテキストメニュー:

      • SQLセルのフォーマット: SQLセルのコマンドコンテキストドロップダウンメニューで[ SQLフォーマット ]を選択します。 このメニュー項目は、SQL ノートブックのセルまたは %sql 言語の魔法を持つセルでのみ表示されます。

      • [Python] セルの書式設定: [Python セルのコマンド コンテキスト] ドロップダウン メニューで [ Python の書式設定 ] を選択します。 このメニュー項目は、Python ノートブックのセルまたは %python 言語の魔法を持つセルでのみ表示されます。

    • ノートブックの「編集」メニュー:PythonまたはSQLセルを選択し、「編集」>「セルのフォーマット」を選択します。

  • 複数のセルをフォーマットする

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

  • ノートブック内のすべてのPythonおよびSQLセルをフォーマットする

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

コードのフォーマットの制限事項

  • Blackは、PEP 8標準の4スペースインデントを採用しています。インデントを構成することはできません。

  • SQL UDF内の埋め込みPython文字列のフォーマットはサポートされていません。同様に、Python UDF内のSQL文字列のフォーマットもサポートされていません。

バージョン履歴

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

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

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

コメントを追加する

最新バージョンにコメントを追加するには、以下を実行します。

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

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

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

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

バージョンを復元する

バージョンを復元するには、以下を実行します。

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

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

    バージョンの復元
  3. 確認」をクリックします。選択したバージョンがノートブックの最新バージョンになります。

バージョンを削除する

バージョンエントリを削除するには、以下を実行します。

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

  2. ゴミ箱アイコンゴミ箱をクリックします。

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

バージョン履歴を消去する

バージョン履歴を消去すると、復元することができなくなります。

ノートブックのバージョン履歴を消去するには、以下を実行します。

  1. 「ファイル」>「バージョン履歴を消去」を選択します。

  2. はい、消去します」をクリックします。ノートブックのバージョン履歴が消去されます。

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

デフォルト言語を設定する

ノートブックのデフォルト言語は、ノートブック名の横に表示されています。

ノートブックのデフォルト言語

デフォルト言語を変更するには、言語ボタンをクリックし、ドロップダウンメニューから新しい言語を選択します。既存のコマンドが引き続き機能することを保証するために、以前のデフォルト言語のコマンドには、言語マジックコマンドが接頭辞として自動的に付与されます。

言語を混在させる

デフォルトでは、セルはノートブックのデフォルト言語を使用します。言語ボタンをクリックし、ドロップダウンメニューから言語を選択することで、セル内のデフォルト言語をオーバーライドできます。

セル言語ドロップダウン

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

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

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

  • %sh:ノートブックでシェルコードを実行できます。シェルコマンドの終了ステータスがゼロ以外の場合にセルを失敗させるには、-eオプションを追加します。このコマンドは、ワーカーではなく、Apache Sparkドライバーでのみ実行されます。すべてのノードでシェルコマンドを実行するには、 initスクリプトを使用します。

  • %fs: dbutils ファイルシステムコマンドを使用できます。 たとえば、 dbutils.fs.ls コマンドを実行してファイルを一覧表示するには、代わりに %fs ls を指定できます。 詳細については、「 Databricks でのファイルの操作」を参照してください

  • %md:テキスト、画像、数式や方程式など、さまざまなタイプのドキュメントを含めることができます。次のセクションを参照してください。

PythonコマンドにおけるSQL構文のハイライトとオートコンプリート

構文の強調表示と SQL オートコンプリート は、 spark.sql コマンドなどの Python コマンド内で SQL を使用する場合に使用できます。

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

SQLを使用してデータを読み込み、Pythonを使用してそれを探索することもできます。Databricks Pythonノートブックにおいて、SQL言語セルのテーブル結果は、変数_sqldfに割り当てられたPython DataFrameとして自動的に利用可能になります。

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

  • 変数_sqldfは、%sqlセルが実行されるたびに再割り当てされる可能性があります。DataFrameの結果への参照が失われないようにするには、次の%sqlセルを実行する前に、新しい変数名に割り当ててください。

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

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

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

SQL結果DataFrame

SQLセルを並列実行する

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

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

  1. セルを実行します。

  2. 今すぐ実行」をクリックします。セルはすぐに実行されます。

    現在実行中のセルと並行してSQLセルを実行

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

画像を表示する

ファイルストアに保存されている画像を表示するには、次の構文を使用します。

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

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

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

%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を含める

関数displayHTMLを使用すると、ノートブックにHTMLを含めることができます。この方法の例については、「ノートブック内のHTML、D3、SVG」を参照してください。

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