Udostępnij za pośrednictwem


Analizowanie danych w usłudze Azure Data Explorer przy użyciu notesu Jupyter Notebook i rozszerzenia 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 wielu zadaniach, takich jak czyszczenie i przekształcanie danych, symulacja liczbowa, modelowanie statystyczne, wizualizacja danych i uczenie maszynowe.

Język Kqlmagic rozszerza możliwości jądra języka Python w notesie Jupyter Notebook, dzięki czemu można uruchamiać zapytania język zapytań Kusto (KQL) natywnie. Język Python i język KQL można połączyć w celu wykonywania zapytań i wizualizowania danych przy użyciu bogatej biblioteki Plot.ly zintegrowanej z operatorem renderowania. Rozszerzenie kqlmagic jest zgodne z narzędziem Jupyter Lab, rozszerzeniem Jupyter programu Visual Studio Code i narzędziem Azure Data Studio oraz obsługiwanymi źródłami 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 notesie Jupyter Notebook do nawiązywania połączenia z danymi przechowywanymi w usłudze Azure Data Explorer i wykonywania zapytań o nie.

Wymagania wstępne

  • Konto Microsoft lub tożsamość użytkownika Microsoft Entra. Subskrypcja platformy Azure nie jest wymagana.
  • Notes Jupyter Notebook zainstalowany na komputerze lokalnym. W przeciwnym razie użyj narzędzia Azure Data Studio.
  • Python 3.6. Aby zmienić wersję jądra notesu Jupyter Notebook na python 3.6, wybierz pozycję Jądra zmień jądro>>Python 3.6.

Instalowanie biblioteki kqlmagic

Po zainstalowaniu i załadowaniu rozszerzenia kqlmagic możesz napisać zapytania KQL w notesie. Jeśli jądro zatrzymuje się 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.

Uwaga

Jeśli to możliwe, zalecamy użycie metody uwierzytelniania certyfikatu.

Certyfikat Microsoft Entra powinien być przechowywany w pliku dostępnym z notesu. Do tego pliku można się odwołać w parametry połączenia.

%kql AzureDataExplorer://tenant='<tenant-id>';certificate='<certificate>';certificate_thumbprint='<thumbprint>';cluster='<cluster-name>';database='<database-name>'

Napiwek

  • Aby sparametryzować parametry połączenia, użyj wartości bez cudzysłów, 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 Entra firmy Microsoft do uwierzytelniania w Samples bazie danych hostowanej w klastrze help . W przypadku użytkowników innych niż Microsoft Entra zastąp nazwę Microsoft.com dzierżawy dzierżawą firmy Microsoft Entra.

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

Opcje połączenia

Aby uprościć proces pobierania poświadczeń, możesz 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 interfejsu wiersza polecenia platformy Azure na podstawie określonej subskrypcji. -try_azcli_login_subscription=<subscription_id>
try_vscode_login Spróbuj pobrać poświadczenia uwierzytelniania z logowania do konta platformy Azure programu Visual Studio Code. -try_vscode_login
try_msi Spróbuj uzyskać poświadczenia uwierzytelniania z lokalnego punktu końcowego msi. Oczekuje słownika z opcjonalnymi parametrami MSI: resource, , cloud_environmentobject_id//client_idmis_res_id, . timeout -try_msi={"client_id":<id>}
try_token Uwierzytelnianie przy użyciu określonego tokenu. Oczekuje słownika z właściwościami tokenu usługi Azure AD w wersji 1 lub 2. -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ń dotyczących danych przy użyciu operatora renderowania i wizualizowanie danych przy użyciu biblioteki ploy.ly. To zapytanie i wizualizacja udostępnia zintegrowane środowisko korzystające z natywnego języka KQL. Język Kqlmagic obsługuje większość wykresów z wyjątkiem timepivot, pivotcharti ladderchart. Renderowanie jest obsługiwane we wszystkich atrybutach z wyjątkiem kind, yspliti accumulate.

Wykonywanie zapytań i renderowanie piechart

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

Tworzenie 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 podoba Ci się domyślna paleta 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ę cool kolorów i ponownie renderuj zapytanie:

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

Parametryzowanie 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: Parametryzowanie zapytania kqlmagic przy użyciu języka Python

Używanie zmiennej języka Python w zapytaniu języka 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

Dostęp do wyników zapytania KQL można uzyskać w ramce danych biblioteki Pandas. Uzyskaj dostęp do wyników ostatniego wykonanego zapytania według zmiennej i łatwo przekonwertuj wyniki na ramkę _kql_raw_result_ 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
    | take 10
    
  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"
    

Napiwek

Aby uzyskać 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