Kontynuujemy nasz serię o Azure Data Studio – tym razem powiemy sobie parę słów o tym jak stworzyć swój własny interaktywny notebook – zapraszam do lektury. Pozostałe części niniejszej mini-serii znajdziecie pod poniższymi linkami:
Na samym wstępie może warto wspomnieć czym jest Notebook. Jest to stosunkowo nowa funkcjonalność w Azure Data Studio jednakże cała koncepcja wywodzi się z obszaru Data Science, a właściwie z inicjatywy zwanej Project Jupyter. Czym jest notebook? Można powiedzieć, że jest to plik zawierający wykonywalny kod wraz z formatowalnym tekstem. Tekst daje się formatować dzięki implementacji języka MarkDown. Same notebooki są dosyć ciekawą koncepcją która daje możliwości wizualizacji otrzymanych wyników lub przedstawiania określonych danych w ciekawej formie. Przez niektórych notebooki nazywane są “interkatywnym Wordem” i rzeczywiście coś w tym jest!
Przejdźmy do praktyki i stwórzmy nasz pierwszy notebook. Na samym początku po otwarciu Azure Data Studio musimy znaleźć odpowiednią komendę, a zrobimy to wybierając opcję View -> Command Palette lub wybierając sekwencję klawiszy Ctrl+Shift + P:
W otwartym oknie wpisujemy New Notebook aby stworzyć nowy arkusz:
Panel górny naszego notebooka przedstawia się w następujący sposób:
Pierwszymi opcjami jakie mogą nam się rzucić w oczy jest Code oraz Text. Opcje te są kluczowe i pozwalają nam dodać do notebooka formatowany tekst napisany przy użyciu MarkDown lub też Code czyli kod w wybranym przez nas języku. Zanim cokolwiek dodamy powinniśmy przede wszystkim wybrać Kernel czyli zdecydować czy w wybranym przez nas polu kodu będziemy posługiwać się SQL czy może innym językiem. Do wyboru mamy kilka opcji:
- SQL
- PySpark
- PySpark3
- Spark | Scala
- Spark | R
- Python3
Dla przykładu wybrałem oczywiście SQL tak więc przechodząc dalej musimy wybrać połączenie do serwera, gdzie nasz kod będzie wykonywany. O tym jak zdefiniować połączenie pisałem już w pierwszym artykule z tego cyklu, który znajdziecie tutaj więc nie będę się powtarzał. Kolejna opcja, a mianowicie Trusted oznacza, że po jej kliknięciu notebook jest zaufany, przejrzeliśmy kod i jest on bezpieczny do uruchomienia. Jest to o tyle istotne, że możemy otwierać notebooki, które pochodzą z różnych źródeł i powinniśmy być pewni jaki kod będzie wykonywany.
Ostatnie dwie opcje dostępne na belce pozwalają na uruchomienie naszego notebooka i wygenerowanie rezultatu oraz wyczyszczenie rezultatu.
Przejdźmy do tworzenia notebooka, w pierwszym kroku wybierzmy opcję Text i wpiszmy wybrany przez nas tekst:
Jak możecie zauważyć na powyższym zrzucie ekranowym wpisany przez nas tekst od razu jest wizualizowany. Wpisany przez nas kod MarkDown w określony sposób formatuje otrzymany rezultat. Powyższy przykład zawiera jedynie prosty tekst ale gdy dodamy # przed wpisanym tekstem dostaniemy już dodatkowe formatowanie, które w tym konkretnym przypadku oznacza nagłówek określonego poziomu:
Oprócz tego możemy osiągnąć kilka fajnych rzeczy jeśli chodzi o formatowanie – poniżej kilka przykładów.
_kursywa_ __pogrubienie__ ~~przekreślenie~~
[Link](https://pl.seequality.net) Formatowanie kodu ``SELECT INTO`` wewnątrz tekstu. > To jest cytat
<b> <u>HTML też działa!</u></b> Pozioma kreska: *** Tabela stworzona "wizualnie" z poziomych i pionowych linii. W drugim "wierszu" tabeli poziomymi kreskami oddzielamy nagłówek od danych, to gdzie wstawimy znak dwukropka warunkuje wyrównanie tekstu: | ID (do lewej) | Name (wyśrodkowane) | Price (do prawej) | | :-------- | :-------:|-------:| | 1 | Orange | 2 | | 2 | Blue | 3 | | 3 | Red | 1.21 | ![alt text](https://pl.seequality.net/wp-content/uploads/2018/05/HTTPS_LOGO_SMALL.png "Logo Seequality")
Oczywiście możliwości języka Markdown są większe i warto zapoznać się z tym czego możemy użyć. Pamiętajmy jednak, że jest to język do formatowania i nie wymagajmy zaawansowanych funkcji graficznych których po prostu tam nie ma.
Przejdźmy dalej i dodajmy kod poprzez kliknięcie przycisku Code i wpiszmy komendę SELECT @@VERSION. Nasz kod będzie wykonany w kontekście bazy danych, którą wybraliśmy w definicji połączenia (co oczywiście możemy zmienić używając słowa kluczowego use). Po wpisaniu kodu możemy użyć przycisku Run cells aby otrzymać pożądany rezultat:
Co ciekawe, otrzymaliśmy nie tylko jedno wierszową tabelę ale również to co w tradycyjnym Management Studio widzimy na zakładce Messages + czas potrzebny na wykonanie zapytania. Jeśli chcemy dodać do notebooka kolejne pole tekstowe lub wykonywalny blok kodu możemy użyć wspomnianych wcześniej opcji dostępnych na belce, ale również możemy kliknąć na opcje dostępne w prawym górnym rogu i tam wybrać interesującą nas opcję:
Dla przykładu dodałem kolejny tekst oraz kod wywołujący procedurę sp_spaceused:
Teraz po kliknięciu Run cells wszystkie bloki kodu zostaną wykonane. Jeśli chcemy uruchomić tylko określony blok to po najechaniu na niego kursorem naszym oczom ukaże się mały przycisk “play”:
Warty wspomnienia jest fakt, że podobnie jak standardowe okno zapytań tak i w tym przypadku mamy do dyspozycji bardzo dobry Intellisence czyli podpowiadacz składni, który sprawdza się dużo lepiej niż ten do którego przyzwyczailiśmy się w Management Studio.
Azure Data Studio potrafi zwracać dane w postaci siatki wyników czyli tzw. grida. Zazwyczaj potrzebujemy takiego właśnie rezultatu jednakże warto pamiętać, że w Management Studio mieliśmy do dyspozycji specjalne rezultaty dla danych typu spatial czyli np. dla typu GEOMETRY. Dla przypomnienia poniższe zapytanie:
SELECT geometry::STGeomFromText('LINESTRING (10 10, 10 100, 100 100, 100 10, 10 10)', 0);
Zwróciło rezultat do grida ale również miało zakładkę Spatial Result na której zobaczyliśmy ładnie wyrysowany kwadrat:\
Jak już wspomniałem na ten moment nie ma wsparcia dla tego typu rezultatów w Azure Data Studio, które wykona zapytanie ale zwróci jedynie dane do siatki:
W tym artykule skupiłem się w dużej mierze na SQL Notebooks ale nic nie stoi na przeszkodzie aby wykorzystać inne języki. Dla przykładu Python działa bez zarzutu:
Pojedynczy workbook może mieć kilka elementów, które są uruchamiane przez różne Kernele jednakże tylko jeden Kernel jest aktywny w danym czasie. Oznacza to, że jeżeli chcielibyśmy np. mieć blok kodu SQL a potem blok kodu Python to za każdym razem gdy chcemy uruchomić musimy wskazywać który kernel ma uruhomić, który kod. Dosyć uciążliwe podejście które uniemożliwia użycie opcji Run Cells – jednakże jeśli chcemy mieszać różne kody w pojedynczym workbooku nie mamy innego wyjścia (chyba, że wywoływanie SQLa z Pythona lub na odwrót).
Jak widzicie tworzenie własnych Notebooków jest bardzo proste i stanowi kolejną możliwość przedstawiania czy też udostępniania danych. Według mnie notebooki świetnie sprawdzą się w sytuacji gdy mamy do przedstawienia jakąś konkretną sytuację/eksperyment gdzie mamy jasno wyspecyfikowane kroki ale z całą pewnością każda zainteresowana osoba znajdzie odpowiednie zastosowania. To by było na tyle na dziś, mam nadzieję, że wpis był dla Was dobrym wstęp do tej konkretnej funkcjonalności Azure Data Studio, polecam!
- Avoiding Issues: Monitoring Query Pushdowns in Databricks Federated Queries - October 27, 2024
- Microsoft Fabric: Using Workspace Identity for Authentication - September 25, 2024
- Executing SQL queries from Azure DevOps using Service Connection credentials - August 28, 2024
Cool stuff, thanx for sharing.