ipywidgets

ipywidgets são elementos visuais que permitem aos usuários especificar valores de parâmetros nas células Notebook . Você pode usar ipywidgets para tornar seu Databricks Python Notebook interativo.

O pacote ipywidgets inclui mais de 30 controles diferentes, incluindo controles de formulário como sliders, caixas de texto e caixas de seleção, bem como controles de disposição como tab, sanfonas e grades. Usando esses elementos, você pode criar interfaces gráficas com o usuário para interagir com o código Notebook .

Observação

Requisitos

  • ipywidgets estão disponíveis em versão prévia no Databricks Runtime 11.1 até o Databricks Runtime 12.2 LTS e geralmente estão disponíveis no Databricks Runtime 13.0 e acima. O suporte para tabelas Unity Catalog está disponível no Databricks Runtime 12.1 e acima em clusters habilitados Unity Catalog .

  • Para usar o ipywidgets na Databricks, seu navegador deve ser capaz de acessar o domínio databricks-dev-cloudfront.dev.databricks.com.

Por default, ipywidgets ocupa a porta 6062. Com Databricks Runtime 11.2e acima, se você entrar em conflito com integrações de terceiros, como Datadog, poderá alterar a porta usando a seguinte configuração do Spark:

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

Por exemplo:

spark.databricks.driver.ipykernel.commChannelPort 1234

A configuração do Spark deve ser definida quando os clusters são criados.

Uso

O código a seguir cria um histograma com um controle deslizante que pode assumir valores entre 3 e 10. O valor do widget determina o número de compartimentos no histograma. Conforme você move o controle deslizante, o histograma é atualizado imediatamente. Veja o Notebook de exemplo ipywidgets para experimentar.

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)

O código a seguir cria um controle deslizante inteiro que pode assumir valores entre 0 e 10. O valor default é 5. Para acessar o valor do controle deslizante em seu código, use int_slider.value.

import ipywidgets as widgets

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

O código a seguir carrega e exibe um dataframe de amostra de uma tabela no Unity Catalog. O suporte para tabelas Unity Catalog está disponível com Databricks Runtime 12.1e acima em clusters habilitados para 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)

Exemplo Notebook : ipywidgets

O Notebook a seguir mostra alguns exemplos de uso de ipywidgets no Notebook.

exemplo Notebookipywidgets

Abra o bloco de anotações em outra guia

Exemplo Notebook : exemplo avançado de ipywidgets

O Notebook a seguir mostra um exemplo mais complexo usando ipywidgets para criar um mapa interativo.

Exemplo avançado: mapas com ipywidgets

Abra o bloco de anotações em outra guia

Práticas recomendadas para usar ipywidgets e widgets Databricks

Para adicionar controles interativos ao Python Notebook, o Databricks recomenda o uso de ipywidgets. Para Notebook em outros idiomas, use widgets Databricks.

Você pode usar widgets do Databricks para passar parâmetros entre Notebook e para passar parâmetros para o Job; Os ipywidgets não suportam esses cenários.

Quais widgets Jupyter de terceiros têm suporte no Databricks?

Databricks fornece suporte de melhor esforço para widgets de terceiros, como ipyleaflet, bqplot e VegaFusion. No entanto, alguns widgets de terceiros não são suportados. Para obter uma lista dos widgets que foram testados no Databricks Notebook, entre em contato com a equipe da sua account do Databricks.

Limitações

  • Um Notebook usando ipywidgets deve ser anexado a um clusterss em execução.

  • Os estados do widget não são preservados nas sessões Notebook . Você deve executar novamente as células do widget para renderizá-las sempre que anexar o Notebook a um clusters.

  • Os ipywidgets Senha e Controlador não são suportados.

  • Os widgets HTMLMath e de rótulo com expressões LaTeX não são renderizados corretamente. (Por exemplo, widgets.Label(value=r'$$\frac{x+1}{x-1}$$') não renderiza corretamente.)

  • Widgets podem não renderizar corretamente se o Notebook estiver no modo escuro, especialmente widgets coloridos.

  • As saídas do widget não podem ser usadas na view do painel Notebook.

  • O tamanho máximo da carga útil da mensagem para um ipywidget é 5 MB. Os widgets que usam imagens ou dados de texto grandes podem não ser renderizados corretamente.