Condividi tramite


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, come il completamento automatico, la selezione di variabili, il supporto di più cursori e i confronti affiancati, consultare Esplorare 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. Consulta Notebook di debug.

Modularizzare il codice

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.

Usare l'intelligenza artificiale per ottimizzare Python, PySpark e SQL

Formattare le celle di 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 Black del formattatore 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 preinstalla 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 formatta qualsiasi file e taccuino in quella cartella Git.

Come formattare le celle di Python e di 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: Seleziona Formato SQL nel menu a tendina del contesto dei comandi di una cella SQL. Questa voce di menu è visibile solo nelle celle del notebook SQL o in quelle con una %sqlmagia del linguaggio.
      • Formatta cella Python: selezionare Formato Python nel menu a discesa del comando di una cella Python. Questa voce di menu è visibile solo nelle celle del notebook Python o in quelle con una %pythonfunzionalità magica del linguaggio.
    • Notebook Modifica menu: selezionare una cella Python o SQL e quindi selezionare Modifica formato cella(e) >.
  • Formattare più celle

    Selezionare più celle e quindi selezionare Modifica > Formato Celle. Se si selezionano celle di più 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 > formato 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.

Per personalizzare la formattazione delle query SQL, vedere Istruzioni SQL in formato personalizzato.

Limitazioni della formattazione del codice

  • Black impone gli standard PEP 8 per il rientro di 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 UDF Python non è supportata.

Linguaggi di codice nei notebook

Impostare la lingua predefinita

La lingua predefinita per il notebook viene visualizzata sotto il nome del notebook.

Lingua predefinita del notebook

Per modificare la lingua predefinita, fare clic sul 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 magico della lingua.

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.

Elenco a discesa della lingua delle celle

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 magico del linguaggio, il comando viene inviato al REPL nell'ambito del 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. Il comando viene eseguito solo sul driver Apache Spark e non sui lavoratori. Per eseguire un comando shell in tutti i nodi, usare uno script init.
  • %fs: consente di usare i comandi del file system dbutils. Ad esempio, per eseguire il comando dbutils.fs.ls per elencare i file, è possibile specificare %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

In un notebook di Databricks i risultati di una cella del linguaggio SQL vengono resi automaticamente disponibili come dataframe impliciti assegnati alla variabile _sqldf. È quindi possibile usare questa variabile in qualsiasi cella Python e SQL eseguita in un secondo momento, indipendentemente dalla posizione nel notebook.

Nota

Questa funzionalità presenta le limitazioni seguenti:

  • La _sqldf variabile non è disponibile nei notebook che usano un'istanza SQL Warehouse per il calcolo.
  • L'uso _sqldf nelle celle Python successive è supportato in Databricks Runtime 13.3 e versioni successive.
  • L'uso _sqldf nelle celle SQL successive è supportato solo in Databricks Runtime 14.3 e versioni successive.
  • Se la query usa le parole chiave CACHE TABLE o UNCACHE TABLE, la _sqldf variabile non è disponibile.

Lo screenshot seguente mostra come _sqldf può essere usato nelle celle successive di Python e SQL.

dataframe dei risultati SQL

Importante

La variabile _sqldf viene riassegnata ogni volta che viene eseguita una cella SQL. Per evitare di perdere il riferimento a un risultato specifico del dataframe, assegnarlo a un nuovo nome di variabile prima di eseguire la cella SQL successiva:

Pitone

new_dataframe_name = _sqldf

SQL

ALTER VIEW _sqldf RENAME TO new_dataframe_name

Eseguire celle di codice 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:

  1. Esegui la cella

  2. Cliccare Run now (Esegui adesso). La cella viene eseguita immediatamente.

    Eseguire una cella SQL in parallelo con la cella in esecuzione corrente.

Poiché la cella viene eseguita in una nuova sessione, le viste temporanee, le funzioni definite dall'utente (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 durante l'esecuzione parallela. Se il codice fa riferimento a una tabella in un catalogo o un database diverso, è necessario specificare il nome della tabella usando lo spazio dei nomi a tre livelli (catalog.schema.table).

Esegui celle SQL su un magazzino SQL

È possibile eseguire comandi SQL in un notebook di Databricks in un SQL Warehouse, un tipo di calcolo ottimizzato per l'analisi SQL. Consultare Usare un notebook con un magazzino SQL.

Eseguire il codice in Assistente nel calcolo serverless

È possibile eseguire il codice nell'Assistente su Databricks utilizzando il calcolo serverless, che è il calcolo predefinito su Databricks. Per le pagine in cui è già selezionato un calcolo (ad esempio, notebook o editor SQL), Databricks usa per impostazione predefinita. Per informazioni sui tipi di calcolo, vedere Tipi di calcolo.

Se non si ha accesso all'ambiente di calcolo serverless, è necessario disporre di un'istanza di calcolo disponibile per eseguire il codice nel pannello Assistente.