Analizowanie danych na platformie Azure Data Explorer przy użyciu rozszerzenia Jupyter Notebook i kqlmagic

Jupyter Notebook to aplikacja internetowa typu open source, która umożliwia tworzenie i udostępnianie dokumentów zawierających kod na żywo, równania, wizualizacje i tekst narracji. Jest to przydatne w przypadku szerokiego zakresu zadań, takich jak czyszczenie i przekształcanie danych, symulacja liczbowa, modelowanie statystyczne, wizualizacja danych i uczenie maszynowe.

Program Kqlmagic rozszerza możliwości jądra języka Python w Jupyter Notebook, dzięki czemu można uruchamiać zapytania język zapytań Kusto (KQL) natywnie. Możesz połączyć język Python i KQL w celu wykonywania zapytań i wizualizowania danych przy użyciu bogatej biblioteki Plot.ly zintegrowanej z operatorem renderowania . Rozszerzenie kqlmagic jest zgodne z laboratorium Jupyter Lab, Visual Studio Code rozszerzenia Jupyter oraz usługą Azure Data Studio oraz obsługiwane źródła danych obejmują usługę Azure Data Explorer, dzienniki usługi Azure Monitor i usługę Application Insights.

W tym artykule dowiesz się, jak używać biblioteki kqlmagic w Jupyter Notebook do nawiązywania połączenia z danymi przechowywanymi w usłudze Azure Data Explorer i wykonywania zapytań o dane.

Wymagania wstępne

  • Konto Microsoft lub tożsamość użytkownika Microsoft Entra. Subskrypcja platformy Azure nie jest wymagana.
  • Jupyter Notebook zainstalowane na komputerze lokalnym. W przeciwnym razie użyj usługi Azure Data Studio.
  • Python 3.6. Aby zmienić wersję jądra Jupyter Notebook na Python 3.6, wybierz pozycję Zmień jądro>>języka Python 3.6.

Instalowanie biblioteki kqlmagic

Po zainstalowaniu i załadowaniu rozszerzenia kqlmagic możesz napisać zapytania KQL w notesie. Jeśli jądro zatrzyma lub wyniki nie są zgodnie z oczekiwaniami, załaduj ponownie rozszerzenie kqlmagic.

  1. Aby zainstalować plik kqlmagic, uruchom następujące polecenie:

    !pip install Kqlmagic --no-cache-dir  --upgrade
    
  2. Aby załadować rozszerzenie kqlmagic, uruchom następujące polecenie:

    %reload_ext Kqlmagic
    

Łączenie z klastrem

Wybierz kartę preferowanej metody, aby nawiązać połączenie z klastrem.

Metoda kodu Microsoft Entra monituje logowanie interakcyjne biblioteki MSAL. Otrzymasz kod do wprowadzenia w celu uwierzytelnienia.

%kql AzureDataExplorer://code;cluster='<cluster-name>';database='<database-name>'

Porada

  • Aby sparametryzować parametry połączenia, użyj wartości niekwestionowanych, ponieważ są interpretowane jako wyrażenia języka Python.
  • Aby uprościć proces pobierania poświadczeń, zobacz Opcje połączenia.

Przykład połączenia klastra

Następujące polecenie używa metody kodu Microsoft Entra do uwierzytelniania w bazie danych hostowanej Samples w klastrzehelp. W przypadku użytkowników innych niż Microsoft Entra zastąp nazwę Microsoft.com dzierżawy dzierżawą Microsoft Entra.

%kql AzureDataExplorer://tenant="Microsoft.com";code;cluster='help';database='Samples'

Opcje połączenia

Aby uprościć proces pobierania poświadczeń, można dodać jedną z następujących flag opcji po parametry połączenia.

Opcja Opis Przykładowa składnia
try_azcli_login Spróbuj uzyskać poświadczenia uwierzytelniania z poziomu interfejsu wiersza polecenia platformy Azure. -try_azcli_login
try_azcli_login_subscription Spróbuj uzyskać poświadczenia uwierzytelniania z poziomu interfejsu wiersza polecenia platformy Azure na podstawie określonej subskrypcji. -try_azcli_login_subscription=<subscription_id>
try_vscode_login Spróbuj uzyskać poświadczenia uwierzytelniania z logowania Visual Studio Code konta platformy Azure. -try_vscode_login
try_msi Spróbuj pobrać poświadczenia uwierzytelniania z lokalnego punktu końcowego msi. Oczekuje słownika z opcjonalnymi parametrami MSI: resource, client_id/object_idmis_res_id/, cloud_environment, . timeout -try_msi={"client_id":<id>}
try_token Uwierzytelnianie przy użyciu określonego tokenu. Oczekuje słownika z właściwościami tokenu Azure AD v1 lub v2. -try_token={"tokenType":"bearer","accessToken":"<token>"}

Przykład opcji połączenia

Każdą z opcji opisanych w poprzedniej tabeli można dodać po parametry połączenia. W poniższym przykładzie użyto opcji logowania interfejsu wiersza polecenia platformy Azure:

%kql azureDataExplorer://code;cluster='help';database='Samples' -try_azcli_login

Wyświetlanie informacji o połączeniu

Aby wyświetlić wszystkie istniejące połączenia, uruchom następujące polecenie:

%kql --conn

Aby sprawdzić szczegóły określonego połączenia, uruchom następujące polecenie:

%kql --conn <database-name>@<cluster-name>

Wykonywanie zapytań i wizualizowanie

Wykonywanie zapytań o dane przy użyciu operatora renderowania i wizualizowanie danych przy użyciu biblioteki ploy.ly. To zapytanie i wizualizacja udostępnia zintegrowane środowisko, które korzysta z natywnego języka KQL. Język Kqlmagic obsługuje większość wykresów z wyjątkiem timepivot, pivotcharti ladderchart. Renderowanie jest obsługiwane przy użyciu wszystkich atrybutów z wyjątkiem kind, yspliti accumulate.

Wykonywanie zapytań i renderowanie piechart

%%kql
StormEvents
| summarize statecount=count() by State
| sort by statecount 
| take10
| render piechart title="My Pie Chart by State"

Wykonywanie zapytań i renderowanie schematu czasowego

%%kql
StormEvents
| summarize count() by bin(StartTime,7d)
| render timechart

Uwaga

Te wykresy są interaktywne. Wybierz zakres czasu, aby powiększyć określony czas.

Dostosowywanie kolorów wykresu

Jeśli nie lubisz domyślnej palety kolorów, dostosuj wykresy przy użyciu opcji palety. Dostępne palety można znaleźć tutaj: Wybierz paletę kolorów dla wyniku wykresu zapytania kqlmagic

  1. Lista palet:

    %kql --palettes -popup_window
    
  2. Wybierz paletę kolorów i ponownie renderuj cool zapytanie:

    %%kql -palette_name "cool"
    StormEvents
    | summarize statecount=count() by State
    | sort by statecount
    | take10
    | render piechart title="My Pie Chart by State"
    

Parametryzacja zapytania przy użyciu języka Python

Język Kqlmagic umożliwia prostą wymianę między język zapytań Kusto a językiem Python. Aby dowiedzieć się więcej: Parametryzacja zapytania kqlmagic przy użyciu języka Python

Używanie zmiennej języka Python w zapytaniu KQL

Możesz użyć wartości zmiennej języka Python w zapytaniu, aby filtrować dane:

statefilter = ["TEXAS", "KANSAS"]
%%kql
let _state = statefilter;
StormEvents 
| where State in (_state) 
| summarize statecount=count() by bin(StartTime,1d), State
| render timechart title = "Trend"

Konwertowanie wyników zapytania na ramkę danych biblioteki Pandas

Możesz uzyskać dostęp do wyników zapytania KQL w ramce danych Biblioteki Pandas. Uzyskaj dostęp do wyników ostatniego wykonanego zapytania według zmiennej _kql_raw_result_ i łatwo przekonwertuj wyniki na ramkę danych Biblioteki Pandas w następujący sposób:

df = _kql_raw_result_.to_dataframe()
df.head(10)

Przykład

W wielu scenariuszach analitycznych możesz utworzyć notesy wielokrotnego użytku zawierające wiele zapytań i przekazać wyniki z jednego zapytania do kolejnych zapytań. W poniższym przykładzie użyto zmiennej statefilter języka Python do filtrowania danych.

  1. Uruchom zapytanie, aby wyświetlić 10 pierwszych stanów z maksymalną wartością DamageProperty:

    %%kql
    StormEvents
    | summarize max(DamageProperty) by State
    | order by max_DamageProperty desc
    | take10
    
  2. Uruchom zapytanie, aby wyodrębnić górny stan i ustawić go w zmiennej języka Python:

    df = _kql_raw_result_.to_dataframe()
    statefilter =df.loc[0].State
    statefilter
    
  3. Uruchom zapytanie przy użyciu instrukcji let i zmiennej języka Python:

    %%kql
    let _state = statefilter;
    StormEvents 
    | where State in (_state)
    | summarize statecount=count() by bin(StartTime,1d), State
    | render timechart title = "Trend"
    
  4. Uruchom polecenie pomocy:

    %kql --help "help"
    

Porada

Aby otrzymywać informacje o wszystkich dostępnych konfiguracjach, użyj polecenia %config Kqlmagic. Aby rozwiązać problemy i przechwycić błędy usługi Kusto, takie jak problemy z połączeniem i nieprawidłowe zapytania, użyj polecenia %config Kqlmagic.short_errors=False

Przykładowe notesy