Dela via


Utveckla kod i Databricks-notebook-filer

Den här sidan beskriver hur du utvecklar kod i Databricks-notebook-filer, inklusive automatisk komplettering, automatisk formatering för Python och SQL, kombinerar Python och SQL i en notebook-fil och spårar versionshistoriken för notebook-filer.

Mer information om avancerade funktioner som är tillgängliga i redigeraren, till exempel automatiskt slutförande, variabelval, stöd för flera markörer och jämförelse sida vid sida, finns i Navigera i Databricks notebook och filredigeraren.

När du använder notebook-filen eller filredigeraren är Databricks Assistant tillgängligt för att hjälpa dig att generera, förklara och felsöka kod. Mer information finns i Använda Databricks Assistant .

Databricks-notebook-filer innehåller också ett inbyggt interaktivt felsökningsprogram för Python-notebook-filer. Se Felsöka notebook-filer.

Modularisera koden

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Med Databricks Runtime 11.3 LTS och senare kan du skapa och hantera källkodsfiler på Azure Databricks-arbetsytan och sedan importera filerna till dina notebook-filer efter behov.

Mer information om hur du arbetar med källkodsfiler finns i Dela kod mellan Databricks-notebook-filer och Arbeta med Python- och R-moduler.

Formatera kodceller

Azure Databricks innehåller verktyg som gör att du snabbt och enkelt kan formatera Python- och SQL-kod i notebook-celler. De här verktygen minskar arbetet med att hålla koden formaterad och bidra till att tillämpa samma kodningsstandarder i dina notebook-filer.

Python black formatter library

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Azure Databricks stöder Python-kodformatering med svart i notebook-filen. Notebook-filen måste vara ansluten till ett kluster med black och tokenize-rt Python-paket installerade.

På Databricks Runtime 11.3 LTS och senare förinstallerar black Azure Databricks och tokenize-rt. Du kan använda formateringen direkt utan att behöva installera dessa bibliotek.

På Databricks Runtime 10.4 LTS och nedan måste du installera black==22.3.0 och tokenize-rt==4.2.1 från PyPI i notebook-filen eller klustret för att kunna använda Python-formatören. Du kan köra följande kommando i anteckningsboken:

%pip install black==22.3.0 tokenize-rt==4.2.1

eller installera biblioteket i klustret.

Mer information om hur du installerar bibliotek finns i Python-miljöhantering.

För filer och notebook-filer i Databricks Git-mappar kan du konfigurera Python-formaterare baserat på pyproject.toml filen. Om du vill använda den här funktionen skapar du en pyproject.toml fil i Git-mappens rotkatalog och konfigurerar den enligt formatet Svart konfiguration. Redigera avsnittet [tool.black] i filen. Konfigurationen tillämpas när du formaterar alla filer och anteckningsböcker i git-mappen.

Formatera Python- och SQL-celler

Du måste ha behörigheten KAN REDIGERA i anteckningsboken för att formatera kod.

Azure Databricks använder biblioteket Gethue/sql-formatter för att formatera SQL och svart kodformaterare för Python.

Du kan utlösa formateraren på följande sätt:

  • Formatera en enskild cell

    • Kortkommando: Tryck på Cmd+Skift+F.
    • Snabbmeny för kommando:
      • Formatera SQL-cell: Välj Formatera SQL i kommandokontextens listruta för en SQL-cell. Det här menyalternativet är endast synligt i SQL Notebook-celler eller i de med språkmagi %sql.
      • Formatera Python-cell: Välj Formatera Python- i listrutan kommandokontext i en Python-cell. Det här menyalternativet är endast synligt i Python Notebook-celler eller i de med språkmagi %python.
    • Notebook Redigera-menyn: Välj en Python- eller SQL-cell och välj sedan Redigera > formatceller.
  • Formatera flera celler

    Markera flera celler och välj sedan Redigera > Formatera cell(er). Om du väljer celler med fler än ett språk formateras endast SQL- och Python-celler. Detta inkluderar de som använder %sql och %python.

  • Formatera alla Python- och SQL-celler i notebook-filen

    Välj Redigera > Notebook-format. Om notebook-filen innehåller mer än ett språk formateras endast SQL- och Python-celler. Detta inkluderar de som använder %sql och %python.

Begränsningar i kodformatering

  • Black tillämpar PEP 8-standarder för 4-blankstegs indrag. Indrag kan inte konfigureras.
  • Formatering av inbäddade Python-strängar i en SQL UDF stöds inte. På samma sätt stöds inte formatering av SQL-strängar i en Python UDF.

Kodspråk i notebook-filer

Ange standardspråk

Standardspråket för notebook-filen visas bredvid notebook-namnet.

Standardspråk för notebook-fil

Om du vill ändra standardspråket klickar du på språkknappen och väljer det nya språket på den nedrullningsbara menyn. För att säkerställa att befintliga kommandon fortsätter att fungera prefixas kommandon för det tidigare standardspråket automatiskt med ett språkmagikommando.

Blanda språk

Som standard använder celler standardspråket för notebook-filen. Du kan åsidosätta standardspråket i en cell genom att klicka på språkknappen och välja ett språk i den nedrullningsbara menyn.

Listrutan Cellspråk

Alternativt kan du använda kommandot %<language> language magic i början av en cell. De magiska kommandon som stöds är: %python, %r, %scalaoch %sql.

Kommentar

När du anropar ett språkmagikommando skickas kommandot till REPL i körningskontexten för notebook-filen. Variabler som definierats på ett språk (och därmed i REPL för det språket) är inte tillgängliga i REPL för ett annat språk. REPL:er kan endast dela tillstånd via externa resurser, till exempel filer i DBFS eller objekt i objektlagring.

Notebook-filer har också stöd för några extra magiska kommandon:

  • %sh: Gör att du kan köra shell-kod i notebook-filen. Om du vill misslyckas med cellen om shell-kommandot har en slutstatus som inte är noll lägger du till alternativet -e . Det här kommandot körs bara på Apache Spark-drivrutinen och inte på arbetarna. Om du vill köra ett gränssnittskommando på alla noder använder du ett init-skript.
  • %fs: Gör att du kan använda dbutils filsystemkommandon. Om du till exempel vill köra kommandot dbutils.fs.ls för att visa filer kan du ange %fs ls i stället. Mer information finns i Arbeta med filer på Azure Databricks.
  • %md: Gör att du kan inkludera olika typer av dokumentation, inklusive text, bilder och matematiska formler och ekvationer. Se nästa avsnitt.

SQL-syntaxmarkering och automatisk komplettering i Python-kommandon

Syntaxmarkering och automatisk komplettering av SQL

Utforska SQL-cellresultat

I en Databricks-notebook-fil görs resultat från en SQL-språkcell automatiskt tillgängliga som en implicit DataFrame tilldelad till variabeln _sqldf. Du kan sedan använda den här variabeln i alla Python- och SQL-celler som du kör efteråt, oavsett deras position i notebook-filen.

Kommentar

Den här funktionen har följande begränsningar:

  • Variabeln _sqldf är inte tillgänglig i notebook-filer som använder ett SQL-lager för beräkning.
  • Användning _sqldf i efterföljande Python-celler stöds i Databricks Runtime 13.3 och senare.
  • Användning _sqldf i efterföljande SQL-celler stöds endast på Databricks Runtime 14.3 och senare.
  • Om frågan använder nyckelorden CACHE TABLE eller UNCACHE TABLEär variabeln _sqldf inte tillgänglig.

Skärmbilden nedan visar hur _sqldf du kan användas i efterföljande Python- och SQL-celler:

dataram för sql-resultat

Viktigt!

Variabeln _sqldf omtilldelas varje gång en SQL-cell körs. Om du vill undvika att förlora referensen till ett specifikt DataFrame-resultat tilldelar du det till ett nytt variabelnamn innan du kör nästa SQL-cell:

Python

new_dataframe_name = _sqldf

SQL

ALTER VIEW _sqldf RENAME TO new_dataframe_name

Köra SQL-celler parallellt

När ett kommando körs och anteckningsboken är kopplad till ett interaktivt kluster kan du köra en SQL-cell samtidigt med det aktuella kommandot. SQL-cellen körs i en ny, parallell session.

Så här kör du en cell parallellt:

  1. Kör cellen.

  2. Klicka på Kör nu. Cellen körs omedelbart.

    Köra en SQL-cell parallellt med den aktuella cellen som körs

Eftersom cellen körs i en ny session stöds inte tillfälliga vyer, UDF:er och implicita Python DataFrame- (_sqldf) för celler som körs parallellt. Dessutom används standardkatalog- och databasnamnen under parallell körning. Om koden refererar till en tabell i en annan katalog eller databas måste du ange tabellnamnet med hjälp av namnområdet på tre nivåer (catalog.schema.table).

Köra SQL-celler på ett SQL-lager

Du kan köra SQL-kommandon i en Databricks-notebook-fil på ett SQL-lager, en typ av beräkning som är optimerad för SQL-analys. Se Använda en notebook-fil med ett SQL-lager.