次の方法で共有


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 では既定で使用されます。 コンピューティングの種類の詳細については、「 コンピューティングの種類」を参照してください。

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