Condividi tramite


Widget di Databricks

I widget di input consentono di aggiungere parameters ai notebook e ai dashboard. È possibile aggiungere un widget dall'interfaccia utente di Databricks o usando l'API del widget. Per aggiungere o modificare un widget, è necessario disporre delle autorizzazioni CAN EDIT per il notebook.

Se si esegue Databricks Runtime 11.3 LTS o versione successiva, è anche possibile usare ipywidgets nei notebook di Databricks.

I widget di Databricks sono ideali per:

  • Costruzione di un notebook o di un dashboard che viene rieseguito con diversi parameters.
  • Esplorazione rapida dei risultati di una singola query con diversi parameters.

Per visualizzare la documentazione per l'API del widget in Scala, Python o R, usare il comando seguente: dbutils.widgets.help(). È anche possibile fare riferimento alla documentazione dell'utilità widgets (dbutils.widgets).

Tipi di widget di Databricks

Esistono 4 tipi di widget:

  • text: immettere un valore in una casella di testo.
  • dropdown: Select un valore proveniente da un list di valuesspecificato.
  • combobox: combinazione di testo ed elenco a discesa. Select un valore da un list fornito o inseriscine uno nella casella di testo.
  • multiselect: Select uno o più values da un list di valuesspecificato.

Gli elenchi a discesa dei widget e le caselle di testo vengono visualizzati immediatamente dopo la barra degli strumenti del notebook. I widget accettano solo stringhe values.

Widget nell'intestazione

Creare widget

Questa sezione illustra come creare widget usando l'interfaccia utente o a livello di codice usando magic SQL o l'API widget per Python, Scala e R.

Creare widget usando l'interfaccia utente

Creare un widget usando l'interfaccia utente del notebook. Se si è connessi a un'istanza di SQL Warehouse, questo è l'unico modo per creare widget.

Select Modifica > Aggiungi widget. Nella finestra di dialogo Aggiungi widget, immettere il nome del widget, l'etichetta facoltativa, il tipo, il tipo di parametro, il possibile valuese il valore predefinito facoltativo. Nella finestra di dialogo, Nome parametro è il nome usato per fare riferimento al widget nel codice. L'Etichetta del widget è un nome facoltativo visualizzato sul widget nell'interfaccia utente.

finestra di dialogo crea widget

Dopo aver creato un widget, è possibile passare il puntatore del mouse sul nome del widget per visualizzare un tooltip che descrive come fare riferimento al widget.

tooltip widget

È possibile usare il menu kebab per modificare o remove il widget:

menu kebab widget

Creare widget con SQL, Python, R e Scala

Creare widget a livello di codice in un notebook collegato a un cluster di calcolo.

L'API widget è progettata per essere coerente in Scala, Python e R. L'API widget in SQL è leggermente diversa, ma equivalente alle altre lingue. È possibile gestire i widget tramite l'interfaccia di riferimento dbutils (Databricks Utilities).

  • Il primo argomento per tutti i tipi di widget è name. Questo è il nome usato per accedere al widget.
  • Il secondo argomento è defaultValue, l'impostazione predefinita del widget.
  • Il terzo argomento per tutti i tipi di widget (ad eccezione di text) è choices, un list di values il widget può assumere. Questo argomento non viene usato per i widget di tipo text.
  • L'ultimo argomento è label, un valore facoltativo per l'etichetta visualizzata nella casella di testo o nell'elenco a discesa del widget.

Python

dbutils.widgets.dropdown("state", "CA", ["CA", "IL", "MI", "NY", "OR", "VA"])

Scala

dbutils.widgets.dropdown("state", "CA", ["CA", "IL", "MI", "NY", "OR", "VA"])

R

dbutils.widgets.dropdown("state", "CA", ["CA", "IL", "MI", "NY", "OR", "VA"])

SQL

CREATE WIDGET DROPDOWN state DEFAULT "CA" CHOICES SELECT * FROM (VALUES ("CA"), ("IL"), ("MI"), ("NY"), ("OR"), ("VA"))

Interagire con il widget dal pannello del widget.

Interagire con il widget

È possibile accedere al valore corrente del widget o get un mapping di tutti i widget:

Python

dbutils.widgets.get("state")

dbutils.widgets.getAll()

Scala

dbutils.widgets.get("state")

dbutils.widgets.getAll()

R

dbutils.widgets.get("state")

SQL

SELECT :state

Infine, puoi eseguire il comando remove su un widget o su tutti i widget in un notebook.

Python

dbutils.widgets.remove("state")

dbutils.widgets.removeAll()

Scala

dbutils.widgets.remove("state")

dbutils.widgets.removeAll()

R

dbutils.widgets.remove("state")

dbutils.widgets.removeAll()

SQL

REMOVE WIDGET state

Se si remove un widget, non è possibile crearne uno nella stessa cella. È necessario creare il widget in un'altra cella.

Usare il widget values in Spark SQL e SQL Warehouse

Il widget di accesso a SPARK SQL e SQL Warehouse values usando marcatori di parametri . Gli indicatori di parametro proteggono il codice dagli attacchi SQL injection separando chiaramente le values fornite dalle istruzioni SQL.

I marcatori di parametro per i widget sono disponibili in Databricks Runtime 15.2 e versioni successive. Le versioni precedenti di Databricks Runtime devono usare la sintassi precedente per DBR 15.1 e versioni precedenti.

È possibile accedere ai widget definiti in qualsiasi linguaggio da Spark SQL durante l'esecuzione interattiva dei notebook. Si consideri il seguente flusso di lavoro:

  1. Creare un widget a discesa di tutti i database nel catalogcorrente:

    dbutils.widgets.dropdown("database", "default", [database[0] for database in spark.catalog.listDatabases()])
    
  2. Creare un widget di testo per specificare manualmente un nome table:

    dbutils.widgets.text("table", "")
    
  3. Eseguire una query SQL per visualizzare tutti i tables in un database (selezionato dall'elenco a discesa list):

    SHOW TABLES IN IDENTIFIER(:database)
    

    Nota

    È necessario usare la clausola SQL IDENTIFIER() per analizzare le stringhe come identificatori di oggetto quali nomi per database, tables, views, funzioni, columnse campi .

  4. Immettere manualmente un nome table nel widget table.

  5. Creare un widget di testo per specificare un valore di filtro:

    dbutils.widgets.text("filter_value", "")
    
  6. Visualizzare in anteprima il contenuto di un table senza dover modificare il contenuto della query:

    SELECT *
    FROM IDENTIFIER(:database || '.' || :table)
    WHERE col == :filter_value
    LIMIT 100
    

Usare il widget values in Databricks Runtime 15.1 e versioni precedenti

Questa sezione descrive come passare i widget di Databricks dalle values alle %sql celle del notebook in Databricks Runtime 15.1 e versioni precedenti.

  1. Creare widget per specificare il testo values.

Python

 dbutils.widgets.text("database", "")
 dbutils.widgets.text("table", "")
 dbutils.widgets.text("filter_value", "100")

Scala

 dbutils.widgets.text("database", "")
 dbutils.widgets.text("table", "")
 dbutils.widgets.text("filter_value", "100")

R

 dbutils.widgets.text("database", "")
 dbutils.widgets.text("table", "")
 dbutils.widgets.text("filter_value", "100")

SQL

 CREATE WIDGET TEXT database DEFAULT ""
 CREATE WIDGET TEXT table DEFAULT ""
 CREATE WIDGET TEXT filter_value DEFAULT "100"
  1. Passa il widget values utilizzando la sintassi ${param}.

    SELECT *
    FROM ${database}.${table}
    WHERE col == ${filter_value}
    LIMIT 100
    

Nota

Per eseguire l'escape del carattere $ in un valore letterale stringa SQL, usare \$. Ad esempio, per esprimere la stringa $1,000, usare "\$1,000". Il carattere $ non può essere preceduto da un carattere di escape per gli identificatori SQL.

Configurare le impostazioni di widget

È possibile configurare il comportamento dei widget quando viene selezionato un nuovo valore, se il pannello del widget viene sempre aggiunto all'inizio del notebook, e modificare il layout dei widget nel notebook.

  1. Fare clic sull'icona Icona a forma di ingranaggio sul lato destro del pannello Widget.

  2. Nella finestra di dialogo Impostazioni pannello del widget popup, scegliere il comportamento di esecuzione del widget.

    Impostazioni del widget

    • Esegui notebook: ogni volta che viene selezionato un nuovo valore, viene rieseguito l'intero notebook.
    • Esegui comandi con accesso: ogni volta che viene selezionato un nuovo valore, vengono rieseguite solo le celle che recuperano il values per quel particolare widget. Questa è l'impostazione predefinita quando si crea un widget. Le celle SQL non vengono rieseguite in questa configurazione.
    • Non eseguire alcuna operazione: ogni volta che viene selezionato un nuovo valore, non viene rieseguita alcuna operazione.
  3. Per associare i widget nella parte superiore del notebook o per posizionare i widget sopra la prima cella, fare clic su icona Aggiungi. L'impostazione viene salvata per utente. Fare di nuovo clic sull'icona del cursore per reset al comportamento predefinito.

  4. Se si dispone dell'autorizzazione CAN MANAGE per i notebook, è possibile configurare il layout del widget facendo clic su Icona di modifica. È possibile personalizzare l'ordine e le dimensioni di ogni widget. Per salvare o eliminare le modifiche, fare clic su accettare e annullare icone.

    Il layout del widget viene salvato con il notebook. Se si modifica il layout del widget dalla configurazione predefinita, i nuovi widget non vengono aggiunti alfabeticamente.

  5. Per reset il layout del widget su un ordine e dimensioni predefiniti, fare clic sull'icona a forma di ingranaggio per aprire la finestra di dialogo Impostazioni pannello widget e quindi fare clic su Reset Layout. Il comando removeAll() non reset il layout del widget.

Widget di Databricks nei dashboard

Quando si crea un dashboard da un notebook con widget di input, tutti i widget vengono visualizzati nella parte superiore. In modalità presentazione, ogni volta che si update il valore di un widget, è possibile fare clic sul pulsante Update per eseguire nuovamente il notebook e update il dashboard con il nuovo values.

Dashboard con widget

Usare i widget di Databricks con %run

Se si eseguire un notebook che contiene widget, il notebook specificato viene eseguito con il valuespredefinito del widget.

Se il notebook è collegato a un cluster (non a SQL Warehouse), è anche possibile passare values ai widget. Ad esempio:

%run /path/to/notebook $X="10" $Y="1"

Questo esempio esegue il notebook specificato e passa 10 al widget X e 1 al widget Y.

Limiti

Per altre informazioni, vedere Limitazioni note dei notebook di Databricks.