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] を選びます。
オブジェクトがカタログ、スキーマ、またはボリュームの場合は、オブジェクトのパスをコピーするか、カタログ エクスプローラーで開くことができます。
テーブルまたは列名をセルに直接挿入するには、次のようにします。
- セル内の、名前を入力する位置でカーソルをクリックします。
- スキーマ ブラウザーのテーブル名または列名の上にカーソルを移動します。
- オブジェクトの名前の右側に表示される二重矢印 をクリックします。
キーボード ショートカット
キーボード ショートカットを表示するには、[キーボード ショートカットの>ヘルプ] を選択します。 使用できるキーボード ショートカットは、カーソルがコード セル内にあるかどうか (編集モード) か (コマンド モード) かによって異なります。
コマンド パレット
コマンド パレットを使用して、ノートブックでアクションをすばやく実行できます。 ノートブック アクションのパネルを開くには、ワークスペースの右下隅にある をクリックするか、ショートカット 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 ステートメントを強調表示し、その選択範囲のみを実行できます。 これは、コードとクエリをすばやく繰り返したい場合に便利です。
実行する行を強調表示します。
[実行] > [選択したテキストを実行する] を選択するか、キーボード ショートカット
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 は black
と tokenize-rt
をプレインストールします。 これらのライブラリをインストールしなくても、フォーマッタを直接使用できます。
Databricks Runtime 10.4 LTS とそれ以降では、Python フォーマッタを使用するには、ノートブックまたはクラスターに PyPI から black==22.3.0
と tokenize-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 キーを押します。
- コマンド コンテキスト メニュー:
- ノートブック編集メニュー: 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 リポジトリと同期することもできます。
ノートブックのバージョンにアクセスするには、右側のサイドバーにあるをクリックします。 ノートブックのバージョン履歴が表示されます。 [ファイル] > [バージョン履歴] を選択することもできます。
コメントの追加
最新のバージョンにコメントを追加するには:
バージョンをクリックします。
[今すぐ保存] をクリックします。
[ノートブックのバージョンの保存] ダイアログで、コメントを入力します。
[保存] をクリックします。 入力したコメントと一緒にノートブックのバージョンが保存されます。
バージョンを復元する
バージョンを復元するには:
バージョンをクリックします。
[Restore this version] (このバージョンの復元) をクリックします。
[Confirm](確認) をクリックします。 選択されているバージョンが、そのノートブックの最新のバージョンになります。
バージョンを削除する
バージョン エントリを削除するには、次の操作を行います。
バージョンをクリックします。
ごみ箱アイコン をクリックします。
[はい、消去します] をクリックします。 選択したバージョンが履歴から削除されます。
バージョン履歴をクリアする
バージョン履歴は、クリアされた後は復旧できません。
ノートブックのバージョン履歴をクリアするには:
- [ファイル>バージョン履歴を消去] を選択します。
- [はい、消去します] をクリックします。 ノートブックのバージョン履歴が消去されます。
ノートブックのコード言語
既定の言語を設定する
ノートブックの既定の言語がノートブック名の横に表示されます。
既定の言語を変更するには、言語ボタンをクリックし、ドロップダウン メニューから新しい言語を選択します。 既存のコマンドを引き続き確実に機能させるために、前の既定の言語のコマンドには、その先頭に言語マジック コマンドが自動的に付加されます。
言語を混在させる
既定では、ノートブックの既定の言語がセルに使用されます。 セル内で既定の言語以外の言語を使用するには、言語ボタンをクリックしてドロップダウン メニューから言語を選択します。
別の方法として、言語マジック コマンド %<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 セルは、新しい、並列のセッションで実行されます。
セルを並列で実行するには、以下のようにします。
[今すぐ実行] をクリックします。 セルが直ちに実行されます。
セルは新しいセッションで実行されるため、一時ビュー、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)
ボリュームに格納されている画像の表示
絶対パスを使用してボリュームに格納されている画像を表示できます。 ボリュームに格納されている画像を表示するには、次の構文を使用します。
%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 セルにドラッグ アンド ドロップできます。 画像は現在のワークスペース ディレクトリにアップロードされてセルに表示されます。
数式を表示する
ノートブックでは 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}\\]
次のようにレンダリングされます。
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})\\)
次のようにレンダリングされます。
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>