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

Notes 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ą.
  • Zapewnianie bezpieczeństwa danych dzięki wbudowanym funkcjom zabezpieczeń przedsiębiorstwa.
  • Analizowanie danych w nieprzetworzonych formatach (takich jak CSV, TXT i JSON), przetworzonych formatach plików (takich jak Parquet, Delta Lake i ORC) oraz plikach danych tabelarycznych SQL względem 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

Możesz utworzyć nowy notes lub zaimportować istniejący notes do obszaru roboczego usługi Synapse z Eksplorator obiektów. Wybierz pozycję Programowanie, kliknij prawym przyciskiem myszy pozycję Notesy, a następnie wybierz pozycję Nowy notes lub Importuj. Notesy usługi Synapse rozpoznają standardowe pliki IPYNB notesu Jupyter Notebook.

Zrzut ekranu przedstawiający opcje tworzenia lub importowania notesu.

Tworzenie notesów

Notesy składają się z komórek, które są poszczególnymi blokami kodu lub tekstu, które można uruchamiać niezależnie lub jako grupę.

W poniższych sekcjach opisano operacje tworzenia notesów:

Uwaga

W notesach SparkSession wystąpienie jest tworzone automatycznie i przechowywane w zmiennej o nazwie spark. Istnieje również zmienna o SparkContext nazwie sc. Użytkownicy mogą uzyskiwać bezpośredni dostęp do tych zmiennych, ale nie powinni zmieniać wartości tych zmiennych.

Dodawanie komórki

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

  • Umieść kursor na przestrzeni między dwoma komórkami i wybierz pozycję Kod lub Markdown.

    Zrzut ekranu przedstawiający przyciski Code i Markdown w notesie usługi Synapse.

  • Użyj skrótów w trybie polecenia. Wybierz klucz A, aby wstawić komórkę nad bieżącą komórką. Wybierz klucz 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 nowo dodanych komórek z listy rozwijanej Język na górnym pasku poleceń.

Zrzut ekranu przedstawiający listę rozwijaną wybierania języka w notesie usługi 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 Uruchom zapytanie w języku Python względem SparkContextelementu .
%%spark Scala Uruchom zapytanie Scala względem SparkContextelementu .
%%sql Spark SQL Uruchom zapytanie Spark SQL względem SparkContextelementu .
%%csharp .NET dla platformy Spark C# Uruchom zapytanie platformy .NET dla języka C# platformy Spark względem SparkContext.
%%sparkr R Uruchom zapytanie języka R względem SparkContext.

Na poniższej ilustracji przedstawiono przykład sposobu pisania zapytania PySpark przy użyciu polecenia magic lub zapytania Spark SQL przy %%pyspark użyciu polecenia magic przy użyciu %%sql polecenia magic w notesie Spark (Scala). Język podstawowy notesu jest ustawiony na PySpark.

Zrzut ekranu przedstawiający polecenia magiczne platformy Spark w notesie 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 ani zmiennych bezpośrednio w różnych językach w notesie usługi Synapse. Na platformie Spark możesz odwoływać się do tabeli tymczasowej w różnych językach. Oto przykład sposobu odczytywania ramki danych Scala w PySpark i Spark SQL przy użyciu tabeli tymczasowej Spark 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")
    

Używanie funkcji 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. Funkcje wyróżniania składni, znacznika błędów i automatycznego uzupełniania kodu ułatwiają 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 Nie Tak
Spark SQL Tak Tak Tak Tak Tak Nie. Nie. Nie.
.NET dla platformy Spark (C#) Tak Tak Tak Tak Tak Tak Tak Tak

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

Używanie fragmentów kodu

Notesy usługi Synapse udostępniają fragmenty kodu, które ułatwiają wprowadzanie często używanych wzorców kodu. Te wzorce obejmują konfigurowanie sesji platformy Spark, odczytywanie danych jako ramki danych platformy Spark i rysowanie wykresów przy użyciu biblioteki Matplotlib.

Fragmenty kodu są wyświetlane w skrótów funkcji IntelliSense w stylu IDE w połączeniu z innymi sugestiami. Zawartość fragmentów kodu jest zgodna z językiem komórek kodu. Dostępne fragmenty kodu można wyświetlić, wprowadzając fragment kodu lub dowolne słowa kluczowe, które pojawiają się w tytule fragmentu kodu w edytorze komórek kodu. Na przykład wprowadzają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 w notesie usługi Synapse.

Formatowanie komórek tekstowych przy użyciu przycisków paska narzędzi

Aby wykonać typowe akcje języka Markdown, możesz użyć przycisków formatowania na pasku narzędzi komórki tekstowej. Akcje te obejmują pogrubienie tekstu, kursywę tekstu, tworzenie akapitów i nagłówków za pomocą menu rozwijanego, wstawianie kodu, wstawianie listy nieuporządkowanej, wstawianie uporządkowanej listy, wstawianie hiperlinku i wstawianie obrazu z adresu URL.

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

Cofnij lub wykonaj ponownie operację komórki

Aby odwołać najnowsze operacje komórek, wybierz przycisk Cofnij lub Wykonaj ponownie albo wybierz Z lub Shift+Z. Teraz możesz cofnąć lub ponownie wykonać maksymalnie 10 operacji historycznych komórek.

Zrzut ekranu przedstawiający przyciski Cofnij i Wykonaj ponownie w notesie usługi Synapse.

Obsługiwane operacje komórek obejmują:

  • Wstaw lub usuń komórkę. Operacje usuwania można odwołać, wybierając pozycję Cofnij. Ta akcja przechowuje zawartość tekstową wraz z komórką.
  • Zmień kolejność komórek.
  • Włącz lub wyłącz komórkę parametru.
  • Przekonwertuj między komórką kodu a komórką języka Markdown.

Uwaga

Nie można cofnąć operacji tekstowych ani operacji komentowania w komórce.

Komentarz do komórki kodu

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

    Zrzut ekranu przedstawiający przycisk Komentarze i okienko Komentarze w notesie usługi Synapse.

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

    Zrzut ekranu przedstawiający pole wprowadzania komentarza w notesie usługi Synapse.

  3. W razie potrzeby możesz wykonać akcje Edytuj komentarz, Rozwiąż wątek i Usuń wątki, wybierając wielokropek Więcej (...) obok komentarza.

    Zrzut ekranu przedstawiający dodatkowe polecenia dla komórki kodu w notesie usługi Synapse.

Przenoszenie komórki

Aby przenieść komórkę, zaznacz lewą stronę komórki i przeciągnij komórkę do żądanej pozycji.

Animowany plik GIF przedstawiający przenoszenie komórek w notesie 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. Wybierz Shift+D, aby usunąć bieżącą komórkę.

Zrzut ekranu przedstawiający przycisk usuwania komórki w notesie usługi Synapse.

Zwiń dane wejściowe komórki

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

Animowany plik GIF zwijania i rozszerzania danych wejściowych komórek w notesie usługi Synapse.

Zwiń dane wyjściowe komórki

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

Animowany obraz GIF zwijania i rozszerzania danych wyjściowych komórek w notesie usługi Synapse.

Korzystanie z konspektu notesu

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

Zrzut ekranu przedstawiający pasek boczny konspektu w notesie usługi Synapse.

Uruchamianie notesu

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

Uwaga

Usunięcie notesu nie powoduje automatycznego anulowania żadnych aktualnie uruchomionych zadań. Jeśli musisz anulować zadanie, przejdź do centrum Monitorowanie i anuluj je ręcznie.

Uruchamianie komórki

Istnieje wiele sposobów uruchamiania kodu w komórce:

  • Umieść kursor na komórce, którą chcesz uruchomić, a następnie wybierz przycisk Uruchom komórkę lub naciśnij Ctrl+Enter.

    Zrzut ekranu przedstawiający polecenie uruchamiania komórki w notesie usługi Synapse.

  • Użyj skrótów w trybie polecenia. Wybierz Shift+Enter, aby uruchomić bieżącą komórkę i wybrać komórkę poniżej. Wybierz Alt+Enter, aby uruchomić bieżącą komórkę i wstawić pod nią nową komórkę.

Uruchamianie wszystkich komórek

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

Zrzut ekranu przedstawiający przycisk uruchamiania wszystkich komórek w notesie usługi Synapse.

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

Aby uruchomić wszystkie komórki powyżej bieżącej komórki w sekwencji, rozwiń listę rozwijaną przycisku Uruchom wszystko , a następnie wybierz pozycję Uruchom komórki powyżej. Wybierz pozycję Uruchom komórki poniżej , aby uruchomić wszystkie komórki poniżej bieżącej komórki w sekwencji.

Zrzut ekranu przedstawiający polecenia uruchamiania komórek powyżej i poniżej bieżącej komórki w notesie usługi Synapse.

Anuluj wszystkie uruchomione komórki

Aby anulować uruchomione komórki lub komórki oczekujące w kolejce, wybierz przycisk Anuluj wszystkie .

Zrzut ekranu przedstawiający przycisk anulowania wszystkich uruchomionych lub oczekujących komórek w notesie usługi Synapse.

Odwołanie do notesu

Aby odwołać się do innego notesu w kontekście bieżącego notesu, użyj %run <notebook path> polecenia magic. Wszystkie zmienne zdefiniowane w notesie odniesienia są dostępne w bieżącym notesie.

Oto 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 potokach.

Polecenie %run magic ma następujące ograniczenia:

  • Polecenie obsługuje zagnieżdżone wywołania, ale nie rekursywne.
  • Polecenie obsługuje przekazywanie ścieżki bezwzględnej lub nazwy notesu tylko jako parametr. Nie obsługuje ścieżek względnych.
  • Polecenie obsługuje obecnie tylko cztery typy wartości parametrów: int, , boolfloati string. Nie obsługuje operacji wymiany zmiennych.
  • Notesy, do których odwołuje się odwołanie, muszą być publikowane. Musisz opublikować notesy, aby się do nich odwoływać, chyba że wybierzesz opcję włączenia nieopublikowanego odwołania do notesu. Program Synapse Studio nie rozpoznaje nieopublikowanych notesów z repozytorium Git.
  • Przywołyne notesy nie obsługują głębokości instrukcji większych niż pięć.

Korzystanie z eksploratora zmiennych

Notes usługi Synapse udostępnia wbudowanego eksploratora zmiennych w postaci tabeli, która wyświetla listę zmiennych w bieżącej sesji platformy Spark dla komórek PySpark (Python). Tabela zawiera kolumny dla nazwy zmiennej, typu, długości i wartości. Więcej zmiennych jest wyświetlanych automatycznie w miarę ich definiowania w komórkach kodu. Wybranie każdego nagłówka kolumny sortuje zmienne w tabeli.

Aby otworzyć lub ukryć eksploratora zmiennych, wybierz przycisk Zmienne na pasku poleceń notesu.

Zrzut ekranu przedstawiający eksploratora zmiennych w notesie usługi Synapse.

Uwaga

Eksplorator zmiennych obsługuje tylko język Python.

Używanie wskaźnika stanu komórki

Stan krok po kroku uruchomienia komórki pojawia się pod komórką, aby ułatwić wyświetlenie bieżącego postępu. Po zakończeniu przebiegu komórki zostanie wyświetlone podsumowanie z łącznym czasem trwania i czasem zakończenia i pozostanie tam na potrzeby przyszłego odwołania.

Zrzut ekranu przedstawiający podsumowanie przebiegu komórki w notesie usługi Synapse.

Korzystanie ze wskaźnika postępu platformy Spark

Notes usługi Synapse jest oparty wyłącznie na platformie Spark. Komórki kodu są uruchamiane zdalnie w bezserwerowej puli platformy Apache Spark. Wskaźnik postępu zadania platformy Spark z paskiem postępu w czasie rzeczywistym pomaga zrozumieć stan uruchomienia zadania.

Liczba zadań dla każdego zadania lub etapu ułatwia zidentyfikowanie równoległego poziomu 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 w notesie usługi Synapse.

Konfigurowanie sesji platformy Spark

W okienku Konfigurowanie sesji można określić czas trwania limitu czasu, liczbę funkcji wykonawczych i rozmiar funkcji wykonawczych do nadania bieżącej sesji platformy Spark. 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, zobacz Zarządzanie konfiguracją platformy Apache Spark.

Zrzut ekranu przedstawiający okienko służące do konfigurowania sesji w notesie usługi Synapse.

Polecenie Magic służące do konfigurowania sesji platformy Spark

Ustawienia sesji platformy Spark można również określić za pomocą polecenia %%configuremagic . Aby ustawienia zaczęły obowiązywać, uruchom ponownie sesję platformy Spark.

Zalecamy uruchomienie na %%configure początku notesu. Oto przykład. Pełną listę prawidłowych parametrów można znaleźć w informacjach usługi Livy w witrynie GitHub.

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

Poniżej przedstawiono kilka zagadnień %%configure dotyczących polecenia magic:

  • Zalecamy użycie tej samej wartości dla driverMemory i executorMemory w pliku %%configure. Zalecamy również używanie driverCores tej samej wartości i executorCores jej wartości.
  • Można użyć %%configure w potokach usługi Synapse, ale jeśli nie ustawisz go w pierwszej komórce kodu, uruchomienie potoku zakończy się niepowodzeniem, ponieważ nie może ponownie uruchomić sesji.
  • Polecenie %%configure używane w programie mssparkutils.notebook.run jest ignorowane, ale polecenie używane w %run <notebook> programie nadal działa.
  • Musisz użyć standardowych właściwości konfiguracji platformy Spark w treści "conf" . Nie obsługujemy odwołań pierwszego poziomu dla właściwości konfiguracji platformy Spark.
  • Niektóre specjalne właściwości platformy Spark nie będą obowiązywać w "conf" treści, w tym "spark.driver.cores", , "spark.executor.cores""spark.driver.memory", "spark.executor.memory", i "spark.executor.instances".

Konfiguracja sparametryzowanej sesji z potoku

Za pomocą sparametryzowanej konfiguracji sesji można zastąpić wartości w %%configure poleceniu magic parametrami uruchomienia potoku (działanie notesu). Podczas przygotowywania %%configure komórki kodu można zastąpić wartości domyślne przy użyciu obiektu w następujący sposób:

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

W poniższym przykładzie przedstawiono wartości 4 domyślne i "2000", które można również konfigurować:

%%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 notes jest uruchamiany bezpośrednio w trybie interaktywnym lub jeśli działanie notesu potoku nie udostępnia parametru zgodnego "activityParameterName"z parametrem .

W trybie uruchamiania potoku możesz użyć karty Ustawienia , aby skonfigurować ustawienia działania notesu potoku.

Zrzut ekranu przedstawiający sparametryzowaną konfigurację sesji w notesie usługi Synapse.

Jeśli chcesz zmienić konfigurację sesji, nazwa parametru działania notesu potoku powinna być taka sama jak activityParameterName w notesie. W tym przykładzie podczas uruchamiania 8 potoku funkcja zastępuje element driverCores w pliku %%configurei 4000 zastępuje element livy.rsc.sql.num-rows.

Jeśli uruchomienie potoku zakończy się niepowodzeniem po użyciu %%configure polecenia magic, możesz uzyskać więcej informacji o błędzie, uruchamiając %%configure komórkę magic w trybie interaktywnym notesu.

Przenoszenie danych do notesu

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

Odczytywanie pliku CSV z usługi Azure Data Lake Storage Gen2 jako ramki danych 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 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 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)

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 wyodrębniakiem danych.

Zrzut ekranu przedstawiający otwieranie nowej tabeli Spark w celu uzyskania dostępu do danych plików w usłudze Azure Synapse Analytics.

Korzystanie z widżetów IPython

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

Kroki korzystania z widżetów IPython

  1. Zaimportuj moduł, ipywidgets aby użyć platformy Widżetów Jupyter:

    import ipywidgets as widgets
    
  2. Użyj funkcji najwyższego poziomu display , aby renderować widżet lub pozostawić wyrażenie widget typu 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żetu IPython w notesie usługi Synapse.

Możesz 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 wiele suwaków widżetów IPython w notesie usługi Synapse.

Aby renderować dwa widżety niezależne 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żetu Widgety
Liczbowe IntSlider, FloatSlider, , , FloatRangeSliderBoundedIntTextIntTextIntRangeSliderIntProgressFloatProgressBoundedFloatTextFloatLogSliderFloatText
Wartość logiczna ToggleButton, , CheckboxValid
Wybór Dropdown, RadioButtons, , Select, SelectionSlider, SelectionRangeSlider, , ToggleButtonsSelectMultiple
String Text, Text area, , Combobox, LabelPassword, HTML, , ImageHTML MathButton
Odtwórz (animacja) Date picker, , Color pickerController
Kontener/układ Box, HBox, , VBox, GridBox, Accordion, , TabsStacked

Znane ograniczenia

  • W poniższej tabeli wymieniono widżety, które nie są obecnie obsługiwane, wraz z obejściami:

    Funkcje Rozwiązanie
    Output widżet Zamiast tego możesz użyć print() funkcji , aby zapisać tekst w pliku stdout.
    widgets.jslink() Możesz użyć widgets.link() funkcji , aby połączyć dwa podobne widżety.
    FileUpload widżet Brak dostępnych.
  • Funkcja globalna display udostępniana przez usługę Azure Synapse Analytics nie obsługuje wyświetlania wielu widżetów w jednym wywołaniu (czyli display(a, b)). To zachowanie różni się od funkcji IPython display .

  • Jeśli zamkniesz notes zawierający widżet IPython, nie możesz wyświetlić widżetu ani wchodzić z nim w interakcję, dopóki nie uruchomisz odpowiedniej komórki ponownie.

Zapisywanie notesów

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

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

    Zrzut ekranu przedstawiający przycisk publikowania zmian w notesie usługi Synapse.

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

    Zrzut ekranu przedstawiający przycisk publikowania zmian we wszystkich notesach w obszarze roboczym usługi Synapse.

W okienku Właściwości 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 usługi Synapse i pole wyboru dołączania danych wyjściowych komórek podczas zapisywania.

Używanie poleceń magic

W notesach usługi Synapse można używać znanych poleceń magicznych programu Jupyter. Przejrzyj poniższe listy aktualnie dostępnych poleceń 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 potokach usługi Synapse: %%pyspark, %%spark, %%csharp, %%sql.

Dostępne polecenia magic dla wierszy:

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

Dostępne polecenia magic dla komórek:

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

Odwołanie do nieopublikowanego notesu

Odwołanie do nieopublikowanego notesu jest przydatne, gdy chcesz debugować lokalnie. Po włączeniu tej funkcji uruchomienie notesu pobiera bieżącą zawartość w pamięci podręcznej sieci Web. Jeśli uruchomisz komórkę zawierającą instrukcję notesu referencyjnego, odwołujesz się do notesów prezentowania w bieżącej przeglądarce notesów zamiast zapisanej wersji w klastrze. Inne notesy mogą odwoływać się do zmian w edytorze notesów bez konieczności publikowania (trybu na żywo) lub zatwierdzania zmian (tryb Git). Korzystając z tego podejścia, można zapobiec zanieczyszczeniu wspólnych bibliotek podczas procesu tworzenia lub debugowania.

Możesz włączyć odwoływanie się do nieopublikowanego notesu, zaznaczając odpowiednie pole wyboru w okienku Właściwości .

Zrzut ekranu przedstawiający pole wyboru włączania odwoływania się do nieopublikowanego notesu usługi Synapse.

W poniższej tabeli porównaliśmy przypadki. Mimo że polecenie %run i mssparkutils.notebook.run ma takie samo zachowanie, w tabeli użyto %run 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 (nieopublikowany, zatwierdzony)
%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 opublikowany, nowy w bieżącej gałęzi)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie nowej Nb1
Nb1 (nieopublikowany, wcześniej zatwierdzony, edytowany)
%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

Podsumowując:

  • Jeśli wyłączysz odwoływanie się do nieopublikowanego notesu, zawsze uruchom opublikowaną wersję.
  • Jeśli włączysz odwoływanie się do nieopublikowanego notesu, uruchomienie odwołania zawsze przyjmuje bieżącą wersję notesu wyświetlaną w środowisku użytkownika notesu.

Zarządzanie aktywnymi sesjami

Możesz ponownie użyć sesji notesu bez konieczności uruchamiania nowych. W notesach usługi Synapse możesz zarządzać aktywnymi sesjami na jednej liście. Aby otworzyć listę, wybierz wielokropek (...), a następnie wybierz pozycję Zarządzaj sesjami.

Zrzut ekranu przedstawiający opcje otwierania listy aktywnych sesji notesu usługi Synapse.

Okienko Aktywne sesje zawiera listę wszystkich sesji w bieżącym obszarze roboczym, który został uruchomiony z poziomu notesu. Lista zawiera informacje o sesji i odpowiednie notesy. Dostępne są tutaj akcje Odłączanie za pomocą notesu, Zatrzymywanie sesji i Wyświetlanie w monitorowaniu . Możesz również połączyć wybrany notes z aktywną sesją, która została uruchomiona z innego notesu. Sesja jest następnie odłączona od poprzedniego notesu (jeśli nie jest bezczynna) i dołączona do bieżącego notesu.

Zrzut ekranu przedstawiający okienko dla aktywnych sesji w obszarze roboczym usługi Synapse.

Używanie dzienników języka Python w notesie

Dzienniki języka Python można znaleźć i ustawić różne poziomy i formaty dziennika przy użyciu następującego przykładowego kodu:

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

Wyświetlanie historii poleceń wejściowych

Notesy usługi Synapse obsługują polecenie %history magic, aby wydrukować historię poleceń wejściowych dla bieżącej sesji. Polecenie %history magic jest podobne do standardowego polecenia Jupyter IPython i działa w przypadku wielu kontekstów językowych w notesie.

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

W poprzednim kodzie -n jest numer wykonywania wydruku. Wartość range może być:

  • N: Drukuj kod wykonanej Nth komórki.
  • M-N: Drukuj Mth kod z obiektu do wykonanej Nth komórki.

Aby na przykład wydrukować historię danych wejściowych z pierwszej do drugiej wykonanej komórki, użyj polecenia %history -n 1-2.

Integrowanie notesu

Dodawanie notesu do potoku

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

Zrzut ekranu przedstawiający opcje menu umożliwiające dodawanie notesu do istniejącego lub nowego potoku usługi Synapse.

Wyznaczanie komórki parametru

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ę parametru.

Zrzut ekranu przedstawiający opcję menu umożliwiającą wyznaczenie komórki jako komórki parametru.

Usługa Azure Data Factory wyszukuje komórkę parametrów i traktuje tę komórkę jako domyślną dla parametrów przekazywanych w czasie wykonywania. Aparat wykonywania dodaje nową komórkę pod komórką parametrów 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 uruchomić go z potoku przy użyciu działania notesu usługi Synapse. Po dodaniu działania do kanwy potoku można ustawić wartości parametrów w sekcji Podstawowe parametry na karcie Ustawienia .

Zrzut ekranu przedstawiający obszar przypisywania parametrów w usłudze Azure Synapse Analytics.

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

Używanie 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 komórki kodu:

  • Tryb polecenia: komórka jest w trybie polecenia, gdy żaden kursor tekstowy nie wyświetla monitu 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, wybierając Esc lub za pomocą myszy, aby wybrać poza obszarem edytora komórki.

    Zrzut ekranu przedstawiający tryb polecenia w notesie usługi Synapse.

  • Tryb edycji: gdy komórka jest w trybie edycji, kursor tekstowy monituje o wpisenie w komórce. Wprowadź tryb edycji, wybierając Enter lub za pomocą myszy, aby wybrać obszar edytora komórki.

    Zrzut ekranu przedstawiający tryb edycji w notesie usługi Synapse.

skrótów w trybie polecenia

Akcja Skrót do 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

Akcja Skrót do 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+Home
Przejdź do końca komórki CTRL+End
Przejdź jeden wyraz w lewo Ctrl+Left
Przejdź jeden wyraz w prawo Ctrl+Right
Wybierz wszystko Ctrl+A
Wcięcie Ctrl+]
Wcięcie Ctrl+[
Przełączanie do trybu poleceń Esc