次の方法で共有


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

このページでは、オートコンプリート、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 は 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 セルの書式を設定する方法

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

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

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

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

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

コードの書式設定の制限事項

  • Black では、4 スペースインデントに対して PEP 8 標準が適用されます。 インデントは構成できません。
  • SQL UDF 内の埋め込み Python 文字列の書式設定はサポートされていません。 同様に、Python UDF 内の SQL 文字列の書式設定はサポートされていません。

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

既定の言語を設定する

ノートブックの既定の言語は、ノートブック名の下に表示されます。

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 のコマンドの中で (たとえば コマンドで) 使用するときに、構文の強調表示と 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 を使用する方法を示しています。

SQL 結果のデータフレーム

重要

変数 _sqldf は、SQL セルが実行されるたびに再割り当てされます。 特定の DataFrame 結果への参照が失われることを回避するには、次の SQL セルを実行する前に新しい変数名に割り当てます。

Python

new_dataframe_name = _sqldf

SQL

ALTER VIEW _sqldf RENAME TO new_dataframe_name

SQL セルを並列で実行する

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

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

  1. セルを実行します

  2. [今すぐ実行] をクリックします。 セルが直ちに実行されます。

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

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

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

SQL 分析用に最適化されたコンピューティングの種類である SQL ウェアハウス上の Databricks ノートブックで SQL コマンドを実行できます。 「SQL ウェアハウスを使用してノートブックを使用する」を参照してください。

サーバーレス コンピューティングで Assistant でコードを実行する

Databricks の既定のコンピューティングであるサーバーレス コンピューティングでは、Databricks の Assistant でコードを実行できます。 コンピューティングが既に選択されているページ (ノートブックや 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 別のノートブックを実行し、その関数と変数をインポートします。 Notebook ワークフローを参照してください。
%fs %fs ls /path dbutils ファイルシステム コマンドを実行します。 dbutils.fs コマンドの短縮形。 「ファイルの操作」を参照してください。
%sh %sh ls -la シェル コマンドを実行します。 ドライバー ノードでのみ実行されます。 エラー時に失敗するには、 -e を使用します。
%tensorboard %tensorboard --logdir /logs TensorBoard UI をインラインで表示します。 Databricks ランタイム 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と同じように動作します。

重要

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