Compartilhar via


ipywidgets

ipywidgets são elementos visuais que permitem que os usuários especifiquem valores de parâmetro em células de notebook. Você pode usar ipywidgets para que os notebooks Python do Databricks fiquem interativos.

O pacote ipywidgets oferece mais de 30 controles diferentes, incluindo controles de formulário, como controles deslizantes, caixas de texto e caixas de seleção, além de controles de layout, como guias, acordeões e grades. Usando esses elementos, você pode criar interfaces gráficas do usuário para interagirem com o código do notebook.

Observação

Requisitos

  • Os ipywidgets estão disponíveis em versão prévia no Databricks Runtime 11.0 por meio do Databricks Runtime 12.2 LTS e em disponibilidade geral no Databricks Runtime 13.0 e superior. O suporte para tabelas do Catálogo do Unity está disponível no Databricks Runtime 12.2 LTS e versões superiores em clusters habilitados para Catálogo do Unity.
  • Para usar os ipywidgets no Databricks, seu navegador deve poder acessar o domínio databricks-dev-cloudfront.dev.databricks.com.

Por padrão, ipywidgets ocupa a porta 6062. Com o Databricks Runtime 11.3 LTS e versões superiores, se você tiver conflitos com integrações de terceiros, como o 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 deverá ser definida quando o cluster for criado.

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. Confira o notebook de exemplo ipywidgets para experimentar essa opção.

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 de inteiro que pode assumir valores entre 0 e 10. O valor padrão é 5. Para acessar o valor do controle deslizante no 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 mostra um exemplo de dataframe de uma tabela no Catálogo do Unity. O suporte para tabelas do Catálogo do Unity está disponível com o Databricks Runtime 12.1 e superior nos clusters habilitados para o Catálogo do Unity.

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 de notebook: ipywidgets

O notebook a seguir mostra alguns exemplos de como usar ipywidgets em notebooks.

Notebook de exemplo de ipywidgets

Obter notebook

Exemplo de 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

Obter notebook

Boas práticas para o uso de ipywidgets e widgets do Databricks

Para adicionar controles interativos aos notebooks Python, a Databricks recomenda o uso de ipywidgets. Para notebooks em outras linguagens, use widgets do Databricks.

Você pode usar widgets do Databricks para passar parâmetros entre notebooks e passar parâmetros para trabalhos. Os ipywidgets não dão suporte a esses cenários.

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

O Databricks oferece suporte de melhor esforço para widgets de terceiros, como ipyleaflet, bqplot e VegaFusion. No entanto, não há suporte para alguns widgets de terceiros. Para obter uma lista dos widgets que foram testados nos notebooks do Azure Databricks, entre em contato com a equipe da sua conta do Azure Databricks.

Limitações

  • Um notebook que usa ipywidgets precisa ser anexado a um cluster em execução.
  • Os estados do Widget não são preservados entre as sessões do notebook. Você precisará executar novamente as células do widget para renderizá-las sempre que anexar o notebook a um cluster.
  • Não há suporte para ipywidgets de senha e controlador.
  • Os widgets HTMLMath e Label com expressões LaTeX não são renderizados corretamente. (Por exemplo, widgets.Label(value=r'$$\frac{x+1}{x-1}$$') não é renderizado corretamente.)
  • Os widgets podem não ser renderizados corretamente quando o notebook está no modo escuro, principalmente os widgets coloridos.
  • As saídas de widget não podem ser usadas nas exibição de painel do notebook.
  • O tamanho máximo do conteúdo da mensagem de um ipywidget é de 5 MB. Widgets que usam imagens ou dados de texto grandes podem não ser renderizados corretamente.