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 używania szybkich eksperymentów w celu uzyskania szczegółowych informacji z danych. Notesy są również powszechnie 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 w nieprzetworzonych formatach (CSV, txt, JSON itp.), przetworzonych formatach plików (parquet, Delta Lake, ORC itp.) i plikach danych tabelarycznych SQL dla platform Spark i SQL.
  • Wydajniej dzięki ulepszonym możliwościom tworzenia i wbudowanym wizualizacjom danych.

W tym artykule opisano sposób używania notesów w 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 Jupyter Notebook IPYNB.

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 zaawansowane operacje tworzenia notesów:

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 klawiszy skrótów aznb w trybie polecenia. Naciśnij klawisz A , aby wstawić komórkę nad bieżącą komórką. Naciśnij klawisz 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)

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

Zrzut ekranu przedstawiający język default-synapse

Korzystanie z 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 magic 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 języka Scala względem kontekstu platformy Spark.
%%sql SparkSQL Wykonaj zapytanie SparkSQL względem kontekstu platformy Spark.
%%csharp Platforma .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ływanie się do danych w różnych językach

Nie można odwoływać się do danych ani 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 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")
    

Funkcja 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łatwiają pisanie kodu i szybsze identyfikowanie problemów.

Funkcje 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ładni 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ć z uzupełniania kodu zmiennej, 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 typowych wzorców kodu, takich jak konfigurowanie sesji platformy Spark, odczytywanie danych jako ramki danych platformy Spark lub rysowanie wykresów za pomocą biblioteki matplotlib itp.

Fragmenty kodu są wyświetlane w klawiszach skrótów stylu ŚRODOWISKA IDE IntelliSense zmieszanych 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 odczytywania 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

Możesz użyć przycisków formatowania na pasku narzędzi komórek tekstowych do wykonywania typowych akcji języka znaczników markdown. Obejmuje on pogrubienie tekstu, kursywę, akapit/nagłówki za pomocą listy rozwijanej, wstawianie kodu, wstawianie listy nieuporządkowanej, wstawianie listy uporządkowanej, wstawianie hiperlinku 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 klawisze Z / Shift+Z , aby odwołać najnowsze operacje na komórkach. Teraz możesz cofnąć/ponownie wykonać maksymalnie 10 najnowszych operacji historycznych komórek.

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

Obsługiwane operacje cofania komórek:

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

Uwaga

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


Komentowanie komórek 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 przenoszenia 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ć klawiszy skrótów w trybie polecenia. Naciśnij klawisze Shift+D , aby usunąć bieżącą komórkę.

Zrzut ekranu przedstawiający polecenie azure-notebook-delete-a-cell


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 z danymi wejściowymi typu


Zwiń dane wyjściowe komórki

Wybierz wielokropek Więcej poleceń (...) na pasku narzędzi komórek 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 przedstawiający element 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 zmienić 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 naraz w notesie. Stan i postęp każdej komórki są reprezentowane w notesie.

Uruchamianie komórki

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

  1. Umieść kursor na komórce, którą chcesz uruchomić, i wybierz przycisk Uruchom komórkę lub naciśnij klawisze Ctrl+Enter.

    Zrzut ekranu przedstawiający polecenie run-cell-1

  2. Użyj klawiszy skrótów w trybie polecenia. Naciśnij klawisze Shift+Enter , aby uruchomić bieżącą komórkę i wybrać komórkę poniżej. Naciśnij klawisze 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 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 w sekwencji. Wybierz pozycję Uruchom komórki poniżej , aby uruchomić wszystkie komórki poniżej bieżącej sekwencji.

Zrzut ekranu przedstawiający polecenie 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 referencyjnym 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 w trybie interaktywnym i 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, stringoperacja zamiany zmiennej 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 opcję Odwołaj się do notesu nieopublikowanego . 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 będzie wyświetlanych automatycznie, ponieważ są zdefiniowane w komórkach kodu. Kliknięcie każdego nagłówka kolumny spowoduje posortowanie zmiennych w tabeli.

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

Zrzut ekranu przedstawiający narzędzie azure-notebook-variable-explorer

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 uruchamiania komórki zostanie wyświetlone podsumowanie wykonania z łącznym czasem trwania i czasem zakończenia, które będzie przechowywane w przyszłości.

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, co ułatwia zrozumienie stanu wykonywania zadania. Liczba zadań na każde zadanie lub etap ułatwiają zidentyfikowanie poziomu równoległego zadania platformy Spark. Możesz również dokładniej przejść do 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ć nadawane 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 tematem 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 magicznego %%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ę https://github.com/cloudera/livy#request-body z 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 %%, więc należy wykonać polecenia "driverCores" i "executorCores".
  • Możesz użyć elementu %%configure w potokach usługi Synapse, ale jeśli nie jest ustawiona w pierwszej komórce kodu, uruchomienie potoku zakończy się niepowodzeniem z powodu niemożności ponownego uruchomienia sesji.
  • Konfiguracja %%configure używana w mssparkutils.notebook.run zostanie zignorowana, ale używana w notesie %run będzie kontynuować wykonywanie.
  • 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, takie jak "spark.driver.cores", "spark.executor.cores", "spark.driver.memory", "spark.executor.memory", "spark.executor.instances" nie będą obowiązywać w treści "conf".

Konfiguracja sesji sparametryzowanej z potoku

Konfiguracja sesji sparametryzowanej 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żyje wartości domyślnej, jeśli uruchom notes w trybie interaktywnym bezpośrednio lub nie zostanie podany żaden parametr zgodny z parametrem "activityParameterName" 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 zostaną zastąpione przez 8, a wiersze livy.rsc.sql.num zostaną zastąpione przez 4000.

Uwaga

Jeśli uruchamianie potoku nie powiodło się z powodu użycia tej nowej magii %%configure, 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 Azure Blob Storage, usługi 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 pliku CSV z 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 Data Explorer kliknij prawym przyciskiem myszy plik i wybierz pozycję Nowy notes, aby wyświetlić nowy notes z automatycznie wygenerowaną 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, ale nie są jeszcze obsługiwane w innych językach (np. Scala, SQL, C#).

Aby użyć widżetu IPython

  1. Najpierw należy zaimportować ipywidgets moduł, aby korzystać z platformy widżetów Jupyter.

    import ipywidgets as widgets
    
  2. Możesz użyć funkcji najwyższego poziomu display do renderowania widżetu lub pozostawić wyrażenie typu widżetu w ostatnim wierszu komórki kodu.

    slider = widgets.IntSlider()
    display(slider)
    
    slider = widgets.IntSlider()
    slider
    
  3. Uruchom komórkę. 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ń do renderowania tego samego wystąpienia widżetu wiele razy, ale pozostaną one 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 Widżety
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 tekstu, 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:

    Funkcjonalność Obejście
    Output Widget Zamiast tego możesz użyć print() funkcji do zapisania tekstu w obiekcie stdout.
    widgets.jslink() Funkcji można użyć widgets.link() do łączenia dwóch podobnych widżetów.
    FileUpload Widget Nieobsługij jeszcze.
  2. Funkcja globalna display udostępniana przez usługę Synapse nie obsługuje wyświetlania wielu widżetów w wywołaniu 1 (tj. display(a, b)), co 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 publikowanie notesu

  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

W potoku usługi Synapse są obsługiwane tylko następujące polecenia magiczne: %%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 spowoduje pobranie bieżącej zawartości w pamięci podręcznej sieci Web. Jeśli uruchomisz 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ć od razu przywoływane przez inne notesy bez konieczności publikowania (tryb na żywo) lub zatwierdzone (tryb Git), korzystając z tego podejścia, można łatwo uniknąć zanieczyszczania popularnych bibliotek podczas procesu opracowywania lub debugowania.

Możesz włączyć notes Odwołaj się do nieopublikowanego odwołania z panelu Właściwości:

Zrzut ekranu przedstawiający odwołanie do notesu

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

Zwróć uwagę, że polecenie %run i mssparkutils.notebook.run ma takie samo zachowanie tutaj. W tym miejscu użyto %run przykładu.

Sprawa 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 nowego 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 nowego 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 nowego 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 to ustawienie jest wyłączone, zawsze uruchamiaj opublikowaną wersję.
  • Jeśli to ustawienie jest włączone, priorytet to: edytowany/nowy > zatwierdzony > opublikowany.

Zarządzanie sesjami aktywnymi

Sesje notesu można teraz wygodnie używać 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 notesem

Na liście Aktywne sesje można wyświetlić informacje o sesji i odpowiedni notes, który jest obecnie dołączony do sesji. W tym miejscu można obsługiwać operacje Odłączanie za pomocą notesu, Zatrzymywanie sesji i Wyświetlanie w obszarze monitorowania. Ponadto możesz łatwo połączyć wybrany notes z aktywną sesją na liście uruchomionej z innego notesu, sesja zostanie odłączona od poprzedniego notesu (jeśli nie jest bezczynna), a następnie dołącz do bieżącego.

Zrzut ekranu przedstawiający listę sesji notesu

Rejestrowanie w języku 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")

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 (...) , aby uzyskać dostęp 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 przełącznik-parametr azure-notebook


Azure Data Factory wyszukuje komórkę parametrów i traktuje tę komórkę jako wartość domyślną parametrów przekazywanych w czasie wykonywania. Aparat wykonywania doda 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 wykonać go z potoku za pomocą działania notesu 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 różni się 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ć do poszczególnych komórek. Wprowadź tryb polecenia, naciskając ESC lub używając myszy, aby wybrać 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

Klawisze 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ę K
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łączanie do trybu edycji Enter

Klawisze skrótów w trybie edycji

Korzystając z poniższych skrótów klawiszowych, możesz ł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/komentarz 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ź do jednego wyrazu w lewo Ctrl + Lewa
Przejdź do jednego słowa w prawo Ctrl + Prawy
Zaznacz wszystko Ctrl + A
Wcięcie Ctrl +]
Wcięcie Ctrl + [
Przełączanie do trybu poleceń Esc

Następne kroki