ipywidgets

Ipywidgets 是視覺元素,可讓使用者在 Notebook 資料格中指定參數值。 你可以用 ipywidgets 讓你的 Databricks Python 筆記本變得互動式。

ipywidgets 套件包含超過 30 個不同的控制項,包括滑桿、文字輸入框和核取方塊等表單控制項,以及索引標籤、摺疊式功能表和格線等版面配置控制項。 您可以使用這些元素來建置圖形化使用者介面,以與筆記本程式碼互動。

注意

需求

  • 在 Databricks Runtime 11.0 到 Databricks Runtime 12.2 LTS 中,ipywidgets 可以作為預覽版使用,而在 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 範例 Notebook 以進行嘗試。

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 中的資料表載入並顯示一個樣本 DataFrame。 在已啟用 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

下列 Notebook 顯示在 Notebook 中使用 ipywidgets 的一些範例。

ipywidgets 範例筆記本

取得筆記本

Notebook 範例:ipywidgets 進階範例

下列 Notebook 顯示使用 ipywidgets 建立互動式地圖的較複雜範例。

進階範例:使用 ipywidgets 的地圖

取得筆記本

使用 ipywidgets 和 Databricks 小工具的最佳做法

Databricks 建議使用 ipywidgets 來為 Python 筆記本加入互動式控制項。 對於其他語言版本的 Notebook,請使用 Databricks 小工具

您可以使用 Databricks 小工具在 Notebook 之間傳遞參數,並將參數傳遞至工作;ipywidgets 不支援這些情境。

Databricks 支援哪些第三方 Jupyter 小工具?

Databricks 提供第三方小工具的最佳支援,例如 ipyleafletbqplotVegaFusion。 不過,有些第三方小工具不支援。 如需查詢 Azure Databricks 筆記本中測試過的元件清單,請聯絡您的 Azure Databricks 帳戶團隊。

限制

欲了解更多資訊,請參閱 Databricks 筆記本的已知限制