ipywidgets
IPYウィジェットは 、ユーザーがノートブックのセルでパラメーター値を指定できるようにするビジュアル要素です。 ipywidgets を使用して、Databricks Python ノートブックを対話型にすることができます。
ipywidgets パッケージには、スライダー、テキストボックス、チェックボックスなどのフォームコントロールや、タブ、アコーディオン、グリッドなどのレイアウトコントロールなど、 30 を超えるさまざまなコントロールが含まれています。 これらの要素を使用して、ノートブック コードとインターフェイスするグラフィカル ユーザー インターフェイスを構築できます。
注
クラスターがサポートする ipywidgets のバージョンを確認するには、クラスターの Databricks Runtimeバージョンの リリースノート を参照してください。
一部の ipywidgets は Databricks Runtime 15.0 では動作しません。
Databricks ウィジェットに関する情報については、「 Databricks ウィジェット」を参照してください。 Databricks ウィジェットまたは ipywidgets を使用する場合のガイドラインについては、「 ipywidgets ウィジェットと Databricks ウィジェットを使用するためのベスト プラクティス」を参照してください。
要件
ipywidgets は、Databricks Runtime 11.1 から Databricks Runtime 12.2 LTS でプレビューで使用でき、Databricks Runtime 13.0 以降で一般公開されています。 Unity Catalog テーブルのサポートは、Unity Catalog 対応クラスターの Databricks Runtime 12.1 以降で使用できます。
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 テーブルのサポートは、 Unity Catalog 対応クラスターの Databricks Runtime12.1 以降で使用できます。
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 ウィジェットと Databricks ウィジェットを使用するためのベスト プラクティス
Python ノートブックに対話型コントロールを追加するには、 Databricks ipywidgets を使用することをお勧めします。 他の言語のノートブックの場合は、 Databricks ウィジェットを使用します。
Databricks ウィジェットを使用して、ノートブック間でパラメーターを渡したり、ジョブに パラメーターを渡 したりできます。IPYウィジェットは、これらのシナリオをサポートしていません。
どのサードパーティの Jupyter ウィジェットが Databricks でサポートされていますか?
Databricks は、 ipyleaflet、 bqplot、 VegaFusion などのサードパーティ製ウィジェットに対してベストエフォート型サポートを提供します。 ただし、一部のサードパーティウィジェットはサポートされていません。 Databricks ノートブックでテストされたウィジェットの一覧については、Databricks アカウント チームにお問い合わせください。
制限
詳細については、 Databricks既知の制限事項」を参照してください。