Delen via


Synapse-notebooks maken, ontwikkelen en onderhouden

Een notebook in Azure Synapse Analytics (een Synapse-notebook) is een webinterface waarmee u bestanden kunt maken die livecode, visualisaties en verhaaltekst bevatten. Notebooks zijn een goede plek om ideeën te valideren en snelle experimenten te gebruiken om inzichten uit uw gegevens te verkrijgen. Notebooks worden ook veel gebruikt in gegevensvoorbereiding, gegevensvisualisatie, machine learning en andere big data-scenario's.

Met een Synapse-notebook kunt u het volgende doen:

  • Ga aan de slag met nul installatie-inspanningen.
  • Help gegevens veilig te houden met ingebouwde bedrijfsbeveiligingsfuncties.
  • Analyseer gegevens in onbewerkte indelingen (zoals CSV, TXT en JSON), verwerkte bestandsindelingen (zoals Parquet, Delta Lake en ORC) en SQL-gegevensbestanden in tabelvorm met Spark en SQL.
  • Wees productief met verbeterde ontwerpmogelijkheden en ingebouwde gegevensvisualisatie.

In dit artikel wordt beschreven hoe u notebooks gebruikt in Synapse Studio.

Een notebook maken

U kunt een nieuw notitieblok maken of een bestaand notitieblok importeren in een Synapse-werkruimte vanuit Objectverkenner. Selecteer het menu Ontwikkelen . Selecteer de + knop en selecteer Notitieblok of klik met de rechtermuisknop op Notitieblokken en selecteer vervolgens Nieuw notitieblok of Importeren. Synapse-notebooks herkennen standaard Jupyter Notebook IPYNB-bestanden.

Schermopname van selecties voor het maken of importeren van een notitieblok.

Notebooks ontwikkelen

Notebooks bestaan uit cellen, die afzonderlijke code- of tekstblokken zijn die u onafhankelijk of als groep kunt uitvoeren.

In de volgende secties worden de bewerkingen beschreven voor het ontwikkelen van notebooks:

Notitie

In de notebooks wordt automatisch een SparkSession exemplaar voor u gemaakt en opgeslagen in een variabele met de naam spark. Er is ook een variabele voor SparkContext aangeroepen sc. Gebruikers hebben rechtstreeks toegang tot deze variabelen, maar mogen de waarden van deze variabelen niet wijzigen.

Een cel toevoegen

Er zijn meerdere manieren om een nieuwe cel aan uw notitieblok toe te voegen:

  • Beweeg de muisaanwijzer over de ruimte tussen twee cellen en selecteer Code of Markdown.

    Schermopname van de knoppen Code en Markdown in een Synapse-notebook.

  • Gebruik sneltoetsen in de opdrachtmodus. Selecteer de toets A om een cel in te voegen boven de huidige cel. Selecteer de B-toets om een cel in te voegen onder de huidige cel.

Een primaire taal instellen

Synapse-notebooks ondersteunen vier Apache Spark-talen:

  • PySpark (Python)
  • Spark (Scala)
  • Spark SQL
  • .NET Spark (C#)
  • SparkR (R)

U kunt de primaire taal instellen voor nieuw toegevoegde cellen in de vervolgkeuzelijst Taal op de bovenste opdrachtbalk.

Schermopname van de vervolgkeuzelijst voor het selecteren van een taal in een Synapse-notebook.

Meerdere talen gebruiken

U kunt meerdere talen in één notebook gebruiken door de juiste magic-opdracht voor taal aan het begin van een cel op te geven. De volgende tabel bevat de magic-opdrachten voor het schakelen tussen celtalen.

Magic-opdracht Language Beschrijving
%%pyspark Python Voer een Python-query uit op SparkContext.
%%spark Scala Voer een Scala-query uit op SparkContext.
%%sql Spark SQL Voer een Spark SQL-query uit op SparkContext.
%%csharp .NET voor Spark C# Voer een .NET voor Spark C#-query uit op SparkContext.
%%sparkr R Voer een R-query uit op SparkContext.

In de volgende afbeelding ziet u een voorbeeld van hoe u een PySpark-query kunt schrijven met behulp van de %%pyspark magic-opdracht of een Spark SQL-query met behulp van de %%sql magic-opdracht in een Spark-notebook (Scala). De primaire taal voor het notebook is ingesteld op PySpark.

Schermopname van Magic-opdrachten van Spark in een Synapse-notebook.

Tijdelijke tabellen gebruiken om te verwijzen naar gegevens in verschillende talen

U kunt niet rechtstreeks verwijzen naar gegevens of variabelen in verschillende talen in een Synapse-notebook. In Spark kunt u verwijzen naar een tijdelijke tabel in verschillende talen. Hier volgt een voorbeeld van het lezen van een Scala DataFrame in PySpark en Spark SQL met behulp van een tijdelijke Spark-tabel als tijdelijke oplossing:

  1. Lees in cel 1 een DataFrame van een SQL-poolconnector met behulp van Scala en maak een tijdelijke tabel:

    %%spark
    val scalaDataFrame = spark.read.sqlanalytics("mySQLPoolDatabase.dbo.mySQLPoolTable")
    scalaDataFrame.createOrReplaceTempView( "mydataframetable" )
    
  2. Voer in cel 2 een query uit op de gegevens met behulp van Spark SQL:

    %%sql
    SELECT * FROM mydataframetable
    
  3. Gebruik in cel 3 de gegevens in PySpark:

    %%pyspark
    myNewPythonDataFrame = spark.sql("SELECT * FROM mydataframetable")
    

IntelliSense in IDE-stijl gebruiken

Synapse-notebooks zijn geïntegreerd met de Monaco-editor om in IDE-stijl IntelliSense naar de celeditor te brengen. De functies van syntaxismarkering, foutmarkering en automatische voltooiing van code helpen u bij het schrijven van code en het sneller identificeren van problemen.

De IntelliSense-functies zijn op verschillende volwassenheidsniveaus voor verschillende talen. Gebruik de volgende tabel om te zien wat er wordt ondersteund.

Talen Syntaxismarkering Syntaxisfoutmarkering Voltooiing van syntaxiscode Voltooiing van variabele code Voltooiing van systeemfunctiecode Voltooiing van de gebruikersfunctiecode Slimme inspringing Code vouwen
PySpark (Python) Ja Ja Ja Ja Ja Ja Ja Ja
Spark (Scala) Ja Ja Ja Ja Ja Ja No Ja
Spark SQL Ja Ja Ja Ja Ja No Nee Nr.
.NET voor Spark (C#) Ja Ja Ja Ja Ja Ja Ja Ja

Een actieve Spark-sessie is vereist om te profiteren van voltooiing van variabele code, voltooiing van systeemfunctiecode en voltooiing van de gebruikersfunctiecode voor .NET voor Spark (C#).

Codefragmenten gebruiken

Synapse-notebooks bieden codefragmenten waarmee u eenvoudiger veelgebruikte codepatronen kunt invoeren. Deze patronen omvatten het configureren van uw Spark-sessie, het lezen van gegevens als een Spark DataFrame en het tekenen van grafieken met behulp van Matplotlib.

Fragmenten worden weergegeven in sneltoetsen van intelliSense in IDE-stijl, gecombineerd met andere suggesties. De inhoud van de codefragmenten wordt uitgelijnd met de taal van de codecel. U kunt beschikbare fragmenten zien door fragmenten of trefwoorden in te voeren die worden weergegeven in de titel van het codefragment in de codeceleditor. Als u bijvoorbeeld lezen invoert, ziet u de lijst met fragmenten om gegevens uit verschillende gegevensbronnen te lezen.

GIF-animatie van codefragmenten in een Synapse-notebook.

Tekstcellen opmaken met werkbalkknoppen

U kunt de opmaakknoppen op de werkbalk van de tekstcel gebruiken om algemene Markdown-acties uit te voeren. Deze acties omvatten het vet maken van tekst, het cursief maken van tekst, het maken van alinea's en koppen via een vervolgkeuzelijst, het invoegen van code, het invoegen van een niet-geordende lijst, het invoegen van een geordende lijst, het invoegen van een hyperlink en het invoegen van een afbeelding vanuit een URL.

Schermopname van de werkbalk van de tekstcel in een Synapse-notebook.

Een celbewerking ongedaan maken of opnieuw uitvoeren

Als u de meest recente celbewerkingen wilt intrekken, selecteert u de knop Ongedaan maken of Opnieuw , of selecteert u de Z-toets of Shift+Z. U kunt nu maximaal 10 historische celbewerkingen ongedaan maken of opnieuw uitvoeren.

Schermopname van de knoppen Ongedaan maken en Opnieuw uitvoeren in een Synapse-notebook.

Ondersteunde celbewerkingen zijn onder andere:

  • Een cel invoegen of verwijderen. U kunt verwijderingsbewerkingen intrekken door Ongedaan maken te selecteren. Met deze actie blijft de tekstinhoud samen met de cel behouden.
  • Cellen opnieuw ordenen.
  • Schakel een parametercel in of uit.
  • Converteren tussen een codecel en een Markdown-cel.

Notitie

U kunt tekstbewerkingen of opmerkingenbewerkingen in een cel niet ongedaan maken.

Opmerking toevoegen aan een codecel

  1. Selecteer de knop Opmerkingen op de werkbalk van het notitieblok om het opmerkingenvenster te openen.

    Schermopname van de knop Opmerkingen en het deelvenster Opmerkingen in een Synapse-notitieblok.

  2. Selecteer code in de codecel, selecteer Nieuw in het opmerkingenvenster, voeg opmerkingen toe en selecteer vervolgens de knop Opmerking posten.

    Schermopname van het vak voor het invoeren van een opmerking in een Synapse-notebook.

  3. Indien nodig kunt u bewerkingsactie Opmerking bewerken, Thread oplossen en Thread verwijderen uitvoeren door het beletselteken (...) naast uw opmerking te selecteren.

    Schermopname van extra opdrachten voor een codecel in een Synapse-notebook.

Een cel verplaatsen

Als u een cel wilt verplaatsen, selecteert u de linkerkant van de cel en sleept u de cel naar de gewenste positie.

GIF-animatie van het verplaatsen van cellen in een Synapse-notebook.

Een cel kopiëren

Als u een cel wilt kopiëren, maakt u eerst een nieuwe cel en selecteert u vervolgens alle tekst in de oorspronkelijke cel, kopieert u de tekst en plakt u de tekst in de nieuwe cel. Wanneer de cel zich in de bewerkingsmodus bevindt, zijn traditionele sneltoetsen om alle tekst te selecteren beperkt tot de cel.

Tip

Synapse-notebooks bieden ook fragmenten van veelgebruikte codepatronen.

Een cel verwijderen

Als u een cel wilt verwijderen, selecteert u de knop Verwijderen rechts van de cel.

U kunt ook sneltoetsen gebruiken in de opdrachtmodus. Selecteer Shift+D om de huidige cel te verwijderen.

Schermopname van de knop voor het verwijderen van een cel in een Synapse-notebook.

Celinvoer samenvouwen

Als u de invoer van de huidige cel wilt samenvouwen, selecteert u het weglatingsteken Meer opdrachten (...) op de celwerkbalk en selecteert u Invoer verbergen. Als u de invoer wilt uitvouwen, selecteert u Invoer weergeven terwijl de cel is samengevouwen.

GIF-animatie van het samenvouwen en uitbreiden van celinvoer in een Synapse-notebook.

Celuitvoer samenvouwen

Als u de uitvoer van de huidige cel wilt samenvouwen, selecteert u het weglatingsteken meer opdrachten (...) op de celwerkbalk en selecteert u Uitvoer verbergen. Als u de uitvoer wilt uitbreiden, selecteert u Uitvoer weergeven terwijl de uitvoer van de cel verborgen is.

GIF-animatie van het samenvouwen en uitbreiden van celuitvoer in een Synapse-notebook.

Een notitieblokoverzicht gebruiken

Het overzicht (inhoudsopgave) bevat de eerste Markdown-koptekst van een Markdown-cel in een zijbalkvenster voor snelle navigatie. De zijbalk van het kader kan worden aangepast en samengevouwen om het scherm op de best mogelijke manier aan te passen. Als u de zijbalk wilt openen of verbergen, selecteert u de knop Overzicht op de opdrachtbalk van het notitieblok.

Schermopname van de zijbalk overzicht in een Synapse-notebook.

Een notebook uitvoeren

U kunt de codecellen in uw notebook afzonderlijk of allemaal tegelijk uitvoeren. De status en voortgang van elke cel worden weergegeven in het notitieblok.

Notitie

Als u een notebook verwijdert, worden taken die momenteel worden uitgevoerd, niet automatisch geannuleerd. Als u een taak wilt annuleren, gaat u naar de Monitor-hub en annuleert u deze handmatig.

Een cel uitvoeren

Er zijn meerdere manieren om de code in een cel uit te voeren:

  • Beweeg de muisaanwijzer over de cel die u wilt uitvoeren en selecteer vervolgens de knop Cel uitvoeren of druk op Ctrl+Enter.

    Schermopname van de opdracht voor het uitvoeren van een cel in een Synapse-notebook.

  • Gebruik sneltoetsen in de opdrachtmodus. Selecteer Shift+Enter om de huidige cel uit te voeren en selecteer de cel eronder. Selecteer Alt+Enter om de huidige cel uit te voeren en eronder een nieuwe cel in te voegen.

Alle cellen uitvoeren

Als u alle cellen in het huidige notebook op volgorde wilt uitvoeren, selecteert u de knop Alles uitvoeren.

Schermopname van de knop voor het uitvoeren van alle cellen in een Synapse-notebook.

Alle cellen boven of onder uitvoeren

Als u alle cellen boven de huidige cel in volgorde wilt uitvoeren, vouwt u de vervolgkeuzelijst voor de knop Alles uitvoeren uit en selecteert u cellen uitvoeren erboven. Selecteer Cellen uitvoeren hieronder om alle cellen onder de huidige cellen in volgorde uit te voeren.

Schermopname van de opdrachten voor het uitvoeren van cellen boven en onder de huidige cel in een Synapse-notebook.

Alle actieve cellen annuleren

Als u de actieve cellen of de cellen in de wachtrij wilt annuleren, selecteert u de knop Alles annuleren.

Schermopname van de knop voor het annuleren van alle actieve of wachtende cellen in een Synapse-notebook.

Verwijzen naar een notitieblok

Als u wilt verwijzen naar een ander notitieblok binnen de context van het huidige notitieblok, gebruikt u de %run <notebook path> magic-opdracht. Alle variabelen die in het referentienotitieblok zijn gedefinieerd, zijn beschikbaar in het huidige notebook.

Hier volgt een voorbeeld:

%run /<path>/Notebook1 { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }

De notebook-verwijzing werkt zowel in de interactieve modus als in pijplijnen.

De %run magic-opdracht heeft deze beperkingen:

  • De opdracht ondersteunt geneste aanroepen, maar niet recursieve aanroepen.
  • De opdracht ondersteunt het doorgeven van een absolute pad- of notebooknaam alleen als parameter. Het biedt geen ondersteuning voor relatieve paden.
  • De opdracht ondersteunt momenteel slechts vier parameterwaardetypen: int, float, boolen string. Het biedt geen ondersteuning voor variabele vervangingsbewerkingen.
  • De notitieblokken waarnaar wordt verwezen, moeten worden gepubliceerd. U moet de notitieblokken publiceren om ernaar te verwijzen, tenzij u de optie selecteert om een niet-gepubliceerde notitieblokreferentie in te schakelen. Synapse Studio herkent de niet-gepubliceerde notebooks niet vanuit de Git-opslagplaats.
  • Notebooks waarnaar wordt verwezen, bieden geen ondersteuning voor diepten van instructies die groter zijn dan vijf.

De variabeleverkenner gebruiken

Een Synapse-notebook biedt een ingebouwde variabeleverkenner in de vorm van een tabel met variabelen in de huidige Spark-sessie voor PySpark-cellen (Python). De tabel bevat kolommen voor variabelenaam, type, lengte en waarde. Meer variabelen worden automatisch weergegeven wanneer ze worden gedefinieerd in de codecellen. Als u elke kolomkop selecteert, worden de variabelen in de tabel gesorteerd.

Als u de variabeleverkenner wilt openen of verbergen, selecteert u de knop Variabelen op de opdrachtbalk van het notitieblok.

Schermopname van de variabeleverkenner in een Synapse-notebook.

Notitie

De Variable Explorer ondersteunt alleen Python.

De celstatusindicator gebruiken

Er wordt een stapsgewijze status van een celuitvoering weergegeven onder de cel, zodat u de huidige voortgang kunt zien. Nadat de uitvoering van de cel is voltooid, wordt een samenvatting met de totale duur en eindtijd weergegeven en blijft daar voor toekomstig gebruik.

Schermopname van het overzicht van een celuitvoering in een Synapse-notebook.

De Spark-voortgangsindicator gebruiken

Een Synapse-notebook is uitsluitend gebaseerd op Spark. Codecellen worden op afstand uitgevoerd op de serverloze Apache Spark-pool. Een voortgangsindicator voor Spark-taken met een realtime voortgangsbalk helpt u inzicht te hebben in de uitvoeringsstatus van de taak.

Het aantal taken voor elke taak of fase helpt u bij het identificeren van het parallelle niveau van uw Spark-taak. U kunt ook dieper inzoomen op de Spark-gebruikersinterface van een specifieke taak (of fase) door de koppeling op de naam van de taak (of fase) te selecteren.

Schermopname van de Spark-voortgangsindicator in een Synapse-notebook.

Een Spark-sessie configureren

In het deelvenster Sessie configureren , dat u kunt vinden door het tandwielpictogram boven aan het notebook te selecteren, kunt u de time-outduur, het aantal uitvoerders en de grootte van uitvoerders opgeven die u aan de huidige Spark-sessie wilt geven. Start de Spark-sessie opnieuw om configuratiewijzigingen van kracht te laten worden. Alle notebookvariabelen in de cache worden gewist.

U kunt ook een configuratie maken op basis van de Apache Spark-configuratie of een bestaande configuratie selecteren. Raadpleeg de Apache Spark-configuratie beheren voor meer informatie.

Schermopname van het deelvenster voor het configureren van een sessie in een Synapse-notebook.

Magic-opdracht voor het configureren van een Spark-sessie

U kunt ook spark-sessie-instellingen opgeven via de magic-opdracht %%configure. Start de Spark-sessie opnieuw om de instellingen van kracht te maken.

U wordt aangeraden aan het begin van uw notebook uit te voeren %%configure . Hier volgt een voorbeeld. Raadpleeg de Livy-informatie op GitHub voor de volledige lijst met geldige parameters.

%%configure
{
    //You can get a list of valid parameters to configure the session from https://github.com/cloudera/livy#request-body.
    "driverMemory":"28g", // Recommended values: ["28g", "56g", "112g", "224g", "400g", "472g"]
    "driverCores":4, // Recommended values: [4, 8, 16, 32, 64, 80]
    "executorMemory":"28g",
    "executorCores":4, 
    "jars":["abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>/myjar.jar","wasb[s]://<containername>@<accountname>.blob.core.windows.net/<path>/myjar1.jar"],
    "conf":{
    //Example of a standard Spark property. To find more available properties, go to https://spark.apache.org/docs/latest/configuration.html#application-properties.
        "spark.driver.maxResultSize":"10g",
    //Example of a customized property. You can specify the count of lines that Spark SQL returns by configuring "livy.rsc.sql.num-rows".
        "livy.rsc.sql.num-rows":"3000" 
    }
}

Hier volgen enkele overwegingen voor de %%configure magic-opdracht:

  • U wordt aangeraden dezelfde waarde voor driverMemory en executorMemory in %%configurete gebruiken. We raden u ook aan driverCores executorCores om dezelfde waarde te hebben.
  • U kunt in Synapse-pijplijnen gebruiken %%configure , maar als u deze niet instelt in de eerste codecel, mislukt de pijplijnuitvoering omdat de sessie niet opnieuw kan worden gestart.
  • De %%configure opdracht die in mssparkutils.notebook.run wordt gebruikt, wordt genegeerd, maar de opdracht die in %run <notebook> deze opdracht wordt gebruikt, wordt nog steeds uitgevoerd.
  • U moet de standaardconfiguratie-eigenschappen van Spark in de "conf" hoofdtekst gebruiken. We bieden geen ondersteuning voor verwijzingen op het eerste niveau voor de Spark-configuratie-eigenschappen.
  • Sommige speciale Spark-eigenschappen worden niet doorgevoerd in "conf" de hoofdtekst, waaronder "spark.driver.cores", "spark.executor.cores", "spark.driver.memory", en "spark.executor.instances""spark.executor.memory".

Configuratie van geparameteriseerde sessie vanuit een pijplijn

U kunt de configuratie van een geparameteriseerde sessie gebruiken om waarden in de %%configure magic-opdracht te vervangen door parameters voor pijplijnuitvoering (notebookactiviteit). Wanneer u een %%configure codecel voorbereidt, kunt u standaardwaarden overschrijven door een object als volgt te gebruiken:

{
      "activityParameterName": "paramterNameInPipelineNotebookActivity",
      "defaultValue": "defaultValueIfNoParamterFromPipelineNotebookActivity"
} 

In het volgende voorbeeld ziet u de standaardwaarden van 4 en "2000", die ook kunnen worden geconfigureerd:

%%configure  

{ 
    "driverCores": 
    { 
        "activityParameterName": "driverCoresFromNotebookActivity", 
        "defaultValue": 4 
    }, 
    "conf": 
    { 
        "livy.rsc.sql.num-rows": 
        { 
            "activityParameterName": "rows", 
            "defaultValue": "2000" 
        } 
    } 
} 

Het notebook gebruikt de standaardwaarde als u het notebook rechtstreeks in de interactieve modus uitvoert of als de activiteit pijplijnnotitieblok geen parameter bevat die overeenkomt "activityParameterName".

Tijdens de pijplijnuitvoeringsmodus kunt u het tabblad Instellingen gebruiken om instellingen voor een pijplijnnotitieblokactiviteit te configureren.

Schermopname van de geparameteriseerde sessieconfiguratie in een Synapse-notebook.

Als u de sessieconfiguratie wilt wijzigen, moet de naam van de activiteitsparameter pijplijnnotitieblok hetzelfde zijn als activityParameterName in het notebook. In dit voorbeeld wordt tijdens een pijplijnuitvoering 8 vervangen driverCores en %%configure4000 vervangenlivy.rsc.sql.num-rows.

Als een pijplijnuitvoering mislukt nadat u de %%configure magic-opdracht hebt gebruikt, kunt u meer foutinformatie krijgen door de %%configure magic-cel uit te voeren in de interactieve modus van het notebook.

Gegevens naar een notebook brengen

U kunt gegevens laden uit Azure Data Lake Storage Gen 2-, Azure Blob Storage- en SQL-pools, zoals wordt weergegeven in de volgende codevoorbeelden.

Een CSV-bestand uit Azure Data Lake Storage Gen2 lezen als een Spark DataFrame

from pyspark.sql import SparkSession
from pyspark.sql.types import *
account_name = "Your account name"
container_name = "Your container name"
relative_path = "Your path"
adls_path = 'abfss://%s@%s.dfs.core.windows.net/%s' % (container_name, account_name, relative_path)

df1 = spark.read.option('header', 'true') \
                .option('delimiter', ',') \
                .csv(adls_path + '/Testfile.csv')

Een CSV-bestand uit Azure Blob Storage lezen als een Spark DataFrame


from pyspark.sql import SparkSession

# Azure storage access info
blob_account_name = 'Your account name' # replace with your blob name
blob_container_name = 'Your container name' # replace with your container name
blob_relative_path = 'Your path' # replace with your relative folder path
linked_service_name = 'Your linked service name' # replace with your linked service name

blob_sas_token = mssparkutils.credentials.getConnectionStringOrCreds(linked_service_name)

# Allow Spark to access from Azure Blob Storage remotely

wasb_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)

spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token)
print('Remote blob path: ' + wasb_path)

df = spark.read.option("header", "true") \
            .option("delimiter","|") \
            .schema(schema) \
            .csv(wasbs_path)

Gegevens lezen uit het primaire opslagaccount

U hebt rechtstreeks toegang tot gegevens in het primaire opslagaccount. U hoeft de geheime sleutels niet op te geven. Klik in Data Explorer met de rechtermuisknop op een bestand en selecteer Nieuw notitieblok om een nieuw notitieblok te zien met een automatisch gegenereerde gegevensextractor.

Schermopname van het openen van een nieuwe Spark-tabel voor toegang tot bestandsgegevens in Azure Synapse Analytics.

IPython-widgets gebruiken

Widgets zijn gebeurtenisvolle Python-objecten die een weergave in de browser hebben, vaak als een besturingselement zoals een schuifregelaar of tekstvak. IPython-widgets werken alleen in Python-omgevingen. Ze worden momenteel niet ondersteund in andere talen (bijvoorbeeld Scala, SQL of C#).

Stappen voor het gebruik van IPython-widgets

  1. Importeer de ipywidgets module om het Jupyter Widgets-framework te gebruiken:

    import ipywidgets as widgets
    
  2. Gebruik de functie op het hoogste niveau display om een widget weer te geven of laat een expressie van het widget type achter op de laatste regel van de codecel:

    slider = widgets.IntSlider()
    display(slider)
    
    slider = widgets.IntSlider()
    slider
    
  3. Voer de cel uit. De widget wordt weergegeven in het uitvoergebied.

    Schermopname van een schuifregelaar voor de IPython-widget in een Synapse-notebook.

U kunt meerdere display() aanroepen gebruiken om hetzelfde widgetexemplaren meerdere keren weer te geven, maar ze blijven gesynchroniseerd met elkaar:

slider = widgets.IntSlider()
display(slider)
display(slider)

Schermopname van meerdere schuifregelaars voor IPython-widget in een Synapse-notebook.

Als u twee widgets wilt weergeven die onafhankelijk van elkaar zijn, maakt u twee widgetexemplaren:

slider1 = widgets.IntSlider()
slider2 = widgets.IntSlider()
display(slider1)
display(slider2)

Ondersteunde widgets

Widgettype Widgets
Numeriek IntSlider, , FloatSliderFloatLogSlider, IntRangeSlider, FloatRangeSlider, , IntProgress, , BoundedFloatTextBoundedIntTextIntTextFloatProgressFloatText
Booleaanse waarde ToggleButton, , CheckboxValid
Selectie Dropdown, , RadioButtonsSelect, SelectionSlider, , SelectionRangeSlider, , ToggleButtonsSelectMultiple
String Text, , ComboboxText area, Password, , Label, HTML, ImageHTML MathButton
Afspelen (animatie) Date picker, , Color pickerController
Container/indeling Box, , HBoxVBox, GridBox, , Accordion, , TabsStacked

Bekende beperkingen

  • De volgende tabel bevat widgets die momenteel niet worden ondersteund, samen met tijdelijke oplossingen:

    Functionaliteit Tijdelijke oplossing
    Output Widget U kunt in plaats daarvan de print() functie gebruiken om tekst naar stdoutte schrijven.
    widgets.jslink() U kunt de widgets.link() functie gebruiken om twee vergelijkbare widgets te koppelen.
    FileUpload Widget Geen beschikbaar.
  • De globale display functie die Azure Synapse Analytics biedt, biedt geen ondersteuning voor het weergeven van meerdere widgets in één aanroep (dat wil display(a, b)wel). Dit gedrag verschilt van de functie IPython display .

  • Als u een notitieblok sluit dat een IPython-widget bevat, kunt u de widget pas weergeven of gebruiken als u de bijbehorende cel opnieuw uitvoert.

Notebooks opslaan

U kunt één notitieblok of alle notitieblokken in uw werkruimte opslaan:

  • Als u wijzigingen wilt opslaan die u in één notitieblok hebt aangebracht, selecteert u de knop Publiceren op de opdrachtbalk van het notitieblok.

    Schermopname van de knop voor het publiceren van wijzigingen in een Synapse-notebook.

  • Als u alle notitieblokken in uw werkruimte wilt opslaan, selecteert u de knop Alles publiceren op de opdrachtbalk van de werkruimte.

    Schermopname van de knop voor het publiceren van wijzigingen in alle notitieblokken in een Synapse-werkruimte.

In het deelvenster Eigenschappen van het notitieblok kunt u configureren of de celuitvoer moet worden opgenomen bij het opslaan.

Schermopname van synapse-notebookeigenschappen en het selectievakje voor het opnemen van celuitvoer bij het opslaan.

Magic-opdrachten gebruiken

U kunt vertrouwde Jupyter-magic-opdrachten gebruiken in Synapse-notebooks. Bekijk de volgende lijsten met momenteel beschikbare magic-opdrachten. Vertel ons uw use cases op GitHub , zodat we meer magic-opdrachten kunnen blijven maken om aan uw behoeften te voldoen.

Notitie

Alleen de volgende magic-opdrachten worden ondersteund in Synapse-pijplijnen: %%pyspark, %%spark, %%csharp, . %%sql

Beschikbare magic-opdrachten voor regels:

%lsmagic, , %time%timeit, %history, , , %run%load

Beschikbare magic-opdrachten voor cellen:

%%time, , %%capture, %%writefile%%timeit, , %%sql, %%pyspark, , %%html%%csharp%%spark%%configure

Verwijzen naar een niet-gepubliceerd notitieblok

Het is handig om te verwijzen naar een niet-gepubliceerd notitieblok als u lokaal fouten wilt opsporen. Wanneer u deze functie inschakelt, haalt een notebook de huidige inhoud op in de webcache. Als u een cel uitvoert die een verwijzingsnotitieblokinstructie bevat, verwijst u naar de presentatienotitieblokken in de huidige notebookbrowser in plaats van naar een opgeslagen versie in een cluster. Andere notitieblokken kunnen verwijzen naar de wijzigingen in uw notebook-editor zonder dat u de wijzigingen hoeft te publiceren (livemodus) of door te voeren (Git-modus). Door deze aanpak te gebruiken, kunt u de vervuiling van gemeenschappelijke bibliotheken voorkomen tijdens het ontwikkelen of opsporen van fouten.

U kunt verwijzen naar een niet-gepubliceerd notitieblok inschakelen door het juiste selectievakje in het deelvenster Eigenschappen in te schakelen.

Schermopname van het selectievakje voor het inschakelen van verwijzingen naar een niet-gepubliceerd Synapse-notebook.

In de volgende tabel worden gevallen vergeleken. Hoewel %run en mssparkutils.notebook.run hier hetzelfde gedrag hebben, wordt de tabel als voorbeeld gebruikt %run .

Case Uitschakelen Inschakelen
Livemodus
Nb1 (gepubliceerd)
%run Nb1
Gepubliceerde versie van Nb1 uitvoeren Gepubliceerde versie van Nb1 uitvoeren
Nb1 (nieuw)
%run Nb1
Error Nieuwe Nb1 uitvoeren
Nb1 (eerder gepubliceerd, bewerkt)
%run Nb1
Gepubliceerde versie van Nb1 uitvoeren Bewerkte versie van Nb1 uitvoeren
Git-modus
Nb1 (gepubliceerd)
%run Nb1
Gepubliceerde versie van Nb1 uitvoeren Gepubliceerde versie van Nb1 uitvoeren
Nb1 (nieuw)
%run Nb1
Error Nieuwe Nb1 uitvoeren
Nb1 (niet gepubliceerd, vastgelegd)
%run Nb1
Error Vastgelegde Nb1 uitvoeren
Nb1 (eerder gepubliceerd, vastgelegd)
%run Nb1
Gepubliceerde versie van Nb1 uitvoeren Vastgelegde versie van Nb1 uitvoeren
Nb1 (eerder gepubliceerd, nieuw in huidige vertakking)
%run Nb1
Gepubliceerde versie van Nb1 uitvoeren Nieuwe Nb1 uitvoeren
Nb1 (niet gepubliceerd, eerder doorgevoerd, bewerkt)
%run Nb1
Error Bewerkte versie van Nb1 uitvoeren
Nb1 (eerder gepubliceerd en doorgevoerd, bewerkt)
%run Nb1
Gepubliceerde versie van Nb1 uitvoeren Bewerkte versie van Nb1 uitvoeren

Samengevat:

  • Als u verwijst naar een niet-gepubliceerd notitieblok uitschakelt, voert u altijd de gepubliceerde versie uit.
  • Als u verwijst naar een niet-gepubliceerd notitieblok inschakelt, gebruikt de verwijzingsuitvoering altijd de huidige versie van het notebook die wordt weergegeven op de UX van het notebook.

Actieve sessies beheren

U kunt uw notebooksessies opnieuw gebruiken zonder dat u nieuwe sessies hoeft te starten. In Synapse-notebooks kunt u uw actieve sessies in één lijst beheren. Als u de lijst wilt openen, selecteert u het beletselteken (...) en selecteert u vervolgens Sessies beheren.

Schermopname van selecties voor het openen van een lijst met actieve Synapse-notebooksessies.

Het deelvenster Actieve sessies bevat alle sessies in de huidige werkruimte die u vanuit een notitieblok hebt gestart. De lijst bevat de sessiegegevens en de bijbehorende notebooks. De ontkoppeling met notebook, De sessie stoppen en Weergeven in bewakingsacties zijn hier beschikbaar. U kunt ook uw geselecteerde notitieblok verbinden met een actieve sessie die is gestart vanuit een ander notitieblok. De sessie wordt vervolgens losgekoppeld van het vorige notebook (als deze niet inactief is) en is gekoppeld aan het huidige notitieblok.

Schermopname van het deelvenster voor actieve sessies in een Synapse-werkruimte.

Python-logboeken gebruiken in een notebook

U kunt Python-logboeken vinden en verschillende logboekniveaus en -indelingen instellen met behulp van de volgende voorbeeldcode:

import logging

# Customize the logging format for all loggers
FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
for handler in logging.getLogger().handlers:
    handler.setFormatter(formatter)

# Customize the log level for all loggers
logging.getLogger().setLevel(logging.INFO)

# Customize the log level for a specific logger
customizedLogger = logging.getLogger('customized')
customizedLogger.setLevel(logging.WARNING)

# Logger that uses the default global log level
defaultLogger = logging.getLogger('default')
defaultLogger.debug("default debug message")
defaultLogger.info("default info message")
defaultLogger.warning("default warning message")
defaultLogger.error("default error message")
defaultLogger.critical("default critical message")

# Logger that uses the customized log level
customizedLogger.debug("customized debug message")
customizedLogger.info("customized info message")
customizedLogger.warning("customized warning message")
customizedLogger.error("customized error message")
customizedLogger.critical("customized critical message")

De geschiedenis van invoeropdrachten weergeven

Synapse-notebooks ondersteunen de magic-opdracht %history om de invoeropdrachtgeschiedenis voor de huidige sessie af te drukken. De %history magic-opdracht is vergelijkbaar met de standaard Jupyter IPython-opdracht en werkt voor meerdere taalcontexten in een notebook.

%history [-n] [range [range ...]]

In de voorgaande code -n is het afdrukuitvoeringsnummer. De range waarde kan het volgende zijn:

  • N: Code van de Nth uitgevoerde cel afdrukken.
  • M-N: Code afdrukken van de Mth cel naar de Nth uitgevoerde cel.

Als u bijvoorbeeld invoergeschiedenis wilt afdrukken van de eerste naar de tweede uitgevoerde cel, gebruikt u %history -n 1-2.

Een notebook integreren

Een notebook toevoegen aan een pijplijn

Als u een notebook wilt toevoegen aan een bestaande pijplijn of een nieuwe pijplijn wilt maken, selecteert u de knop Toevoegen aan pijplijn in de rechterbovenhoek.

Schermopname van de menuopties voor het toevoegen van een notitieblok aan een bestaande of nieuwe Synapse-pijplijn.

Een parametercel aanwijzen

Als u uw notitieblok wilt parameteriseren, selecteert u het beletselteken (...) voor toegang tot meer opdrachten op de celwerkbalk. Selecteer vervolgens De parametercel in-/uitschakelen om de cel aan te wijzen als parametercel.

Schermopname van de menuoptie voor het aanwijzen van een cel als parametercel.

Azure Data Factory zoekt naar de parametercel en behandelt deze cel als de standaardwaarde voor de parameters die tijdens de uitvoering zijn doorgegeven. De uitvoeringsengine voegt een nieuwe cel toe onder de parametercel met invoerparameters om de standaardwaarden te overschrijven.

Parameters uit een pijplijn toewijzen

Nadat u een notebook met parameters hebt gemaakt, kunt u dit uitvoeren vanuit een pijplijn met behulp van een Synapse-notebookactiviteit. Nadat u de activiteit aan uw pijplijncanvas hebt toegevoegd, kunt u de parameterwaarden instellen in de sectie Basisparameters van het tabblad Instellingen .

Schermopname van het gebied voor het toewijzen van parameters in Azure Synapse Analytics.

Wanneer u parameterwaarden toewijst, kunt u de taal van de pijplijnexpressie of systeemvariabelen gebruiken.

Sneltoetsen gebruiken

Net als Jupyter Notebooks hebben Synapse-notebooks een modale gebruikersinterface. Het toetsenbord doet verschillende dingen, afhankelijk van de modus waarin de notebookcel zich bevindt. Synapse-notebooks ondersteunen de volgende twee modi voor een codecel:

  • Opdrachtmodus: een cel bevindt zich in de opdrachtmodus wanneer er geen tekstcursor wordt gevraagd om te typen. Wanneer een cel zich in de opdrachtmodus bevindt, kunt u het notitieblok als geheel bewerken, maar niet in afzonderlijke cellen typen. Voer de opdrachtmodus in door de Esc-toets te selecteren of door de muis te gebruiken om buiten het editorgebied van een cel te selecteren.

    Schermopname van de opdrachtmodus in een Synapse-notebook.

  • Bewerkingsmodus: wanneer een cel zich in de bewerkingsmodus bevindt, wordt u door een tekstcursor gevraagd om in de cel te typen. Voer de bewerkingsmodus in door de Enter-toets te selecteren of door de muis te gebruiken om het editorgebied van een cel te selecteren.

    Schermopname van de bewerkingsmodus in een Synapse-notebook.

Sneltoetsen in opdrachtmodus

Actie Snelkoppeling synapse-notebook
Voer de huidige cel uit en selecteer hieronder Shift+Enter
Voer de huidige cel uit en voeg hieronder in Alt+Enter
Huidige cel uitvoeren Ctrl+Enter
Cel erboven selecteren Omhoog
Selecteer de cel hieronder Buiten gebruik
Vorige cel selecteren K
Volgende cel selecteren J
Cel erboven invoegen A
Cel hieronder invoegen B
Geselecteerde cellen verwijderen Shift+D
Overschakelen naar bewerkingsmodus Enter

Sneltoetsen in de bewerkingsmodus

Actie Snelkoppeling synapse-notebook
Cursor omhoog verplaatsen Omhoog
Cursor omlaag verplaatsen Buiten gebruik
Ongedaan maken Ctrl+Z
Opnieuw uitvoeren Ctrl+Y
Opmerking/opmerking verwijderen Ctrl+/
Woord verwijderen voor Ctrl+Backspace
Woord verwijderen na Ctrl+Delete
Naar het begin van de cel gaan Ctrl+Home
Naar het einde van de cel gaan Ctrl+End
Eén woord naar links gaan Ctrl+links
Eén woord naar rechts gaan Ctrl+rechts
Alles selecteren Ctrl+A
Inspringen Ctrl+]
Dedent Ctrl+[
Overschakelen naar opdrachtmodus Esc