ipywidgets

Les ipywidgets sont des éléments visuels qui permettent aux utilisateurs de spécifier des valeurs de paramètre dans les cellules du notebook. Vous pouvez utiliser des ipywidgets pour rendre vos notebooks Python Databricks interactifs.

Le package ipywidgets comprend plus de 30 contrôles différents, notamment des contrôles de formulaire tels que des curseurs, des zones de texte et des cases à cocher, ainsi que des contrôles de disposition tels que des onglets, des accordéons et des grilles. À l’aide de ces éléments, vous pouvez créer des interfaces utilisateur graphiques pour interagir avec votre code de notebook.

Notes

Spécifications

les ipywidgets sont disponibles en préversion dans les versions Databricks Runtime 11.0 à Databricks Runtime 12.2 LTS, et sont généralement disponibles dans Databricks Runtime 13.0 et versions ultérieures. La prise en charge des tables Unity Catalog est disponible dans Databricks Runtime 12.1 et versions ultérieures sur les clusters avec Unity Catalog.

Par défaut, ipywidgets occupe le port 6062. Avec Databricks Runtime 11.2 et versions ultérieures, si vous rencontrez des conflits avec des intégrations tierces telles que Datadog, vous pouvez modifier le port à l’aide de la configuration Spark suivante :

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

Par exemple :

spark.databricks.driver.ipykernel.commChannelPort 1234

La configuration Spark doit être définie lors de la création du cluster.

Usage

Le code suivant crée un histogramme avec un curseur qui peut prendre des valeurs comprises entre 3 et 10. La valeur du widget détermine le nombre de classes dans l’histogramme. Lorsque vous déplacez le curseur, l’histogramme est mis à jour immédiatement. Consultez l’exemple de notebook ipywidgets pour essayer.

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)

Le code suivant crée un curseur entier qui peut prendre des valeurs comprises entre 0 et 10. La valeur par défaut est 5. Pour accéder à la valeur du curseur dans votre code, utilisez int_slider.value.

import ipywidgets as widgets

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

Le code suivant charge et affiche un exemple de trame de données à partir d’une table dans Unity Catalog. La prise en charge des tables Unity Catalog est disponible avec Databricks Runtime 12.1 et versions ultérieures sur les clusters 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)

Exemple de notebook : ipywidgets

Le notebook suivant montre quelques exemples d’utilisation d’ipywidgets dans les notebooks.

exemple de notebook ipywidgets

Obtenir le notebook

Exemple de notebook : exemple avancé utilisant ipywidgets

Le notebook suivant montre un exemple plus complexe utilisant ipywidgets pour créer une carte interactive.

Exemple avancé : cartes avec ipywidgets

Obtenir le notebook

Meilleures pratiques concernant l’utilisation des widgets et des ipywidgets Databricks

Pour ajouter des contrôles interactifs aux notebooks Python, Databricks recommande d’utiliser des ipywidgets. Pour les notebooks dans d’autres langages, utilisez des widgets Databricks.

Vous pouvez utiliser des widgets Databricks pour transmettre des paramètres entre des notebooks et transmettre des paramètres à des travaux ; les ipywidgets ne prennent pas en charge ces scénarios.

Quels widgets Jupyter tiers sont pris en charge dans Databricks ?

Databricks offre une prise en charge optimale des widgets tiers, tels que ipyleaflet, bqplotet VegaFusion. Toutefois, certains widgets tiers ne sont pas pris en charge. Pour obtenir la liste des widgets qui ont été testés dans les notebooks Azure Databricks, contactez l’équipe de votre compte Azure Databricks.

Limites

  • Un notebook utilisant des ipywidgets doit être attaché à un cluster en cours d’exécution.
  • Les états du widget ne sont pas conservés entre les sessions de notebook. Vous devez réexécuter des cellules de widget pour les afficher chaque fois que vous attachez le notebook à un cluster.
  • Les ipywidgets du mot de passe et du contrôleur ne sont pas pris en charge.
  • Les widgets HTMLMath et Label avec des expressions LaTeX ne s’affichent pas correctement. (Par exemple, widgets.Label(value=r'$$\frac{x+1}{x-1}$$') ne s’affiche pas correctement.)
  • Les widgets peuvent ne pas s’afficher correctement si le notebook est en mode sombre, en particulier les widgets colorés.
  • Les sorties de widget ne peuvent pas être utilisées dans les affichages du tableau de bord du notebook.
  • La taille maximale de la charge utile du message pour un ipywidget est de 5 Mo. Les widgets qui utilisent des images ou des données de texte volumineuses peuvent ne pas être correctement restitués.