このページでは、オートコンプリート、Python と SQL の自動書式設定、ノートブックでの Python と SQL の組み合わせ、ノートブックのバージョン履歴の追跡など、Databricks ノートブックでコードを開発する方法について説明します。
オートコンプリート、変数の選択、マルチカーソルのサポート、並列比較など、エディターで使用できる高度な機能の詳細については、「Databricks ノートブックとファイルエディター」をご覧ください。
ノートブックまたはファイル エディターを使用する場合は、コードの生成、説明、デバッグに役立つ Databricks Assistant を使用できます。 詳細については、「Databricks Assistant を使用する」を参照してください。
Databricks ノートブックには、Python ノートブック用の対話型デバッガーも組み込みで含まれています。 「ノートブックのデバッグ」を参照してください。
コードをモジュール化する
Databricks Runtime 11.3 LTS 以降では、Azure Databricks ワークスペースでソース コード ファイルを作成して管理し、必要に応じてこれらのファイルをノートブックにインポートできます。
ソース コード ファイルの操作について詳しくは、「Databricks ノートブック間でコードを共有する」と「Python と R のモジュールを使用する」をご覧ください。
コード セルの書式設定
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
を使用するものも含まれます。
SQL クエリの書式設定方法をカスタマイズするには、「 カスタム形式の SQL ステートメント」を参照してください。
コードの書式設定の制限事項
- Black では、4 スペースインデントに対して PEP 8 標準が適用されます。 インデントは構成できません。
- SQL UDF 内の埋め込み Python 文字列の書式設定はサポートされていません。 同様に、Python UDF 内の SQL 文字列の書式設定はサポートされていません。
ノートブックのコード言語
既定の言語を設定する
ノートブックの既定の言語は、ノートブック名の下に表示されます。
既定の言語を変更するには、言語ボタンをクリックし、ドロップダウン メニューから新しい言語を選択します。 既存のコマンドを引き続き確実に機能させるために、前の既定の言語のコマンドには、その先頭に言語マジック コマンドが自動的に付加されます。
言語を混在させる
既定では、ノートブックの既定の言語がセルに使用されます。 セル内で既定の言語以外の言語を使用するには、言語ボタンをクリックしてドロップダウン メニューから言語を選択します。
別の方法として、言語マジック コマンド %<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 のコマンドの中で (たとえば コマンドで) 使用するときに、構文の強調表示と SQL spark.sql
を使用できます。
SQL セルの結果を調べる
Databricks ノートブックでは、SQL 言語セルからの結果は、変数 _sqldf
に割り当てられた暗黙的な DataFrame として自動的に使用できるようになります。 この変数は、ノートブック内での位置に関係なく、後で実行するすべての Python セルと SQL セルで使用できます。
注意
この機能には次の制限があります。
-
_sqldf
変数は、コンピューティングにSQL ウェアハウスを使用するノートブックでは使用できません。 - 後続の Python セルでの
_sqldf
の使用は、Databricks Runtime 13.3 以降でサポートされています。 - 後続の SQL セルでの
_sqldf
の使用は、Databricks Runtime 14.3 以降でのみサポートされています。 - クエリでキーワード
CACHE TABLE
またはUNCACHE TABLE
を使用する場合、_sqldf
変数は使用できません。
次のスクリーンショットは、後続の Python セルと SQL セルで _sqldf
を使用する方法を示しています。
重要
変数 _sqldf
は、SQL セルが実行されるたびに再割り当てされます。 特定の DataFrame 結果への参照が失われることを回避するには、次の SQL セルを実行する前に新しい変数名に割り当てます。
Python(プログラミング言語)
new_dataframe_name = _sqldf
SQL
ALTER VIEW _sqldf RENAME TO new_dataframe_name
SQL セルを並列で実行する
コマンドが実行中で、ノートブックが対話型クラスターにアタッチされている間は、現在のコマンドと同時に SQL セルを実行できます。 SQL セルは、新しい、並列のセッションで実行されます。
セルを並列で実行するには、以下のようにします。
[今すぐ実行] をクリックします。 セルが直ちに実行されます。
セルは新しいセッションで実行されるため、一時ビュー、UDF、暗黙的な Python DataFrame (_sqldf
) は、並列で実行されるセルではサポートされません。 また、並列実行中は既定のカタログ名とデータベース名が使用されます。 コードが別のカタログまたはデータベースのテーブルを参照している場合は、3 レベルの名前空間 (catalog
.schema
.table
) を使用してテーブル名を指定する必要があります。
SQL ウェアハウスで SQL セルを実行する
SQL 分析用に最適化されたコンピューティングの種類である SQL ウェアハウス上の Databricks ノートブックで SQL コマンドを実行できます。 「SQL ウェアハウスを使用してノートブックを使用する」を参照してください。
サーバーレス コンピューティングで Assistant でコードを実行する
Databricks の既定のコンピューティングであるサーバーレス コンピューティングでは、Databricks の Assistant でコードを実行できます。 コンピューティングが既に選択されているページ (ノートブックや SQL エディターなど) の場合、Databricks では既定で使用されます。 コンピューティングの種類の詳細については、「 コンピューティングの種類」を参照してください。
サーバーレス コンピューティングにアクセスできない場合は、アシスタント パネルでコードを実行できるコンピューティング インスタンスが必要です。