Delen via


Code ontwikkelen in Databricks-notebooks

Op deze pagina wordt beschreven hoe u code ontwikkelt in Databricks-notebooks, waaronder automatisch aanvullen, automatische opmaak voor Python en SQL, het combineren van Python en SQL in een notebook en het bijhouden van de versiegeschiedenis van het notebook.

Zie Het Databricks-notebook en de bestandseditor gebruiken voor meer informatie over geavanceerde functionaliteit die beschikbaar is in de editor, zoals automatisch aanvullen, variabele selectie, ondersteuning voor meerdere cursors en side-by-side diffs.

Wanneer u het notebook of de bestandseditor gebruikt, is Databricks Assistant beschikbaar om u te helpen code te genereren, uit te leggen en fouten op te sporen. Zie Databricks Assistant gebruiken voor meer informatie.

Databricks-notebooks bevatten ook een ingebouwd interactief foutopsporingsprogramma voor Python-notebooks. Zie Notebooks voor foutopsporing.

Hulp bij coderen van Databricks Assistant

Databricks Assistant is een contextbewuste AI-assistent waarmee u kunt communiceren met behulp van een conversationele interface, waardoor u productiever bent in Databricks. U kunt uw taak in het Engels beschrijven en de assistent Python-code of SQL-query's laten genereren, complexe code uitleggen en fouten automatisch oplossen. De assistent gebruikt metagegevens van Unity Catalog om inzicht te krijgen in uw tabellen, kolommen, beschrijvingen en populaire gegevensassets in uw bedrijf om persoonlijke antwoorden te bieden.

Databricks Assistant kan u helpen met de volgende taken:

  • Code genereren.
  • Fouten opsporen in code, inclusief het identificeren en voorstellen van oplossingen voor fouten.
  • Code transformeren en optimaliseren.
  • Code uitleggen.
  • Help u relevante informatie te vinden in de documentatie van Azure Databricks.

Zie Databricks Assistant gebruiken voor informatie over het gebruik van Databricks Assistant om u te helpen efficiënter code te coden. Zie DatabricksIQ-functies voor algemene informatie over DatabricksIQ-functies.

Access-notitieblok voor bewerken

Als u een notitieblok wilt openen, gebruikt u de zoekfunctie van de werkruimte of gebruikt u de werkruimtebrowser om naar het notitieblok te navigeren en op de naam of het pictogram van het notitieblok te klikken.

Door gegevens bladeren

Gebruik de schemabrowser om Unity Catalog-objecten te verkennen die beschikbaar zijn voor het notebook. Klik notitieblokgegevenspictogram aan de linkerkant van het notitieblok om de schemabrowser te openen.

Met de knop Voor u worden alleen de objecten weergegeven die u in de huidige sessie hebt gebruikt of die eerder zijn gemarkeerd als favoriet.

Terwijl u tekst typt in het filtervak, wordt de weergave gewijzigd zodat alleen de objecten worden weergegeven die de tekst bevatten die u typt. Alleen objecten die momenteel zijn geopend of die zijn geopend in de huidige sessie, worden weergegeven. Het filtervak voert geen volledige zoekopdracht uit van de catalogi, schema's, tabellen en volumes die beschikbaar zijn voor het notebook.

Beweeg de cursor over de naam van het object, zoals wordt weergegeven om het menu Voor het openen van het Menu VanGelezen resourcemenu te plaatsen:

het menu voor het weergeven van een schema in de schemabrowser

Als het object een tabel is, kunt u het volgende doen:

  • Automatisch een cel maken en uitvoeren om een voorbeeld van de gegevens in de tabel weer te geven. Selecteer Voorbeeld in een nieuwe cel in het menu voor de tabel.
  • Een catalogus, schema of tabel weergeven in Catalog Explorer. Selecteer Openen in Catalog Explorer in het menu van Outlook. Er wordt een nieuw tabblad geopend met het geselecteerde object.
  • Haal het pad naar een catalogus, schema of tabel op. Selecteer Kopiëren... pad van het menu voor het object.
  • Voeg een tabel toe aan Favorieten. Selecteer Toevoegen aan favorieten in het menu voor de tabel.

Als het object een catalogus, schema of volume is, kunt u het pad van het object kopiëren of openen in Catalog Explorer.

Een tabel- of kolomnaam rechtstreeks in een cel invoegen:

  1. Klik op de cursor in de cel op de locatie waar u de naam wilt invoeren.
  2. Verplaats de cursor over de tabelnaam of kolomnaam in de schemabrowser.
  3. Klik op de dubbele pijl dubbele pijlrechts van de naam van het object.

Sneltoetsen

Als u sneltoetsen wilt weergeven, selecteert u Sneltoetsen voor Help>. De beschikbare sneltoetsen zijn afhankelijk van of de cursor zich in een codecel bevindt (bewerkingsmodus) of niet (opdrachtmodus).

Opdrachtpalet

U kunt snel acties uitvoeren in het notebook met behulp van het opdrachtenpalet. Als u een deelvenster met notitieblokacties wilt openen, klikt u _ in de rechterbenedenhoek van de werkruimte of gebruikt u de snelkoppeling Cmd + Shift + P in MacOS of Ctrl + Shift + P in Windows.

opdrachtpalet

Tekst zoeken en vervangen

Als u tekst in een notitieblok wilt zoeken en vervangen, selecteert u Zoeken en vervangen bewerken>. De huidige overeenkomst is oranje gemarkeerd en alle andere overeenkomsten zijn geel gemarkeerd.

Als u de huidige overeenkomst wilt vervangen, klikt u op Vervangen. Als u alle overeenkomsten in het notitieblok wilt vervangen, klikt u op Alles vervangen.

Als u wilt schakelen tussen overeenkomsten, klikt u op de knoppen Vorige en Volgende . U kunt ook op Shift+Enter en Enter drukken om respectievelijk naar de vorige en volgende overeenkomsten te gaan.

Als u het hulpmiddel Zoeken en vervangen wilt sluiten, klikt of drukt u op Pictogram Verwijderen Esc.

Geselecteerde cellen uitvoeren

U kunt één cel of een verzameling cellen uitvoeren. Als u één cel wilt selecteren, klikt u ergens in de cel. Als u meerdere cellen wilt selecteren, houdt u de Command toets in MacOS of de Ctrl toets in Windows ingedrukt en klikt u in de cel buiten het tekstgebied, zoals wordt weergegeven in de schermafbeelding.

meerdere cellen selecteren

Als u het geselecteerde gedrag van deze opdracht wilt uitvoeren, is afhankelijk van het cluster waaraan het notebook is gekoppeld.

  • Op een cluster met Databricks Runtime 13.3 LTS of lager worden geselecteerde cellen afzonderlijk uitgevoerd. Als er een fout optreedt in een cel, wordt de uitvoering voortgezet met de volgende cellen.
  • Op een cluster met Databricks Runtime 14.0 of hoger, of in een SQL-warehouse, worden geselecteerde cellen uitgevoerd als batch. Elke fout stopt de uitvoering en u kunt de uitvoering van afzonderlijke cellen niet annuleren. U kunt de knop Onderbreken gebruiken om de uitvoering van alle cellen te stoppen.

Uw code modulariseren

Belangrijk

Deze functie is beschikbaar als openbare preview.

Met Databricks Runtime 11.3 LTS en hoger kunt u broncodebestanden maken en beheren in de Azure Databricks-werkruimte en deze bestanden vervolgens indien nodig importeren in uw notebooks.

Zie Code delen tussen Databricks-notebooks en werken met Python- en R-modules voor meer informatie over het werken met broncodebestanden.

Geselecteerde tekst uitvoeren

U kunt code of SQL-instructies markeren in een notebookcel en alleen die selectie uitvoeren. Dit is handig als u code en query's snel wilt herhalen.

  1. Markeer de regels die u wilt uitvoeren.

  2. Selecteer Geselecteerde tekst Uitvoeren uitvoeren of gebruik de sneltoets+CtrlShift+Enter.> Als er geen tekst is gemarkeerd, voert Geselecteerde tekst uitvoeren de huidige regel uit.

    geselecteerde regels uitvoeren

Als u gemengde talen in een cel gebruikt, moet u de %<language> regel in de selectie opnemen.

Geselecteerde tekst uitvoeren voert ook samengevouwen code uit, indien aanwezig in de gemarkeerde selectie.

Speciale celopdrachten zoals %run, %pipen %sh worden ondersteund.

U kunt geselecteerde tekst uitvoeren niet gebruiken op cellen met meerdere uitvoertabbladen (cellen waarin u een gegevensprofiel of visualisatie hebt gedefinieerd).

Codecellen opmaken

Azure Databricks biedt hulpprogramma's waarmee u Python- en SQL-code in notebookcellen snel en eenvoudig kunt opmaken. Deze hulpprogramma's verminderen de moeite om uw code geformatteerd te houden en om dezelfde coderingsstandaarden af te dwingen in uw notebooks.

Zwarte indelingsbibliotheek voor Python

Belangrijk

Deze functie is beschikbaar als openbare preview.

Azure Databricks biedt ondersteuning voor python-codeopmaak met zwart in het notebook. Het notebook moet zijn gekoppeld aan een cluster en black tokenize-rt Python-pakketten zijn geïnstalleerd.

Op Databricks Runtime 11.3 LTS en hoger installeert black Azure Databricks vooraf en tokenize-rt. U kunt de formatter rechtstreeks gebruiken zonder deze bibliotheken te hoeven installeren.

Op Databricks Runtime 10.4 LTS en hieronder moet u PyPI op uw notebook of cluster installeren black==22.3.0 en tokenize-rt==4.2.1 gebruiken om de Python-formatter te gebruiken. U kunt de volgende opdracht uitvoeren in uw notebook:

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

of installeer de bibliotheek op uw cluster.

Zie Python-omgevingsbeheer voor meer informatie over het installeren van bibliotheken.

Voor bestanden en notebooks in Databricks Git-mappen kunt u de Python-indeling configureren op basis van het pyproject.toml bestand. Als u deze functie wilt gebruiken, maakt u een pyproject.toml bestand in de hoofdmap van de Git-map en configureert u het volgens de black-configuratie-indeling. Bewerk de sectie [tool.black] in het bestand. De configuratie wordt toegepast wanneer u een bestand en notitieblok in die Git-map opmaken.

Python- en SQL-cellen opmaken

U moet de machtiging CAN EDIT voor het notitieblok hebben om code op te maken.

Azure Databricks maakt gebruik van de Gethue-/sql-formatter-bibliotheek om SQL en de zwarte code-formatter voor Python op te maken.

U kunt de formatter op de volgende manieren activeren:

  • Een enkele cel opmaken

    • Sneltoets: Druk op Cmd+Shift+F.
    • Contextmenu opdracht:
      • SQL-cel opmaken: Selecteer SQL opmaken in het vervolgkeuzemenu van de opdrachtcontext van een SQL-cel. Dit menu-item is alleen zichtbaar in SQL Notebook-cellen of cellen met een %sql taalmagie.
      • Python-cel opmaken: Selecteer Python opmaken in het vervolgkeuzemenu van de opdrachtcontext van een Python-cel. Dit menu-item is alleen zichtbaar in Python-notebookcellen of cellen met een %python taalmagie.
    • Menu Notitieblok bewerken: Selecteer een Python- of SQL-cel en selecteer vervolgens Cel(en) bewerken>.
  • Meerdere cellen opmaken

    Selecteer meerdere cellen en selecteer cel(en) bewerken>. Als u cellen van meer dan één taal selecteert, worden alleen SQL- en Python-cellen opgemaakt. Dit geldt ook voor die welke worden gebruikt %sql en %python.

  • Alle Python- en SQL-cellen in het notebook opmaken

    Selecteer Notitieblok bewerken>. Als uw notebook meer dan één taal bevat, worden alleen SQL- en Python-cellen opgemaakt. Dit geldt ook voor die welke worden gebruikt %sql en %python.

Beperkingen van codeopmaak

  • Zwart dwingt PEP 8-standaarden af voor inspringing met vier spaties. Inspringing kan niet worden geconfigureerd.
  • Het opmaken van ingesloten Python-tekenreeksen in een SQL UDF wordt niet ondersteund. Op dezelfde manier wordt het opmaken van SQL-tekenreeksen in een Python UDF niet ondersteund.

Versiegeschiedenis

Azure Databricks-notebooks onderhouden een geschiedenis van notebookversies, zodat u eerdere momentopnamen van het notebook kunt bekijken en herstellen. U kunt de volgende acties uitvoeren op versies: opmerkingen toevoegen, versies herstellen en verwijderen en versiegeschiedenis wissen.

U kunt uw werk ook synchroniseren in Databricks met een externe Git-opslagplaats.

Klik pictogram versiegeschiedenis in de rechterzijbalk om toegang te krijgen tot notitieblokversies. De versiegeschiedenis van het notitieblok wordt weergegeven. U kunt ook de geschiedenis van bestandsversies >selecteren.

Een opmerking toevoegen

Een opmerking toevoegen aan de nieuwste versie:

  1. Klik op de versie.

  2. Klik op Nu opslaan.

    Opmerking opslaan

  3. Voer in het dialoogvenster Notitieblokversie opslaan een opmerking in.

  4. Klik op Opslaan. De notebookversie wordt opgeslagen met de ingevoerde opmerking.

Een versie herstellen

Een versie herstellen:

  1. Klik op de versie.

  2. Klik op Deze versie herstellen.

    Versie herstellen

  3. Klik op Bevestigen. De geselecteerde versie wordt de nieuwste versie van het notebook.

Een versie verwijderen

Een versievermelding verwijderen:

  1. Klik op de versie.

  2. Klik op het prullenbakpictogram Prullenbak.

    Versie verwijderen

  3. Klik op Ja, wissen. De geselecteerde versie wordt verwijderd uit de geschiedenis.

Versiegeschiedenis wissen

De versiegeschiedenis kan niet worden hersteld nadat deze is gewist.

De versiegeschiedenis voor een notebook wissen:

  1. Selecteer De versiegeschiedenis van Bestand > wissen.
  2. Klik op Ja, wissen. De versiegeschiedenis van het notitieblok is gewist.

Codetalen in notebooks

Standaardtaal instellen

De standaardtaal voor het notitieblok wordt weergegeven naast de naam van het notitieblok.

Standaardtaal voor notitieblok

Als u de standaardtaal wilt wijzigen, klikt u op de taalknop en selecteert u de nieuwe taal in de vervolgkeuzelijst. Om ervoor te zorgen dat bestaande opdrachten blijven werken, worden opdrachten van de vorige standaardtaal automatisch voorafgegaan door een magic-opdracht voor taal.

Talen combineren

Cellen gebruiken standaard de standaardtaal van het notitieblok. U kunt de standaardtaal in een cel overschrijven door op de taalknop te klikken en een taal te selecteren in de vervolgkeuzelijst.

Vervolgkeuzelijst celtaal

U kunt ook de magic-opdracht %<language> taal aan het begin van een cel gebruiken. De ondersteunde magic-opdrachten zijn: %python, %r, %scalaen %sql.

Notitie

Wanneer u een magic-opdracht voor taal aanroept, wordt de opdracht verzonden naar de REPL in de uitvoeringscontext voor het notebook. Variabelen die zijn gedefinieerd in één taal (en dus in de REPL voor die taal) zijn niet beschikbaar in de REPL van een andere taal. REPL's kunnen alleen de status delen via externe resources, zoals bestanden in DBFS of objecten in objectopslag.

Notebooks bieden ook ondersteuning voor een aantal aanvullende magic-opdrachten:

  • %sh: Hiermee kunt u shellcode uitvoeren in uw notebook. Als u de cel wilt laten mislukken als de shell-opdracht de afsluitstatus niet nul heeft, voegt u de -e optie toe. Met deze opdracht wordt alleen uitgevoerd op het Apache Spark-stuurprogramma en niet op de werkrollen. Als u een shell-opdracht wilt uitvoeren op alle knooppunten, gebruikt u een init-script.
  • %fs: Hiermee kunt u bestandssysteemopdrachten gebruiken dbutils . Als u bijvoorbeeld de dbutils.fs.ls opdracht wilt uitvoeren om bestanden weer te geven, kunt u in plaats daarvan opgeven %fs ls . Zie Werken met bestanden in Azure Databricks voor meer informatie.
  • %md: Hiermee kunt u verschillende soorten documentatie opnemen, waaronder tekst, afbeeldingen en wiskundige formules en vergelijkingen. Bekijk de volgende sectie.

SQL-syntaxis markeren en automatisch aanvullen in Python-opdrachten

Syntaxismarkeringen en automatisch aanvullen van SQL zijn beschikbaar wanneer u SQL in een Python-opdracht gebruikt, zoals in een spark.sql opdracht.

Sql-celresultaten verkennen in Python-notebooks met behulp van Python

Mogelijk wilt u gegevens laden met behulp van SQL en deze verkennen met behulp van Python. In een Databricks Python-notebook worden tabelresultaten van een SQL-taalcel automatisch beschikbaar gemaakt als een Python DataFrame dat is toegewezen aan de variabele _sqldf.

In Databricks Runtime 13.3 LTS en hoger hebt u ook toegang tot het DataFrame-resultaat met behulp van het uitvoercachingsysteem van IPython. De promptteller wordt weergegeven in het uitvoerbericht dat onderaan de celresultaten wordt weergegeven. Voor het weergegeven voorbeeld verwijst u naar het resultaat als Out[2].

Notitie

  • De variabele _sqldf kan telkens wanneer een %sql cel wordt uitgevoerd, opnieuw worden toegewezen. Als u wilt voorkomen dat verwijzingen naar het DataFrame-resultaat verloren gaan, wijst u deze toe aan een nieuwe variabelenaam voordat u de volgende %sql cel uitvoert:

    new_dataframe_name = _sqldf
    
  • Als de query gebruikmaakt van een widget voor parameterisering, zijn de resultaten niet beschikbaar als Een Python DataFrame.

  • Als de query gebruikmaakt van de trefwoorden CACHE TABLE of UNCACHE TABLE, zijn de resultaten niet beschikbaar als Een Python DataFrame.

In de schermopname ziet u een voorbeeld:

sql results dataframe

SQL-cellen parallel uitvoeren

Terwijl een opdracht wordt uitgevoerd en uw notebook is gekoppeld aan een interactief cluster, kunt u een SQL-cel tegelijk uitvoeren met de huidige opdracht. De SQL-cel wordt uitgevoerd in een nieuwe, parallelle sessie.

Een cel parallel uitvoeren:

  1. Voer de cel uit.

  2. Klik op Nu uitvoeren. De cel wordt onmiddellijk uitgevoerd.

    Een SQL-cel parallel uitvoeren met de huidige actieve cel

Omdat de cel wordt uitgevoerd in een nieuwe sessie, worden tijdelijke weergaven, UDF's en het impliciete Python DataFrame (_sqldf) niet ondersteund voor cellen die parallel worden uitgevoerd. Daarnaast worden de standaardcatalogus- en databasenamen gebruikt tijdens parallelle uitvoering. Als uw code verwijst naar een tabel in een andere catalogus of database, moet u de tabelnaam opgeven met een naamruimte op drie niveaus (catalog.schema.table).

SQL-cellen uitvoeren op een SQL-warehouse

U kunt SQL-opdrachten uitvoeren in een Databricks-notebook in een SQL-warehouse, een type rekenproces dat is geoptimaliseerd voor SQL-analyses. Zie Een notebook gebruiken met een SQL-warehouse.

Afbeeldingen weergeven

Azure Databricks ondersteunt de weergave van afbeeldingen in Markdown-cellen. U kunt afbeeldingen weergeven die zijn opgeslagen in de werkruimte, volumes of FileStore.

Afbeeldingen weergeven die zijn opgeslagen in de werkruimte

U kunt absolute paden of relatieve paden gebruiken om afbeeldingen weer te geven die zijn opgeslagen in de werkruimte. Gebruik de volgende syntaxis om een afbeelding weer te geven die is opgeslagen in de werkruimte:

%md
![my_test_image](/Workspace/absolute/path/to/image.png)

![my_test_image](./relative/path/to/image.png)

Afbeelding insluiten in Markdown-cel

Afbeeldingen weergeven die zijn opgeslagen in volumes

U kunt absolute paden gebruiken om afbeeldingen weer te geven die zijn opgeslagen in Volumes. Gebruik de volgende syntaxis om een afbeelding weer te geven die is opgeslagen in Volumes:

%md
![my_test_image](/Volumes/absolute/path/to/image.png)

Afbeeldingen weergeven die zijn opgeslagen in de FileStore

Gebruik de volgende syntaxis om afbeeldingen weer te geven die zijn opgeslagen in de FileStore:

%md
![my_test_image](files/image.png)

Stel dat u het afbeeldingsbestand voor het Databricks-logo in FileStore hebt:

dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png

Wanneer u de volgende code opneemt in een Markdown-cel:

Afbeelding in Markdown-cel

de afbeelding wordt weergegeven in de cel:

Gerenderde afbeelding

Afbeeldingen slepen en neerzetten

U kunt afbeeldingen uit uw lokale bestandssysteem naar Markdown-cellen slepen en neerzetten. De afbeelding wordt geüpload naar de huidige werkruimtemap en weergegeven in de cel.

Afbeelding slepen en neerzetten in Markdown-cel

Wiskundige vergelijkingen weergeven

Notebooks ondersteunen KaTeX voor het weergeven van wiskundige formules en vergelijkingen. Bijvoorbeeld:

%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}\\]

wordt weergegeven als:

Weergegeven vergelijking 1

en

%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})\\)

wordt weergegeven als:

Weergegeven vergelijking 2

HTML opnemen

U kunt HTML opnemen in een notebook met behulp van de functie displayHTML. Zie HTML, D3 en SVG in notitieblokken voor een voorbeeld van hoe u dit doet.

Notitie

Het displayHTML iframe wordt geleverd vanuit het domein databricksusercontent.com en de iframe-sandbox bevat het allow-same-origin kenmerk. databricksusercontent.com moet toegankelijk zijn via uw browser. Als het momenteel door uw bedrijfsnetwerk wordt geblokkeerd, moet het aan een acceptatielijst worden toegevoegd.

U kunt een koppeling maken naar andere notitieblokken of mappen in Markdown-cellen met behulp van relatieve paden. Geef het href kenmerk van een ankertag op als het relatieve pad, beginnend met een $ en volg vervolgens hetzelfde patroon als in Unix-bestandssystemen:

%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>