Udostępnij za pośrednictwem


Tworzenie, opracowywanie i obsługa notesów usługi Synapse w usłudze Azure Synapse Analytics

Notes usługi Synapse to interfejs internetowy umożliwiający tworzenie plików zawierających kod na żywo, wizualizacje i tekst narracji. Notesy to dobre miejsce do weryfikowania pomysłów i przeprowadzania krótkich eksperymentów w celu uzyskania szczegółowych informacji na podstawie danych. Notesy są również szeroko używane w scenariuszach przygotowywania danych, wizualizacji danych, uczenia maszynowego i innych scenariuszy danych big data.

Notes usługi Synapse umożliwia:

  • Rozpocznij pracę z zerowym nakładem pracy nad konfiguracją.
  • Zabezpieczanie danych za pomocą wbudowanych funkcji zabezpieczeń przedsiębiorstwa.
  • Analizowanie danych między nieprzetworzonymi formatami (CSV, txt, JSON itp.), przetworzonymi formatami plików (parquet, Delta Lake, ORC itp.) i plikami danych tabelarycznych SQL dla platform Spark i SQL.
  • Wydajniej dzięki ulepszonym funkcjom tworzenia i wbudowanym wizualizacjom danych.

W tym artykule opisano sposób używania notesów w programie Synapse Studio.

Tworzenie notesu

Istnieją dwa sposoby tworzenia notesu. Możesz utworzyć nowy notes lub zaimportować istniejący notes do obszaru roboczego usługi Synapse z Eksplorator obiektów. Notesy usługi Synapse rozpoznają standardowe pliki IPYNB notesu Jupyter Notebook.

Zrzut ekranu przedstawiający tworzenie nowego lub importowanie notesu

Tworzenie notesów

Notesy składają się z komórek, które są poszczególnymi blokami kodu lub tekstu, które mogą być uruchamiane niezależnie lub jako grupa.

Udostępniamy rozbudowane operacje tworzenia notesów:

Uwaga

W notesach jest automatycznie tworzona aplikacja SparkSession przechowywana w zmiennej o nazwie spark. Istnieje również zmienna sparkContext o nazwie sc. Użytkownicy mogą uzyskiwać bezpośredni dostęp do tych zmiennych i nie powinni zmieniać wartości tych zmiennych.

Dodawanie komórki

Istnieje wiele sposobów dodawania nowej komórki do notesu.

  1. Umieść kursor na przestrzeni między dwoma komórkami i wybierz pozycję Kod lub Markdown. Zrzut ekranu przedstawiający przycisk add-azure-notebook-cell-with-cell-button

  2. Użyj skrótów aznb w trybie polecenia. Naciśnij A , aby wstawić komórkę nad bieżącą komórką. Naciśnij B , aby wstawić komórkę poniżej bieżącej komórki.


Ustawianie języka podstawowego

Notesy usługi Synapse obsługują cztery języki platformy Apache Spark:

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

Język podstawowy można ustawić dla nowych dodanych komórek z listy rozwijanej na górnym pasku poleceń.

Zrzut ekranu przedstawiający język default-synapse

Używanie wielu języków

W jednym notesie można użyć wielu języków, określając poprawne polecenie magic języka na początku komórki. W poniższej tabeli wymieniono polecenia magiczne umożliwiające przełączanie języków komórek.

Polecenie Magic Język opis
%%pyspark Python Wykonaj zapytanie w języku Python względem kontekstu platformy Spark.
%%spark Scala Wykonaj zapytanie Scala względem kontekstu platformy Spark.
%%sql SparkSQL Wykonaj zapytanie SparkSQL względem kontekstu platformy Spark.
%%csharp .NET dla platformy Spark C# Wykonaj zapytanie platformy .NET dla platformy Spark w języku C# względem kontekstu platformy Spark.
%%sparkr R Wykonaj zapytanie języka R względem kontekstu platformy Spark.

Na poniższej ilustracji przedstawiono przykład sposobu pisania zapytania PySpark przy użyciu polecenia magic %%pyspark lub zapytania SparkSQL z poleceniem magic %%sql w notesie Spark(Scala). Zwróć uwagę, że język podstawowy notesu jest ustawiony na pySpark.

Zrzut ekranu przedstawiający polecenia magic platformy Spark usługi Synapse

Używanie tabel tymczasowych do odwołowania się do danych w różnych językach

Nie można odwoływać się do danych lub zmiennych bezpośrednio w różnych językach w notesie usługi Synapse. Na platformie Spark można odwoływać się do tabeli tymczasowej w różnych językach. Oto przykład sposobu odczytywania Scala ramki danych w PySpark tabeli tymczasowej Platformy Spark i SparkSQL używania jej jako obejścia.

  1. W komórce 1 odczytaj ramkę danych z łącznika puli SQL przy użyciu języka Scala i utwórz tabelę tymczasową.

    %%spark
    val scalaDataFrame = spark.read.sqlanalytics("mySQLPoolDatabase.dbo.mySQLPoolTable")
    scalaDataFrame.createOrReplaceTempView( "mydataframetable" )
    
  2. W komórce 2 wykonaj zapytanie dotyczące danych przy użyciu usługi Spark SQL.

    %%sql
    SELECT * FROM mydataframetable
    
  3. W komórce 3 użyj danych w PySpark.

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

IntelliSense w stylu IDE

Notesy usługi Synapse są zintegrowane z edytorem Monaco w celu wprowadzenia funkcji IntelliSense w stylu IDE do edytora komórek. Wyróżnianie składni, znacznik błędów i automatyczne uzupełnianie kodu ułatwia pisanie kodu i szybsze identyfikowanie problemów.

Funkcje funkcji IntelliSense są na różnych poziomach dojrzałości dla różnych języków. Skorzystaj z poniższej tabeli, aby zobaczyć, co jest obsługiwane.

Języki Wyróżnianie składni Znacznik błędu składniowego Uzupełnianie kodu składniowego Uzupełnianie kodu zmiennej Uzupełnianie kodu funkcji systemu Uzupełnianie kodu funkcji użytkownika Inteligentne wcięcie Składanie kodu
PySpark (Python) Tak Tak Tak Tak Tak Tak Tak Tak
Spark (Scala) Tak Tak Tak Tak Tak Tak - Tak
SparkSQL Tak Tak Tak Tak Tak - - -
.NET dla platformy Spark (C#) Tak Tak Tak Tak Tak Tak Tak Tak

Uwaga

Aktywna sesja platformy Spark jest wymagana, aby korzystać ze zmiennej uzupełniania kodu, uzupełniania kodu funkcji systemu, uzupełniania kodu funkcji użytkownika dla platformy .NET dla platformy Spark (C#).

Wstawki kodu

Notesy usługi Synapse udostępniają fragmenty kodu, które ułatwiają wprowadzanie często używanych wzorców kodu, takich jak konfigurowanie sesji platformy Spark, odczytywanie danych jako ramki danych platformy Spark lub rysowanie wykresów z biblioteką matplotlib itp.

Fragmenty kodu są wyświetlane w skrótów w stylu IDE IntelliSense mieszanej z innymi sugestiami. Zawartość fragmentów kodu jest zgodna z językiem komórek kodu. Dostępne fragmenty kodu można wyświetlić, wpisując fragment kodu lub dowolne słowa kluczowe wyświetlane w tytule fragmentu kodu w edytorze komórek kodu. Na przykład, wpisując odczyt , możesz wyświetlić listę fragmentów kodu do odczytu danych z różnych źródeł danych.

Animowany plik GIF fragmentów kodu usługi Synapse

Formatowanie komórki tekstowej za pomocą przycisków paska narzędzi

Za pomocą przycisków formatowania na pasku narzędzi komórek tekstowych można wykonywać typowe akcje markdown. Obejmuje ona pogrubienie tekstu, kursywę, akapit/nagłówki za pomocą listy rozwijanej, wstawianie kodu, wstawianie listy nieuporządkowanej, wstawianie listy uporządkowanej, wstawianie hiperłącza i wstawianie obrazu z adresu URL.

Zrzut ekranu przedstawiający pasek narzędzi komórki tekstowej usługi Synapse


Cofnij/Wykonaj ponownie operację komórki

Wybierz przycisk Cofnij / ponownie lub naciśnij Z / Shift+Z, aby odwołać najnowsze operacje komórek. Teraz możesz cofnąć/ponownie wykonać najnowsze 10 historycznych operacji komórek.

Zrzut ekranu przedstawiający cofanie komórek aznb w usłudze Synapse

Obsługiwane operacje cofania komórek:

  • Wstaw/Usuń komórkę: możesz odwołać operacje usuwania, wybierając pozycję Cofnij, zawartość tekstowa jest przechowywana wraz z komórką.
  • Zmień kolejność komórki.
  • Przełącz parametr.
  • Przekonwertuj między komórką Kodu i komórką markdown.

Uwaga

Operacje tekstowe w komórce i operacje komentowania komórek kodu nie są nie do cofnięcia. Teraz możesz cofnąć/ponownie wykonać najnowsze 10 historycznych operacji komórek.


Komentowanie komórki kodu

  1. Wybierz przycisk Komentarze na pasku narzędzi notesu, aby otworzyć okienko Komentarze .

    Zrzut ekranu przedstawiający przycisk komentarza usługi Synapse

  2. Wybierz kod w komórce kodu, kliknij pozycję Nowy w okienku Komentarze , dodaj komentarze, a następnie kliknij przycisk Opublikuj komentarz , aby zapisać.

    Zrzut ekranu przedstawiający nowy komentarz usługi Synapse

  3. Możesz wykonać polecenie Edytuj komentarz, Rozwiąż wątek lub Usuń, klikając przycisk Więcej oprócz komentarza.

    Zrzut ekranu przedstawiający komentarz edycji usługi Synapse


Przenoszenie komórki

Kliknij lewą stronę komórki i przeciągnij ją do żądanej pozycji. Animowany obraz GIF przedstawiający przenoszenie komórek usługi Synapse


Usuwanie komórki

Aby usunąć komórkę, wybierz przycisk Usuń po prawej stronie komórki.

Możesz również użyć skrótów w trybie polecenia. Naciśnij Shift+D , aby usunąć bieżącą komórkę.

Zrzut ekranu przedstawiający komórkę azure-notebook-delete-a


Zwiń dane wejściowe komórki

Wybierz wielokropek Więcej poleceń (...) na pasku narzędzi komórki i Ukryj dane wejściowe, aby zwinąć dane wejściowe bieżącej komórki. Aby ją rozwinąć, wybierz pozycję Pokaż dane wejściowe , gdy komórka jest zwinięta.

Animowany plik GIF danych wejściowych azure-notebook-collapse-cell-input


Zwiń dane wyjściowe komórki

Wybierz wielokropek Więcej poleceń (...) na pasku narzędzi komórki i Ukryj dane wyjściowe, aby zwinąć dane wyjściowe bieżącej komórki. Aby ją rozwinąć, wybierz pozycję Pokaż dane wyjściowe, gdy dane wyjściowe komórki są ukryte.

Animowany plik GIF z danymi wyjściowymi polecenia azure-notebook-collapse-cell-output


Konspekt notesu

Kontury (spis treści) przedstawia pierwszy nagłówek markdown dowolnej komórki markdown w oknie paska bocznego na potrzeby szybkiej nawigacji. Pasek boczny Kontury można zmieniać rozmiar i zwijać, aby dopasować ekran w najlepszy możliwy sposób. Możesz wybrać przycisk Konspektu na pasku poleceń notesu, aby otworzyć lub ukryć pasek boczny

Zrzut ekranu przedstawiający konspekt azure-notebook


Uruchamianie notesów

Komórki kodu można uruchamiać pojedynczo lub jednocześnie w notesie. Stan i postęp każdej komórki są reprezentowane w notesie.

Uwaga

Usunięcie notesu nie spowoduje automatycznego anulowania zadań, które są aktualnie uruchomione. Jeśli musisz anulować zadanie, przejdź do centrum monitorowania i anuluj je ręcznie.

Uruchamianie komórki

Istnieje kilka sposobów uruchamiania kodu w komórce.

  1. Zatrzymaj wskaźnik myszy na komórce, którą chcesz uruchomić, i wybierz przycisk Uruchom komórkę lub naciśnij Ctrl+Enter.

    Zrzut ekranu przedstawiający polecenie run-cell-1

  2. Użyj skrótów w trybie polecenia. Naciśnij Shift+Enter, aby uruchomić bieżącą komórkę i wybrać komórkę poniżej. Naciśnij Alt+Enter , aby uruchomić bieżącą komórkę i wstawić nową komórkę poniżej.


Uruchamianie wszystkich komórek

Wybierz przycisk Uruchom wszystko, aby uruchomić wszystkie komórki w bieżącym notesie w sekwencji.

Zrzut ekranu przedstawiający komórki typu run-all-cell

Uruchom wszystkie komórki powyżej lub poniżej

Rozwiń listę rozwijaną z przycisku Uruchom wszystko , a następnie wybierz pozycję Uruchom komórki powyżej , aby uruchomić wszystkie komórki powyżej bieżącej kolejności. Wybierz pozycję Uruchom komórki poniżej , aby uruchomić wszystkie komórki poniżej bieżącej sekwencji.

Zrzut ekranu przedstawiający pozycję azure-notebook-run-cells-above-or-below


Anuluj wszystkie uruchomione komórki

Wybierz przycisk Anuluj wszystko, aby anulować uruchomione komórki lub komórki oczekujące w kolejce. Zrzut ekranu przedstawiający komórki azure-notebook-cancel-all-cells


Dokumentacja notesu

Możesz użyć %run <notebook path> polecenia magic, aby odwołać się do innego notesu w kontekście bieżącego notesu. Wszystkie zmienne zdefiniowane w notesie odniesienia są dostępne w bieżącym notesie. %run polecenie magic obsługuje zagnieżdżone wywołania, ale nie obsługuje wywołań cyklicznych. Otrzymasz wyjątek, jeśli głębokość instrukcji jest większa niż pięć.

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

Dokumentacja notesu działa zarówno w trybie interaktywnym, jak i w potoku usługi Synapse.

Uwaga

  • %run Polecenie obecnie obsługuje tylko przekazywanie ścieżki bezwzględnej lub nazwy notesu tylko jako parametru, ścieżka względna nie jest obsługiwana.
  • %runPolecenie obecnie obsługuje tylko 4 typy wartości parametrów: int, , floatbool, , string, zmienna operacja zamiany nie jest obsługiwana.
  • Do opublikowania odwołanych notesów są wymagane. Musisz opublikować notesy, aby odwoływać się do nich, chyba że włączono odwołanie do nieopublikowanego notesu . Program Synapse Studio nie rozpoznaje nieopublikowanych notesów z repozytorium Git.
  • Przywołyne notesy nie obsługują instrukcji, że głębokość jest większa niż pięć.

Eksplorator zmiennych

Notes usługi Synapse udostępnia wbudowanego eksploratora zmiennych, aby wyświetlić listę nazw zmiennych, typów, długości i wartości w bieżącej sesji platformy Spark dla komórek PySpark (Python). Więcej zmiennych jest wyświetlanych automatycznie w miarę ich definiowania w komórkach kodu. Kliknięcie każdego nagłówka kolumny sortuje zmienne w tabeli.

Możesz wybrać przycisk Zmienne na pasku poleceń notesu, aby otworzyć lub ukryć eksploratora zmiennych.

Zrzut ekranu przedstawiający eksploratora zmiennych azure-notebook

Uwaga

Eksplorator zmiennych obsługuje tylko język Python.


Wskaźnik stanu komórki

Stan wykonywania komórki krok po kroku jest wyświetlany pod komórką, aby ułatwić wyświetlenie bieżącego postępu. Po zakończeniu przebiegu komórki zostanie wyświetlone podsumowanie wykonania z łącznym czasem trwania i czasem zakończenia, które będzie przechowywane w celu uzyskania przyszłego odwołania.

Zrzut ekranu przedstawiający stan komórki

Wskaźnik postępu platformy Spark

Notes usługi Synapse jest oparty wyłącznie na platformie Spark. Komórki kodu są wykonywane zdalnie w bezserwerowej puli platformy Apache Spark. Wskaźnik postępu zadania platformy Spark jest dostarczany z paskiem postępu w czasie rzeczywistym, który ułatwia zrozumienie stanu wykonywania zadania. Liczba zadań na każde zadanie lub etap ułatwiają zidentyfikowanie równoległego poziomu zadania platformy Spark. Możesz również przejść do szczegółów interfejsu użytkownika platformy Spark określonego zadania (lub etapu), wybierając link w nazwie zadania (lub etapu).

Zrzut ekranu przedstawiający wskaźnik postępu platformy Spark

Konfiguracja sesji platformy Spark

Możesz określić czas trwania limitu czasu, liczbę i rozmiar funkcji wykonawczych, które mają być podane dla bieżącej sesji platformy Spark w obszarze Konfigurowanie sesji. Uruchom ponownie sesję platformy Spark, aby zmiany konfiguracji zaczęły obowiązywać. Wszystkie buforowane zmienne notesu są czyszczone.

Konfigurację można również utworzyć na podstawie konfiguracji platformy Apache Spark lub wybrać istniejącą konfigurację. Aby uzyskać szczegółowe informacje, zapoznaj się z artykułem Zarządzanie konfiguracją platformy Apache Spark.

Zrzut ekranu przedstawiający zarządzanie sesjami

Polecenie magic konfiguracji sesji platformy Spark

Ustawienia sesji platformy Spark można również określić za pomocą polecenia magic %%configure. Aby wprowadzić efekt ustawień, należy ponownie uruchomić sesję platformy Spark. Zalecamy uruchomienie narzędzia %%configure na początku notesu. Oto przykład, zapoznaj się z https://github.com/cloudera/livy#request-body pełną listą prawidłowych parametrów.

%%configure
{
    //You can get a list of valid parameters to config 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 standard spark property, to find more available properties please visit:https://spark.apache.org/docs/latest/configuration.html#application-properties.
        "spark.driver.maxResultSize":"10g",
    //Example of customized property, you can specify count of lines that Spark SQL returns by configuring "livy.rsc.sql.num-rows".
        "livy.rsc.sql.num-rows":"3000" 
    }
}

Uwaga

  • Zaleca się ustawienie wartości "DriverMemory" i "ExecutorMemory" jako tej samej wartości w konfiguracji %%configure, więc należy wykonać polecenia "driverCores" i "executorCores".
  • Możesz użyć %%configure w potokach usługi Synapse, ale jeśli nie jest ona ustawiona w pierwszej komórce kodu, uruchomienie potoku zakończy się niepowodzeniem z powodu niemożności ponownego uruchomienia sesji.
  • Narzędzie %%configure używane w pliku mssparkutils.notebook.run będzie ignorowane, ale używane w notesie %run będzie kontynuowane.
  • Standardowe właściwości konfiguracji platformy Spark muszą być używane w treści "conf". Nie obsługujemy odwołania pierwszego poziomu do właściwości konfiguracji platformy Spark.
  • Niektóre specjalne właściwości platformy Spark, w tym "spark.driver.cores", "spark.executor.cores", "spark.driver.memory", "spark.executor.memory", "spark.executor.instances" nie zostaną zastosowane w treści "conf".

Konfiguracja sparametryzowanej sesji z potoku

Konfiguracja sparametryzowanej sesji umożliwia zastąpienie wartości w %%configure magic parametrami uruchomienia potoku (działanie notesu). Podczas przygotowywania komórki kodu %%configure można zastąpić wartości domyślne (również konfigurowalne, 4 i "2000" w poniższym przykładzie) za pomocą obiektu w następujący sposób:

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

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

Notes używa wartości domyślnej, jeśli uruchom notes w trybie interaktywnym bezpośrednio lub żaden parametr zgodny z parametrem "activityParameterName" jest podawany z działania notesu potoku.

W trybie uruchamiania potoku można skonfigurować ustawienia działania notesu potoku w następujący sposób: Zrzut ekranu przedstawiający sparametryzowaną konfigurację sesji

Jeśli chcesz zmienić konfigurację sesji, nazwa parametrów działania notesu potoku powinna być taka sama jak activityParameterName w notesie. Podczas uruchamiania tego potoku w tym przykładzie driverCores w konfiguracji %%configure zostanie zastąpiony przez 8, a wiersze livy.rsc.sql.num zostaną zastąpione przez 4000.

Uwaga

Jeśli potok uruchamiania nie powiódł się z powodu użycia tej nowej konfiguracji %%configure magic, możesz sprawdzić więcej informacji o błędzie, uruchamiając %%configure magic cell w trybie interaktywnym notesu.

Przenoszenie danych do notesu

Dane można załadować z usługi Azure Blob Storage, Azure Data Lake Store Gen 2 i puli SQL, jak pokazano w poniższych przykładach kodu.

Odczytywanie pliku CSV z usługi Azure Data Lake Store Gen2 jako ramki danych Platformy Spark

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')

Odczytywanie woluminu CSV z usługi Azure Blob Storage jako ramki danych platformy Spark


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 Blob 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)

Odczytywanie danych z podstawowego konta magazynu

Dostęp do danych można uzyskać bezpośrednio na podstawowym koncie magazynu. Nie ma potrzeby podawania kluczy tajnych. W Eksploratorze danych kliknij prawym przyciskiem myszy plik i wybierz pozycję Nowy notes , aby wyświetlić nowy notes z automatycznie wygenerowanym funkcją wyodrębniania danych.

Zrzut ekranu przedstawiający dane do komórki

Widżety IPython

Widżety to zdarzenia obiektów języka Python, które mają reprezentację w przeglądarce, często jako kontrolka, taka jak suwak, pole tekstowe itp. Widżety IPython działają tylko w środowisku języka Python, nie są jeszcze obsługiwane w innych językach (na przykład Scala, SQL, C#).

Aby użyć widżetu IPython

  1. Najpierw należy zaimportować ipywidgets moduł, aby użyć struktury widżetu Jupyter.

    import ipywidgets as widgets
    
  2. Funkcja najwyższego poziomu display umożliwia renderowanie widżetu lub pozostawienie wyrażenia typu widżetu w ostatnim wierszu komórki kodu.

    slider = widgets.IntSlider()
    display(slider)
    
    slider = widgets.IntSlider()
    slider
    
  3. Uruchom komórkę, a widżet zostanie wyświetlony w obszarze danych wyjściowych.

    Zrzut ekranu przedstawiający suwak widżetów ipython

  4. Można użyć wielu display() wywołań, aby wielokrotnie renderować to samo wystąpienie widżetu, ale pozostają zsynchronizowane ze sobą.

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

    Zrzut ekranu przedstawiający suwaki widżetów ipython

  5. Aby renderować dwa widżety niezależnie od siebie, utwórz dwa wystąpienia widżetów:

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

Obsługiwane widżety

Typ widżetów Widgety
Widżety liczbowe IntSlider, FloatSlider, FloatLogSlider, IntRangeSlider, FloatRangeSlider, IntProgress, FloatProgress, BoundedIntText, BoundedFloatText, IntText, FloatText
Widżety logiczne PrzełącznikButton, pole wyboru, prawidłowe
Widżety wyboru Lista rozwijana, RadioButtons, Select, SelectionSlider, SelectionRangeSlider, ToggleButtons, SelectMultiple
Widżety ciągów Tekst, obszar tekstowy, pole kombi, hasło, etykieta, HTML, matematyka HTML, obraz, przycisk
Widżety odtwarzania (animacja) Selektor dat, selektor kolorów, kontroler
Widżety kontenera/układu Box, HBox, VBox, GridBox, Accordion, Tabs, Stacked

Znane ograniczenia

  1. Następujące widżety nie są jeszcze obsługiwane. Możesz wykonać odpowiednie obejście, jak pokazano poniżej:

    Funkcje Rozwiązanie
    Output widżet Zamiast tego można użyć print() funkcji do zapisania tekstu w stdout.
    widgets.jslink() Funkcja umożliwia widgets.link() łączenie dwóch podobnych widżetów.
    FileUpload widżet Jeszcze nie obsługuje.
  2. Funkcja globalna display udostępniana przez usługę Synapse nie obsługuje wyświetlania wielu widżetów w jednym wywołaniu (czyli display(a, b)), która różni się od funkcji IPython display .

  3. Jeśli zamkniesz notes zawierający widżet IPython, nie będzie można zobaczyć ani wchodzić z nim w interakcję, dopóki nie wykonasz odpowiedniej komórki ponownie.


Zapisywanie notesów

Możesz zapisać jeden notes lub wszystkie notesy w obszarze roboczym.

  1. Aby zapisać zmiany wprowadzone w jednym notesie, wybierz przycisk Publikuj na pasku poleceń notesu.

    Zrzut ekranu przedstawiający notes publikowania

  2. Aby zapisać wszystkie notesy w obszarze roboczym, wybierz przycisk Opublikuj wszystko na pasku poleceń obszaru roboczego.

    Zrzut ekranu przedstawiający publikowanie wszystkich

We właściwościach notesu można skonfigurować, czy podczas zapisywania mają być uwzględniane dane wyjściowe komórki.

Zrzut ekranu przedstawiający właściwości notesu

Polecenia magiczne

W notesach usługi Synapse można używać znanych poleceń magicznych programu Jupyter. Przejrzyj poniższą listę jako bieżące dostępne polecenia magic. Poinformuj nas o swoich przypadkach użycia w usłudze GitHub , abyśmy mogli nadal tworzyć więcej poleceń magicznych, aby spełnić Twoje potrzeby.

Uwaga

Tylko następujące polecenia magic są obsługiwane w potoku usługi Synapse: %%pyspark, %%spark, %%csharp, %%sql.

Dostępne magie wierszy: %lsmagic, %time, %timeit, %history, %run, %load

Dostępne magie komórek: %%time, %%timeit, %%capture, %%writefile, %%sql, %%pyspark, %%spark, %%csharp, %%html, %%configure


Odwołanie do nieopublikowanego notesu

Odwołanie do nieopublikowanego notesu jest przydatne, gdy chcesz debugować "lokalnie", podczas włączania tej funkcji, uruchomienie notesu pobiera bieżącą zawartość w pamięci podręcznej sieci Web, jeśli uruchamiasz komórkę zawierającą instrukcję notesów referencyjnych, odwołujesz się do prezentowania notesów w bieżącej przeglądarce notesów zamiast zapisanych wersji w klastrze, co oznacza, że zmiany w edytorze notesów mogą być odwoływane natychmiast przez inne notesy bez konieczności publikowania (tryb live) lub zatwierdzone( Tryb Git), korzystając z tego podejścia, można łatwo uniknąć zanieczyszczania popularnych bibliotek podczas opracowywania lub debugowania.

Notes nieopublikowany można włączyć w panelu Właściwości:

Zrzut ekranu przedstawiający odwołanie do notesu

W przypadku porównania różnych przypadków zapoznaj się z poniższą tabelą:

Zwróć uwagę, że polecenie %run i mssparkutils.notebook.run ma takie samo zachowanie tutaj. %run Użyjemy tutaj jako przykładu.

Przypadek Wyłącz Włącz
Tryb na żywo
- Nb1 (opublikowany)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie opublikowanej wersji Nb1
- Nb1 (nowy)
%run Nb1
Błąd Uruchamianie nowej Nb1
- Nb1 (wcześniej opublikowane, edytowane)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie edytowanej wersji Nb1
Tryb Git
- Nb1 (opublikowany)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie opublikowanej wersji Nb1
- Nb1 (nowy)
%run Nb1
Błąd Uruchamianie nowej Nb1
- Nb1 (Nie opublikowano, zatwierdzone)
%run Nb1
Błąd Uruchamianie zatwierdzonego Nb1
- Nb1 (wcześniej opublikowane, zatwierdzone)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie zatwierdzonej wersji Nb1
- Nb1 (wcześniej opublikowane, nowe w bieżącej gałęzi)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie nowej Nb1
- Nb1 (Nie opublikowano, wcześniej zatwierdzone, edytowane)
%run Nb1
Błąd Uruchamianie edytowanej wersji Nb1
- Nb1 (wcześniej opublikowane i zatwierdzone, edytowane)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie edytowanej wersji Nb1

Podsumowanie

  • Jeśli ta wersja jest wyłączona, zawsze uruchamiaj opublikowaną wersję.
  • Jeśli to ustawienie jest włączone, uruchomienie odwołania będzie zawsze przyjmować bieżącą wersję notesu, którą można zobaczyć w środowisku użytkownika notesu.

Aktywne zarządzanie sesjami

Sesje notesu można używać wygodniej bez konieczności uruchamiania nowych. Notes usługi Synapse obsługuje teraz zarządzanie aktywnymi sesjami na liście Zarządzanie sesjami . Wszystkie sesje są widoczne w bieżącym obszarze roboczym uruchomionym przez Ciebie z poziomu notesu.

Zrzut ekranu przedstawiający sesje zarządzania notesami

Na liście Aktywne sesje można wyświetlić informacje o sesji i odpowiedni notes, który jest obecnie dołączony do sesji. Możesz pracować w trybie Odłącz za pomocą notesu, Zatrzymaj sesję i Widok w monitorowaniu tutaj. Ponadto możesz łatwo połączyć wybrany notes z aktywną sesją na liście uruchomioną z innego notesu, sesja jest odłączona od poprzedniego notesu (jeśli nie jest bezczynna), a następnie dołączyć do bieżącego notesu.

Zrzut ekranu przedstawiający listę sesji notesu

Rejestrowanie języka Python w notesie

Dzienniki języka Python można znaleźć i ustawić różne poziomy dziennika oraz sformatować, postępując zgodnie z poniższym przykładowym kodem:

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 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 use 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 use 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")

Wyświetlanie historii poleceń wejściowych

Notes usługi Synapse obsługuje polecenie %history magic, aby wydrukować historię poleceń wejściowych, która jest wykonywana w bieżącej sesji, w porównaniu ze standardowym poleceniem %history Jupyter Ipython, które działa dla wielu języków kontekstu w notesie.

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

Opcje:

  • -n: Numer wykonania wydruku.

Gdzie zakres może być:

  • N: Drukuj kod Nth wykonanej komórki.
  • M-N: Drukuj kod z Mth na Nth wykonaną komórkę.

Przykład:

  • Drukuj historię danych wejściowych z 1 do drugiej wykonanej komórki: %history -n 1-2

Integrowanie notesu

Dodawanie notesu do potoku

Wybierz przycisk Dodaj do potoku w prawym górnym rogu, aby dodać notes do istniejącego potoku lub utworzyć nowy potok.

Zrzut ekranu przedstawiający dodawanie notesu do potoku

Wyznaczanie komórki parametrów

Aby sparametryzować notes, wybierz wielokropek (...) w celu uzyskania dostępu do większej liczby poleceń na pasku narzędzi komórki. Następnie wybierz pozycję Przełącz komórkę parametru, aby wyznaczyć komórkę jako komórkę parametrów.

Zrzut ekranu przedstawiający parametr przełącznika azure-notebook


Usługa Azure Data Factory wyszukuje komórkę parametrów i traktuje tę komórkę jako wartości domyślne parametrów przekazanych w czasie wykonywania. Aparat wykonywania dodaje nową komórkę pod komórką parameters z parametrami wejściowymi, aby zastąpić wartości domyślne.

Przypisywanie wartości parametrów z potoku

Po utworzeniu notesu z parametrami możesz go wykonać z potoku za pomocą działania Notes usługi Synapse. Po dodaniu działania do kanwy potoku będzie można ustawić wartości parametrów w sekcji Podstawowe parametry na karcie Ustawienia .

Zrzut ekranu przedstawiający przypisywanie parametru

Podczas przypisywania wartości parametrów można użyć języka wyrażeń potoku lub zmiennych systemowych.

Klawisze skrótów

Podobnie jak w przypadku notesów Jupyter Notebook, notesy usługi Synapse mają modalny interfejs użytkownika. Klawiatura wykonuje różne czynności w zależności od trybu, w którym znajduje się komórka notesu. Notesy usługi Synapse obsługują następujące dwa tryby dla danej komórki kodu: tryb polecenia i tryb edycji.

  1. Komórka jest w trybie polecenia, gdy nie ma kursora tekstowego z monitem o wpisanie. Gdy komórka jest w trybie polecenia, możesz edytować notes jako całość, ale nie wpisywać w poszczególnych komórkach. Wprowadź tryb polecenia, naciskając ESC lub używając myszy, aby zaznaczyć poza obszarem edytora komórki.

    Zrzut ekranu przedstawiający tryb poleceń

  2. Tryb edycji jest wskazywany przez kursor tekstowy z monitem o wpisanie w obszarze edytora. Gdy komórka jest w trybie edycji, możesz wpisać w komórce. Wprowadź tryb edycji, naciskając Enter lub używając myszy, aby wybrać obszar edytora komórki.

    Zrzut ekranu przedstawiający tryb edycji

skrótów w trybie polecenia

Akcja Skróty notesu usługi Synapse
Uruchom bieżącą komórkę i wybierz poniżej Shift+Enter
Uruchom bieżącą komórkę i wstaw poniżej Alt+Enter
Uruchamianie bieżącej komórki Ctrl+Enter
Zaznacz komórkę powyżej W górę
Wybierz komórkę poniżej W dół
Wybierz poprzednią komórkę tys.
Wybierz następną komórkę J
Wstaw komórkę powyżej A
Wstaw komórkę poniżej B
Usuń zaznaczone komórki Shift+D
Przełącz do trybu edycji Enter

skrótów w trybie edycji

Korzystając z poniższych skrótów klawiszowych, można łatwiej nawigować i uruchamiać kod w notesach usługi Synapse w trybie edycji.

Akcja Skróty notesu usługi Synapse
Przenieś kursor w górę W górę
Przenieś kursor w dół W dół
Cofnij Ctrl + Z
Ponów Ctrl + Y
Komentarz/usuwanie komentarza Ctrl + /
Usuń wyraz przed Ctrl + Backspace
Usuń wyraz po Ctrl + Delete
Przejdź do początku komórki Ctrl + Strona główna
Przejdź do końca komórki Ctrl + koniec
Przejdź jeden wyraz w lewo Ctrl + w lewo
Przejdź jeden wyraz w prawo Ctrl + w prawo
Wybierz wszystko Ctrl + A
Wcięcie Ctrl +]
Wcięcie Ctrl + [
Przełączanie do trybu poleceń Esc

Następne kroki