次の方法で共有


ipywidgets

ipywidgets は、ユーザーがノートブック セルでパラメーター値を指定できるようにするビジュアル要素です。 ipywidgets を使用して、Databricks Python ノートブックを対話形式にできます。

ipywidgets パッケージには、スライダー、テキスト ボックス、チェック ボックスなどのフォーム コントロールや、タブ、アコーディオン、グリッドなどのレイアウト コントロールなどの、30 種類を超えるコントロールが含まれています。 これらの要素を使用して、グラフィカル ユーザー インターフェイスを構築し、ノートブック コードと接続できます。

注意

必要条件

  • ipywidgets は、Databricks Runtime 11.0 ~ Databricks Runtime 12.2 LTS ではプレビュー段階で提供され、Databricks Runtime 13.0 以降では一般提供されています。 Unity Catalog テーブルは、Databricks Runtime 12.2 LTS 以降の Unity Catalog 対応クラスターでサポートされています。
  • Databricks で ipywidgets を使用するには、ブラウザーが databricks-dev-cloudfront.dev.databricks.com ドメインにアクセスできる必要があります。

既定では、ipywidgets はポート 6062 を占有します。 Databricks Runtime 11.3 LTS 以降では、Datadog などのサードパーティ統合との競合が発生した場合、次の Spark 構成を使用してポートを変更できます。

spark.databricks.driver.ipykernel.commChannelPort <port-number>

次に例を示します。

spark.databricks.driver.ipykernel.commChannelPort 1234

クラスターの作成時に Spark 構成を設定する必要があります。

使用法

次のコードでは、3 から 10 までの値を受け取ることができるスライダーを使用してヒストグラムを作成します。 ウィジェットの値によって、ヒストグラム内のビンの数が決まります。 スライダーを移動すると、ヒストグラムがすぐに更新されます。 これを試すには、「ipywidgets ノートブックの例」を参照してください。

import ipywidgets as widgets
from ipywidgets import interact

# Load a dataset
sparkDF = spark.read.csv("/databricks-datasets/bikeSharing/data-001/day.csv", header="true", inferSchema="true")

# In this code, `(bins=(3, 10)` defines an integer slider widget that allows values between 3 and 10.
@interact(bins=(3, 10))
def plot_histogram(bins):
  pdf = sparkDF.toPandas()
  pdf.hist(column='temp', bins=bins)

次のコードでは、0 から 10 までの値を受け取ることができる整数スライダーを作成します。 既定値は 5 です。 コード内のスライダーの値にアクセスするには、int_slider.value を使用します。

import ipywidgets as widgets

int_slider = widgets.IntSlider(max=10, value=5)
int_slider

次のコードでは、Unity Catalog のテーブルからサンプルのデータフレームが読み込まれ、表示されます。 Unity Catalog テーブルは、Databricks Runtime 12.1 以降の Unity Catalog 対応クラスターでサポートされています。

import ipywidgets as widgets

# Create button widget. Clicking this button loads a sampled dataframe from UC table.
button = widgets.Button(description="Load dataframe sample")

# Output widget to display the loaded dataframe
output = widgets.Output()

def load_sample_df(table_name):
  return spark.sql(f"SELECT * FROM {table_name} LIMIT 1000")

def on_button_clicked(_):
    with output:
      output.clear_output()
      df = load_sample_df('<catalog>.<schema>.<table>')
      print(df.toPandas())

# Register the button's callback function to query UC and display results to the output widget
button.on_click(on_button_clicked)

display(button, output)

ノートブックの例: ipywidgets

次のノートブックは、ノートブックで ipywidgets を使用する例をいくつか示しています。

ipywidgets のノートブックの例

ノートブックを入手

ノートブックの例: ipywidgets の高度な例

次のノートブックは、対話型マップを作成するために ipywidgets を使用した、より複雑な例を示しています。

詳細な例: ipywidgets を使用したマップ

ノートブックを入手

ipywidgets と Databricks ウィジェットを使用するためのベスト プラクティス

Python ノートブックに対話型コントロールを追加するには ipywidget を使用することを、Databricks ではお勧めします。 他の言語のノートブックについては、Databricks ウィジェットを使用してください。

Databricks ウィジェットを使用すると、ノートブック間でパラメーターを渡したり、ジョブにパラメーターを渡したりできます。ipywidgets ではこれらのシナリオがサポートされていません。

Databricks でサポートされているサードパーティ製 Jupyter ウィジェット

Databricks では、ipyleafletbqplotVegaFusion などのサードパーティ製のウィジェットに対してベストエフォートのサポートを提供しています。 ただし、一部のサードパーティ製ウィジェットはサポートされていません。 Azure Databricks ノートブックでテスト済みのウィジェットの一覧については、Azure Databricks アカウント チームにお問い合わせください。

制限事項

  • ipywidgets を使用するノートブックは、実行中のクラスターにアタッチする必要があります。
  • ウィジェットの状態は、ノートブック セッション間では保持されません。 ウィジェット セルをレンダリングするには、ノートブックをクラスターにアタッチするたびに再実行する必要があります。
  • パスワードとコントローラーの ipywidget はサポートされていません。
  • LaTeX 式を含む HTMLMath と Label の各ウィジェットは正しくレンダリングされません。 (たとえば、widgets.Label(value=r'$$\frac{x+1}{x-1}$$') は正しくレンダリングされません。)
  • ノートブックがダーク モードの場合、ウィジェット、特に色付きウィジェットは正しくレンダリングされない場合があります。
  • ウィジェットの出力は、ノートブック ダッシュボード ビューでは使用できません。
  • ipywidgets の最大メッセージ ペイロード サイズは 5 MB です。 画像や大きなテキスト データを使用するウィジェットは正しくレンダリングされない場合があります。