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

ipywidgets

ipywidgets は、ユーザーがノートブックのセルでパラメーター値を指定できるようにする視覚的な要素です。 ipywidgets を使用して、Databricks Python ノートブックをインタラクティブにすることができます。

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

注記
  • クラスターがサポートする ipywidgetsDatabricks Runtimeのバージョンを確認するには、クラスターの バージョンの リリースノート を参照してください。
  • 一部の ipywidget は、Databricks Runtime 15.0 では機能しません。
  • Databricksウィジェットに関する情報については、Databricksウィジェットを参照してください。Databricks ウィジェットまたは ipywidget をいつ使用するかのガイドラインについては、「 ipywidgets と Databricks ウィジェットの使用に関するベスト プラクティス」を参照してください。

必要条件

  • ipywidgets は、Databricks Runtime 11.0 から Databricks Runtime 12.2 LTS までのプレビュー版で利用でき、Databricks Runtime 13.0 以降で一般公開されています。 Unity Catalogテーブルのサポートは、Databricks Runtime 12.1 以降で 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 サンプル ノートブック を参照してください。

Python
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を使用します。

Python
import ipywidgets as widgets

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

次のコードは、Unity Catalog のテーブルからサンプル データフレームを読み込んで表示します。 Unity Catalogテーブルのサポートは、Databricks Runtime Unity Catalog対応クラスターの 12.1 以降で使用できます。

Python
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 ノートブックに対話型コントロールを追加するために、Databricks では ipywidget を使用することをお勧めします。 他の言語のノートブックの場合は、 Databricks ウィジェットを使用します。

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

Databricks でサポートされているサードパーティの Jupyter ウィジェットはどれですか?

Databricksは、 ipyleafletbqplotVegaFusionなどのサードパーティ製ウィジェットに対して、可能な限りのサポートを提供します。ただし、一部のサードパーティ製ウィジェットはサポートされていません。Databricksノートブックでテストされているウィジェットのリストについては、 Databricksアカウント チームにお問い合わせください。

制限

詳細については、 Databricksノートブックの既知の制限」を参照してください。