Sdílet prostřednictvím


Použití poznámkového bloku Jupyter a rozšíření kqlmagic k analýze dat v Azure Data Exploreru

Jupyter Notebook je opensourcová webová aplikace, která umožňuje vytvářet a sdílet dokumenty obsahující živý kód, rovnice, vizualizace a text vyprávění. Je užitečné pro celou řadu úloh, jako je čištění a transformace dat, číselná simulace, statistické modelování, vizualizace dat a strojové učení.

Kqlmagic rozšiřuje možnosti jádra Pythonu v Jupyter Notebook, abyste mohli nativně spouštět dotazy dotazovací jazyk Kusto (KQL). Python a KQL můžete kombinovat k dotazování a vizualizaci dat pomocí bohaté knihovny Plot.ly integrované s operátorem vykreslování . Rozšíření kqlmagic je kompatibilní s Jupyter Lab, rozšířením Jupyter v editoru Visual Studio Code a azure Data Studio a podporovanými zdroji dat patří Azure Data Explorer, protokoly Azure Monitoru a Application Insights.

V tomto článku se dozvíte, jak pomocí kqlmagic v poznámkovém bloku Jupyter připojit se k datům uloženým v Azure Data Exploreru a dotazovat se na data uložená v Azure Data Exploreru.

Požadavky

  • Účet Microsoft nebo identita uživatele Microsoft Entra. Předplatné Azure není povinné.
  • Jupyter Notebook nainstalovaný na místním počítači. V opačném případě použijte Azure Data Studio.
  • Python 3.6 Pokud chcete změnit verzi jádra Jupyter Notebook na Python 3.6, vyberte Jádro>Změnit jádro>Python 3.6.

Instalace kqlmagic

Po instalaci a načtení rozšíření kqlmagic můžete do poznámkového bloku psát dotazy KQL. Pokud se jádro zastaví nebo výsledky nebudou očekávané, znovu načtěte rozšíření kqlmagic.

  1. Pokud chcete nainstalovat kqlmagic, spusťte následující příkaz:

    !pip install Kqlmagic --no-cache-dir  --upgrade
    
  2. Pokud chcete načíst rozšíření kqlmagic, spusťte následující příkaz:

    %reload_ext Kqlmagic
    

Připojení ke clusteru

Vyberte kartu pro upřednostňovanou metodu pro připojení ke clusteru.

Poznámka:

Pokud je to možné, doporučujeme použít metodu ověřování certifikátem.

Certifikát Microsoft Entra by měl být uložen v souboru přístupném z poznámkového bloku. Na tento soubor lze odkazovat v připojovací řetězec.

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

Tip

  • Pokud chcete parametrizovat připojovací řetězec, použijte necitované hodnoty, protože jsou interpretovány jako výrazy Pythonu.
  • Pokud chcete zjednodušit proces získávání přihlašovacích údajů, podívejte se na možnosti připojení.

Příklad připojení clusteru

Následující příkaz používá metodu kódu Microsoft Entra k ověření v Samples databázi hostované v clusteru help . Pro uživatele, kteří nejsou microsoft Entra, nahraďte název Microsoft.com tenanta vaším tenantem Microsoft Entra.

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

Možnosti připojení

Pokud chcete zjednodušit proces získávání přihlašovacích údajů, můžete za připojovací řetězec přidat jeden z následujících příznaků možností.

Možnost Popis Příklad syntaxe
try_azcli_login Pokus o získání přihlašovacích údajů pro ověřování z Azure CLI -try_azcli_login
try_azcli_login_subscription Pokus o získání přihlašovacích údajů pro ověřování z Azure CLI na základě zadaného předplatného. -try_azcli_login_subscription=<subscription_id>
try_vscode_login Pokus o získání přihlašovacích údajů pro ověřování z přihlášení k účtu Azure v editoru Visual Studio Code -try_vscode_login
try_msi Pokus o získání přihlašovacích údajů pro ověření z místního koncového bodu MSI Očekává slovník s volitelnými parametry MSI: resource,/client_idobject_idmis_res_id/cloud_environment , , . timeout -try_msi={"client_id":<id>}
try_token Ověřte se pomocí zadaného tokenu. Očekává slovník s vlastnostmi tokenu Azure AD v1 nebo v2. -try_token={"tokenType":"bearer","accessToken":"<token>"}

Příklad možnosti připojení

Za připojovací řetězec lze přidat některou z možností popsaných v předchozí tabulce. Následující příklad používá možnost přihlášení k Azure CLI:

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

Zobrazení informací o připojení

Pokud chcete zobrazit všechna existující připojení, spusťte následující příkaz:

%kql --conn

Pokud chcete zkontrolovat podrobnosti o konkrétním připojení, spusťte následující příkaz:

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

Dotazování a vizualizace

Dotazování dat pomocí operátoru vykreslování a vizualizace dat pomocí knihovny ploy.ly Tento dotaz a vizualizace poskytuje integrované prostředí, které používá nativní jazyk KQL. Kqlmagic podporuje většinu grafů kromě timepivot, pivotcharta ladderchart. Vykreslení je podporováno se všemi atributy kromě kind, ysplita accumulate.

Dotazování a vykreslení výsečového grafu

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

Dotazování a vykreslení časového diagramu

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

Poznámka:

Tyto grafy jsou interaktivní. Vyberte časový rozsah, který chcete přiblížit k určitému času.

Přizpůsobení barev grafu

Pokud se vám výchozí paleta barev nelíbí, přizpůsobte grafy pomocí možností palety. Dostupné palety najdete tady: Zvolte paletu barev pro výsledek grafu dotazu kqlmagic.

  1. Seznam palet:

    %kql --palettes -popup_window
    
  2. Vyberte barevnou paletu cool a znovu vykreslíte dotaz:

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

Parametrizace dotazu pomocí Pythonu

Kqlmagic umožňuje jednoduchou výměnu mezi dotazovací jazyk Kusto a Pythonem. Další informace: Parametrizace dotazu kqlmagic pomocí Pythonu

Použití proměnné Pythonu v dotazu KQL

K filtrování dat můžete použít hodnotu proměnné Pythonu v dotazu:

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

Převod výsledků dotazu na datový rámec Pandas

K výsledkům dotazu KQL se dostanete v datovém rámci Pandas. Získejte přístup k posledním spuštěným výsledkům dotazu podle proměnné _kql_raw_result_ a výsledky můžete snadno převést na datový rámec Pandas následujícím způsobem:

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

Příklad

V mnoha analytických scénářích můžete chtít vytvořit opakovaně použitelné poznámkové bloky, které obsahují mnoho dotazů, a výsledky z jednoho dotazu do následných dotazů. Následující příklad používá proměnnou statefilter Pythonu k filtrování dat.

  1. Spuštěním dotazu zobrazte prvních 10 stavů s maximálním DamagePropertypočtem:

    %%kql
    StormEvents
    | summarize max(DamageProperty) by State
    | order by max_DamageProperty desc
    | take 10
    
  2. Spuštěním dotazu extrahujte nejvyšší stav a nastavte ho do proměnné Pythonu:

    df = _kql_raw_result_.to_dataframe()
    statefilter =df.loc[0].State
    statefilter
    
  3. Spusťte dotaz pomocí let příkazu a proměnné Pythonu:

    %%kql
    let _state = statefilter;
    StormEvents 
    | where State in (_state)
    | summarize statecount=count() by bin(StartTime,1d), State
    | render timechart title = "Trend"
    
  4. Spusťte příkaz nápovědy:

    %kql --help "help"
    

Tip

Chcete-li získat informace o všech dostupných konfiguracích, použijte %config Kqlmagic. Při řešení a zachycení chyb Kusto, jako jsou problémy s připojením a nesprávné dotazy, použijte %config Kqlmagic.short_errors=False

Ukázkové poznámkové bloky