メインコンテンツまでスキップ

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

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

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

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

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

コードのモジュール化

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

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

コードセルの書式設定

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

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

備考

プレビュー

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

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

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

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

%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 アクセス許可 が必要です。

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

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

  • 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を使用するものが含まれます。

SQL クエリの形式をカスタマイズするには、「 カスタム形式の SQL ステートメント」を参照してください。

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

  • Blackは、PEP 8標準の4スペースインデントを採用しています。インデントを構成することはできません。
  • SQL UDF内の埋め込みPython文字列のフォーマットはサポートされていません。同様に、Python UDF内のSQL文字列のフォーマットもサポートされていません。

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

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

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

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

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

混合言語

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

セル言語ドロップダウン

あるいは、セルの先頭で言語マジックコマンド%<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 を使用する場合に使用できます。

SQL セルの結果を調べる

Databricks ノートブックでは、SQL 言語セルの結果は、変数 _sqldfに割り当てられた暗黙的な データフレーム として自動的に利用可能になります。 その後、この変数は、ノートブック内の位置に関係なく、後で実行する任意の Python セルと SQL セルで使用できます。

注記

この機能には、次の制限があります。

  • _sqldf 変数は、コンピュートの SQLウェアハウス を使用するノートブックでは使用できません。
  • 後続の Python セルでの _sqldf の使用は、Databricks Runtime 13.3 以降でサポートされています。
  • 後続の SQL セルでの _sqldf の使用は、Databricks Runtime 14.3 以降でのみサポートされています。
  • クエリでキーワード CACHE TABLE または UNCACHE TABLEを使用している場合、 _sqldf 変数は使用できません。

以下のスクリーンショットは、後続の Python セルと SQL セルで _sqldf を使用する方法を示しています:

SQL結果データフレーム

important

変数 _sqldf は、SQL セルが実行されるたびに再割り当てされます。 特定の データフレーム 結果への参照が失われないようにするには、次の SQL セルを実行する前に、新しい変数名にその結果を割り当てます。

Python
new_dataframe_name = _sqldf

SQL セルの並列実行

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

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

  1. セルを実行します

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

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

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

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

SQLコマンドは、Databricks SQLウェアハウス (SQL アナリティクス用に最適化されたコンピュートの一種) 上の ノートブックで実行できます。SQLウェアハウスでノートブックを使用するを参照してください。

サーバレス コンピュートにおけるアシスタントのコード実行

サーバレス コンピュDatabricksートのDatabricksでアシスタントでコードを実行できます。コンピュートがすでに選択されているページ (ノートブックや SQL エディターなど Databricks ) の場合は、 デフォルト それを使用します。 コンピュートの種類に関する情報については、 コンピュートを参照してください。

サーバレス コンピュートにアクセスできない場合は、アシスタント パネルでコードを実行できるコンピュート インスタンスが必要です。

魔法のコマンドを使用する

Databricks ノートブックは、標準構文を超えて機能を拡張し、一般的なタスクを簡素化するさまざまなマジック コマンドをサポートしています。線マジックとセルマジックの場合、マジックコマンドの先頭には%が付きます。

魔法コマンド

説明

%python

%python
print("Hello")

セル言語を Python に切り替えます。セル内で Python コードを実行します。

%r

%r
print("Hello")

セルの言語を R に切り替えます。セル内で R コードを実行します。

%scala

%scala
println("Hello")

セル言語を Scala に切り替えます。セル内で Scala コードを実行します。

%sql

%sql
SELECT * FROM table

セルの言語をSQLに切り替えます。結果はPython/SQLセルで_sqldfとして表示されます。

%md

%md
# Title
Content here

セルの言語を Markdown に切り替えます。セル内に Markdown コンテンツをレンダリングします。テキスト、画像、数式、LaTeX をサポートします。

%pip

%pip install pandas

Python パッケージをインストールします (ノートブック スコープ)。ノートブックスコープの Python ライブラリを参照してください。

%run

%run /path/to/notebook

別のノートブックを実行し、その関数と変数をインポートします。「ノートブックのワークフロー」を参照してください。

%fs

%fs ls /path

dbutils ファイルシステム コマンドを実行します。dbutils.fsコマンドの省略形。「ファイルの操作」を参照してください。

%sh

%sh ls -la

シェルコマンドを実行します。ドライバー ノードでのみ実行されます。エラーが発生した場合は-eを使用します。

%tensorboard

%tensorboard --logdir /logs

TensorBoard UI をインラインで表示します。Databricks Runtime ML でのみ利用可能です。TensorBoard を参照してください。

%set_cell_max_output_size_in_mb

%set_cell_max_output_size_in_mb 10

最大セル出力サイズを設定します。範囲: 1〜20 MB。ノートブック内の後続のすべてのセルに適用されます。

%skip

%skip
print("This won't run")

セルの実行をスキップします。ノートブックの実行時にセルが実行されないようにします。

注記

IPython Automagic : Databricks ノートブックでは、IPython Automagic がデフォルトで有効になっているため、 pipなどの特定のコマンドは%プレフィックスなしで動作できます。たとえば、 pip install pandas %pip install pandasと同じように動作します。

important
  • 変数と状態は、異なる言語の REPL 間で分離されます。たとえば、Python 変数は Scala セルではアクセスできません。
  • ノートブック セルにはセル マジック コマンドを 1 つだけ設定でき、そのコマンドはセルの最初の行になければなりません。
  • %run ノートブック全体をインラインで実行するため、セル内に単独で存在する必要があります。
  • Databricks Runtime 12.2 LTS 以下で%pip使用する場合は、インストール後に Python の状態がリセットされるため、すべてのパッケージ インストール コマンドをノートブックの先頭に配置します。