Sviluppare codice nei notebook di Databricks
Questa pagina descrive come sviluppare codice nei notebook di Databricks, inclusi completamento automatico, formattazione automatica per Python e SQL, combinazione di Python e SQL in un notebook e rilevamento della cronologia versioni del notebook.
Per altre informazioni sulle funzionalità avanzate disponibili con l'editor, ad esempio completamento automatico, selezione di variabili, supporto di più cursori e differenze affiancate, vedere Utilizzare il notebook e l'editor di file di Databricks.
Quando si usa il notebook o l'editor di file, Databricks Assistant è disponibile per facilitare la generazione, la spiegazione e il debug del codice. Per altre informazioni, vedere Utilizzo di Databricks Assistant.
I notebook di Databricks includono anche un debugger interattivo predefinito per i notebook Python. Vedere Notebook per le demo.
Ottenere assistenza per la scrittura del codice da Databricks Assistant
Databricks Assistant è un assistente IA sensibile al contesto con cui è possibile interagire usando un'interfaccia di conversazione, il che rende più produttivi all'interno di Databricks. È possibile descrivere l'attività in inglese e consentire all'assistente di generare codice Python o query SQL, spiegare il codice complesso e correggere automaticamente gli errori. Assistant usa i metadati di Unity Catalog per comprendere le tabelle, le colonne, le descrizioni e gli asset di dati più diffusi nell'azienda per fornire risposte personalizzate.
Databricks Assistant può essere utile per le seguenti attività:
- Generare il codice.
- Eseguire il debug del codice, inclusa l'identificazione e la suggerimento di correzioni per gli errori.
- Trasformazione e ottimizzazione del codice.
- Spiegare il modello.
- Consente di trovare le informazioni pertinenti nella documentazione di Azure Databricks.
Per informazioni sull'uso di Databricks Assistant per rendere più efficiente la scrittura del codice, vedere Utilizzo di Databricks Assistant. Per informazioni generali su Databricks Assistant, consultare Funzionalità basate su DatabricksIQ.
Accedere al notebook per la modifica
Per aprire un notebook, usare la Funzione Search dell'area di lavoro o il visualizzatore area di lavoro per spostarsi sul notebook e cliccare il nome o sull'icona del notebook.
Esplorare i dati
Usare il browser dello schema per esplorare gli oggetti di Unity Catalog disponibili per il notebook. Cliccare sul lato sinistro del notebook per aprire il browser dello schema.
Il pulsante Per l'utente visualizza solo gli oggetti usati nella sessione corrente o contrassegnati in precedenza come Preferiti.
Quando si digita del testo nella finestra Filtro, la visualizzazione cambia e visualizza solo gli oggetti che contengono il testo digitato. Vengono visualizzati solo gli oggetti attualmente aperti o che sono stati aperti nella sessione corrente. La finestra Filtro non esegue una ricerca completa dei cataloghi, degli schemi, delle tabelle e dei volumi disponibili per il notebook.
Per aprire il menu kebab, posizionare il cursore sul nome dell'oggetto, come illustrato di seguito:
Se l'oggetto è una tabella, è possibile effettuare le operazioni seguenti:
- Creare ed eseguire automaticamente una cella per visualizzare un'anteprima dei dati nella tabella. Selezionare Anteprima in una nuova cella nel menu kebab della tabella.
- Visualizzare un catalogo, uno schema o una tabella in Esplora cataloghi. Selezionare Apri in Esplora cataloghi nel menu kebab. Si apre una nuova scheda che mostra l'oggetto selezionato.
- Ottenere il percorso di un catalogo, uno schema o una tabella. Selezionare Copia percorso... nel menu kebab dell'oggetto.
- Aggiungere una tabella ai Preferiti. Selezionare Aggiungi a Preferiti nel menu kebab della tabella.
Se l'oggetto è un catalogo, uno schema o un volume, è possibile copiare il percorso dell'oggetto o aprirlo in Esplora cataloghi.
Per inserire un nome di tabella o di colonna direttamente in una cella:
- Cliccare con il cursore nella cella nella posizione in cui si desidera immettere il nome.
- Spostare il cursore sul nome tabella o sul nome colonna nel browser dello schema.
- Cliccare la doppia freccia visualizzata a destra del nome dell'oggetto.
Scelte rapide da tastiera
Per visualizzare i tasti di scelta rapida, selezionare Aiuto > Tasti di scelta rapida. Le scelte rapide da tastiera disponibili dipendono dal fatto che il cursore si trova in una cella di codice (modalità di modifica) o meno (modalità di comando).
Riquadro comandi
È possibile eseguire rapidamente azioni nel notebook usando il riquadro comandi. Per aprire un pannello di azioni del notebook, cliccare nell'angolo in basso a destra dell'area di lavoro oppure usare il collegamento Cmd + MAIUSC + P in MacOS o CTRL + MAIUSC + P in Windows.
Ricerca e sostituzione di testo
Per trovare e sostituire il testo all'interno di un notebook, selezionare Modifica > Trova e sostituisci. La corrispondenza corrente viene evidenziata in arancione e tutte le altre corrispondenze sono evidenziate in giallo.
Per sostituire la corrispondenza corrente, cliccare Sostituisci. Per sostituire tutte le corrispondenze nel notebook, cliccare Sostituisci tutto.
Per spostarsi tra corrispondenze, cliccare i pulsanti Prec e Avanti. È anche possibile premere MAIUSC+INVIO e INVIO per passare rispettivamente alle corrispondenze precedente e successiva.
Per chiudere lo strumento trova e sostituisci, cliccare o premere ESC.
Eseguire le celle selezionate
È possibile eseguire una singola cella o una raccolta di celle. Per selezionare una singola cella, cliccare in un punto qualsiasi della cella. Per selezionare più celle, tenere premuto il tasto Command
in MacOS o il tasto Ctrl
in Windows e cliccare nella cella fuori dall'area di testo, come illustrato nella schermata.
Per eseguire l'opzione selezionata Il comportamento di questo comando dipende dal cluster a cui è collegato il notebook.
- In un cluster che esegue Databricks Runtime 13.3 LTS o versione precedente, le celle selezionate vengono eseguite singolarmente. Se si verifica un errore in una cella, l'esecuzione continua con le celle successive.
- In un cluster che esegue Databricks Runtime 14.0 o versione successiva, o in un'istanza di SQL Warehouse, le celle selezionate vengono eseguite come batch. Qualsiasi errore interrompa l'esecuzione, non sarà possibile annullare l'esecuzione di singole celle. È possibile usare il pulsante Interrupt per arrestare l'esecuzione di tutte le celle.
Modularizzare il codice
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Con Databricks Runtime 11.3 LTS e versioni successive, è possibile creare e gestire file di codice sorgente nell'area di lavoro di Azure Databricks e quindi importarli nei notebook in base alle esigenze.
Per altre informazioni sull'uso dei file di codice sorgente, vedere Condividere codice tra notebook di Databricks e Lavorare con i moduli Python e R.
Eseguire il testo selezionato
È possibile evidenziare il codice o le istruzioni SQL in una cella del notebook ed eseguire solo tale selezione. Ciò è utile se si desidera eseguire rapidamente l'iterazione su codice e query.
Evidenziare le righe da eseguire.
Selezionare Esegui > Esegui testo selezionato oppure usare il tasto di scelta rapida
Ctrl
+Shift
+Enter
. Se non è evidenziato alcun testo, Esegui testo selezionato esegue la riga corrente.
Se si usa una combinazione di linguaggi in una cella, è necessario includere la riga %<language>
nella selezione.
Esegui testo selezionato esegue anche codice compresso, se presente nella selezione evidenziata.
Sono supportati comandi di cella speciali, ad esempio %run
, %pip
e %sh
.
Non è possibile usare Esegui testo selezionato nelle celle con più schede di output, ovvero celle in cui è stato definito un profilo dati o una visualizzazione.
Formattare le celle del codice
Azure Databricks offre degli strumenti che consentono di formattare codice Python e SQL nelle celle del notebook in modo rapido e semplice. Questi strumenti riducono lo sforzo necessario per mantenere formattato il codice e consentono di applicare gli stessi standard di codifica nei notebook.
Libreria del formattatore Black di Python
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Azure Databricks supporta la formattazione del codice Python usando black all'interno del notebook. Il notebook deve essere collegato a un cluster con i pacchetti Python black
e tokenize-rt
installati.
In Databricks Runtime 11.3 LTS e versioni successive, Azure Databricks peinstalla black
e tokenize-rt
. È possibile usare il formattatore direttamente senza dover installare queste librerie.
In Databricks Runtime 10.4 LTS e versioni precedenti, è necessario installare black==22.3.0
e tokenize-rt==4.2.1
da PyPI nel notebook o nel cluster per usare il formattatore Python. Eseguire il comando seguente nel notebook:
%pip install black==22.3.0 tokenize-rt==4.2.1
oppure installare la libreria nel cluster.
Per altre informazioni sull'installazione delle librerie, vedere Gestione degli ambienti Python.
Per i file e i notebook nelle cartelle Git di Databricks, è possibile configurare il formattatore Python in base al file pyproject.toml
. Per usare questa funzionalità, creare un file pyproject.toml
nella directory radice della cartella Git e configurarlo in base al formato di configurazione Black. Modificare la sezione [tool.black] nel file. La configurazione viene applicata quando si formattano file e notebook in tale cartella Git.
Come formattare le celle Python e SQL
È necessario disporre dell'autorizzazione CAN EDIT nel notebook per formattare il codice.
Azure Databricks usa la libreria Gethue/sql-formatter per formattare SQL e il formattatore di codice black per Python.
È possibile avviare un formattatore nei seguenti modi:
Formattare una singola cella
- Tasto di scelta rapida: premere CMD+MAIUSC+F.
- Menu contestuale dei comandi:
- Formato cella SQL: selezionare Formatta SQL nel menu a discesa contestuale del comando di una cella SQL. Questa voce di menu è visibile solo nelle celle del notebook SQL o in quelle con un
%sql
magic del linguaggio. - Formattare la cella Python: selezionare Formatta Python nel menu a discesa contestuale del comando di una cella Python. Questa voce di menu è visibile solo nelle celle del notebook Python o in quelle con un
%python
magic del linguaggio.
- Formato cella SQL: selezionare Formatta SQL nel menu a discesa contestuale del comando di una cella SQL. Questa voce di menu è visibile solo nelle celle del notebook SQL o in quelle con un
- Menu Modifica del notebook: selezionare una cella Python o SQL e selezionare quindi Modifica > Formato celle.
Formattare più celle
Selezionare più celle e quindi selezionare Modifica > Formatta celle. Se si selezionano celle di più di un linguaggio, vengono formattate solo le celle SQL e Python. Sono inclusi quelli che usano
%sql
e%python
.Formattare tutte le celle Python e SQL nel notebook
Selezionare Modifica > Formatta notebook. Se il notebook contiene più di un linguaggio, vengono formattate solo le celle SQL e Python. Sono inclusi quelli che usano
%sql
e%python
.
Limitazioni della formattazione del codice
- Black applica gli standard PEP 8 per il rientro a 4 spazi. Il rientro non è configurabile.
- La formattazione di stringhe Python incorporate all'interno di una UDF SQL non è supportata. Analogamente, la formattazione di stringhe SQL all'interno di una funzione definita dall'utente Python non è supportata.
Cronologia versioni
I notebook di Azure Databricks mantengono una cronologia delle versioni dei notebook, consentendo di visualizzare e ripristinare i precedenti snapshot del notebook. È possibile eseguire le seguenti azioni nelle versioni: aggiungere commenti, ripristinare ed eliminare versioni e cancellare la cronologia versioni.
È anche possibile sincronizzare il lavoro in Databricks con un repository Git remoto.
Per accedere alle versioni del notebook, cliccare nella barra laterale destra. Viene visualizzata la cronologia versioni del notebook. È anche possibile selezionare File > Cronologia versioni.
Aggiungi un commento
Per aggiungere un commento all'ultima versione:
Cliccare la versione.
Cliccare Salva ora.
Nella finestra di dialogo Salva versione notebook, immettere un commento.
Cliccare Salva. La versione del notebook viene salvata con il commento immesso.
Ripristinare una versione
Per ripristinare una versione:
Cliccare la versione.
Cliccare Ripristina questa versione.
Cliccare Conferma. La versione selezionata diventa l'ultima versione del notebook.
Eliminare una versione
Per eliminare una voce di versione:
Cliccare la versione.
Cliccare l'icona del cestino.
Cliccare Sì, cancella. La versione selezionata viene eliminata dalla cronologia.
Cancellare la cronologia versioni
Impossibile recuperare la cronologia versioni dopo che è stata cancellata.
Per cancellare la cronologia versioni di un notebook:
- Selezionare File > Cancella cronologia versioni.
- Cliccare Sì, cancella. La cronologia versioni del notebook viene cancellata.
Linguaggi di codice nei notebook
Imposta la lingua predefinita
La lingua predefinita del notebook viene visualizzata accanto al nome del notebook.
Per modificare la lingua predefinita, cliccare il pulsante lingua e selezionare la nuova lingua dal menu a discesa. Per assicurarsi che i comandi esistenti continuino a funzionare, i comandi della lingua predefinita precedente vengono automaticamente preceduti da un comando magic del linguaggio.
Combinazioni di lingue
Per impostazione predefinita, le celle usano la lingua predefinita del notebook. È possibile eseguire la sostituzione della lingua predefinita in una cella cliccando sul pulsante lingua e selezionando una lingua dal menu a discesa.
In alternativa, è possibile usare il comando magic del linguaggio %<language>
all'inizio di una cella. I comandi magic supportati sono: %python
, %r
, %scala
e %sql
.
Nota
Quando si richiama un comando magic del linguaggio, il comando viene inviato a REPL nel contesto di esecuzione del notebook. Le variabili definite in un linguaggio (e quindi nel REPL di tale lingua) non sono disponibili nel REPL di un altro linguaggio. I REPL possono condividere lo stato solo tramite risorse esterne, come file in DBFS od oggetti nell'archiviazione oggetti.
I notebook supportano anche alcuni comandi magic ausiliari:
%sh
: consente di eseguire il codice della shell nel notebook. Per interrompere la cella se il comando shell ha uno stato di uscita diverso da zero, aggiungere l'opzione-e
. Questo comando viene eseguito solo sul driver Apache Spark e non sui ruoli di lavoro. Per eseguire un comando shell in tutti i nodi, usare uno script init.%fs
: consente di usare i comandi del file systemdbutils
. Ad esempio, per eseguire il comandodbutils.fs.ls
per elencare i file, è possibile specificare invece%fs ls
. Per altre informazioni, vedere Usare i file in Azure Databricks.%md
: consente di includere vari tipi di documentazione, tra cui testo, immagini, formule matematiche ed equazioni. Vedi la sezione successiva.
Evidenziazione della sintassi SQL e completamento automatico nei comandi Python
L'evidenziazione della sintassi e il completamento automatico di SQL sono disponibili quando si usa SQL all'interno di un comando Python, ad esempio in un comando spark.sql
.
Esplorare i risultati delle celle SQL nei notebook Python usando Python
È bene caricare i dati usando SQL ed esplorarli usando Python. In un notebook Python di Databricks i risultati della tabella di una cella del linguaggio SQL vengono resi automaticamente disponibili come DataFrame Python assegnato alla variabile _sqldf
.
In Databricks Runtime 13.3 LTS e versioni successive è anche possibile accedere al risultato del DataFrame usando il sistema di memorizzazione nella cache di output di IPython. Il contatore del prompt viene visualizzato nel messaggio di output visualizzato in fondo ai risultati della cella. Per l'esempio illustrato, si fa riferimento al risultato come a Out[2]
.
Nota
La variabile
_sqldf
può essere riassegnata ogni volta che viene eseguita una cella%sql
. Per evitare di perdere il riferimento al risultato del DataFrame, assegnarlo a un nuovo nome di variabile prima di eseguire la cella%sql
successiva:new_dataframe_name = _sqldf
Se la query usa un widget per la parametrizzazione, i risultati non sono disponibili come DataFrame Python.
Se la query usa le parole chiave
CACHE TABLE
oUNCACHE TABLE
, i risultati non sono disponibili come DataFrame Python.
La schermata seguente mostra un esempio:
Eseguire celle SQL in parallelo
Mentre un comando è in esecuzione e il notebook è collegato a un cluster interattivo, è possibile eseguire una cella SQL contemporaneamente con il comando corrente. La cella SQL viene eseguita in una nuova sessione parallela.
Per eseguire una cella in parallelo:
Cliccare Run now (Esegui adesso). La cella viene eseguita immediatamente.
Poiché la cella viene eseguita in una nuova sessione, le visualizzazioni temporanee, le UDF e il DataFrame Python implicito (_sqldf
) non sono supportati per le celle eseguite in parallelo. Inoltre, i nomi predefiniti del catalogo e del database vengono usati nel corso dell'esecuzione parallela. Se il codice fa riferimento a una tabella in un diverso catalogo o database, è necessario specificare il nome tabella usando lo spazio dei nomi a tre livelli (catalog
.schema
.table
).
Eseguire celle SQL in un'istanza di SQL Warehouse
È possibile eseguire comandi SQL in un notebook di Databricks in un SQL Warehouse, un tipo di calcolo ottimizzato per l'analisi SQL. Vedere Usare un notebook con un warehouse SQL.
Visualizzare immagini
Azure Databricks supporta la visualizzazione delle immagini nelle celle Markdown. È possibile visualizzare immagini archiviate nell'area di lavoro, nei volumi o nell'archivio file.
Visualizzare le immagini archiviate nell'area di lavoro
È possibile usare percorsi assoluti o percorsi relativi per visualizzare le immagini archiviate nell'area di lavoro. Per visualizzare un'immagine archiviata nell'area di lavoro, usare la seguente sintassi:
%md
![my_test_image](/Workspace/absolute/path/to/image.png)
![my_test_image](./relative/path/to/image.png)
Visualizzare le immagini archiviate nei volumi
È possibile usare percorsi assoluti per visualizzare le immagini archiviate nei volumi. Per visualizzare un'immagine archiviata in Volumi, usare la seguente sintassi:
%md
![my_test_image](/Volumes/absolute/path/to/image.png)
Visualizzare le immagini archiviate nell'archivio file
Per visualizzare le immagini archiviate nell'archivio file, usare la seguente sintassi:
%md
![my_test_image](files/image.png)
Se, ad esempio, il file di immagine del logo Databricks è nell'archivio file:
dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png
Quando si include il codice seguente in una cella Markdown:
viene eseguito il rendering dell'immagine nella cella:
Trascinare e rilasciare immagini
È possibile trascinare e rilasciare immagini dal file system locale nelle celle Markdown. L'immagine viene caricata nella directory dell'area di lavoro corrente e visualizzata nella cella.
Visualizzare equazioni matematiche
I notebook supportano KaTeX per la visualizzazione di formule ed equazioni matematiche. ad esempio:
%md
\\(c = \\pm\\sqrt{a^2 + b^2} \\)
\\(A{_i}{_j}=B{_i}{_j}\\)
$$c = \\pm\\sqrt{a^2 + b^2}$$
\\[A{_i}{_j}=B{_i}{_j}\\]
sottoposta a rendering come:
e
%md
\\( f(\beta)= -Y_t^T X_t \beta + \sum log( 1+{e}^{X_t\bullet\beta}) + \frac{1}{2}\delta^t S_t^{-1}\delta\\)
where \\(\delta=(\beta - \mu_{t-1})\\)
sottoposta a rendering come:
Includi HTML
È possibile includere HTML in un notebook usando la funzione displayHTML
. Per un esempio di come eseguire questa operazione, vedere HTML, D3 e SVG nei notebook.
Nota
L'iframe displayHTML
viene gestito dal dominio databricksusercontent.com
e la sandbox dell'iframe include l'attributo allow-same-origin
. databricksusercontent.com
deve essere accessibile dal browser. Se è attualmente bloccato dalla rete aziendale, deve essere aggiunto a un elenco di elementi consentiti.
Collegamento ad altri notebook
È possibile collegarsi ad altri notebook o cartelle nelle celle Markdown usando percorsi relativi. Specificare l'attributo href
di un tag di ancoraggio come percorso relativo, iniziando con un $
e quindi seguire lo stesso criterio dei file system Unix:
%md
<a href="$./myNotebook">Link to notebook in same folder as current notebook</a>
<a href="$../myFolder">Link to folder in parent folder of current notebook</a>
<a href="$./myFolder2/myNotebook2">Link to nested notebook</a>