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

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 サンプル ノートブック

Open notebook in new tab

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

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

高度な例: ipywidgets を使用したマップ

Open notebook in new tab

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

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

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

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

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

制限

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