Partilhar via


Usar um Bloco de Anotações e kqlmagic para analisar dados no Azure Data Explorer

Jupyter Notebook é uma aplicação web de código aberto que permite criar e compartilhar documentos contendo código ao vivo, equações, visualizações e texto narrativo. É útil para uma ampla gama de tarefas, como limpeza e transformação de dados, simulação numérica, modelagem estatística, visualização de dados e aprendizado de máquina.

O Kqlmagic estende os recursos do kernel Python no Jupyter Notebook para que você possa executar consultas Kusto Query Language (KQL) nativamente. Você pode combinar Python e KQL para consultar e visualizar dados usando a biblioteca de Plot.ly avançada integrada com o operador de renderização . A extensão Kqlmagic é compatível com o Jupyter Lab, a extensão Visual Studio Code Jupyter e o Azure Data Studio, e as fontes de dados suportadas incluem o Azure Data Explorer, logs do Azure Monitor e Application Insights.

Neste artigo, saiba como usar a extensão Kqlmagic em um Bloco de Anotações para se conectar e consultar dados armazenados no Azure Data Explorer.

Pré-requisitos

  • Uma conta Microsoft ou uma identidade de utilizador do Microsoft Entra. Uma assinatura do Azure não é necessária.
  • Um Notebook instalado na sua máquina local. Caso contrário, use o Azure Data Studio.
  • Python 3.6. Para alterar a versão do kernel do Jupyter Notebook para Python 3.6, selecione Kernel>Change Kernel>Python 3.6.

Instalar kqlmagic

Depois de instalar e carregar a extensão kqlmagic, você pode escrever consultas KQL em seu notebook. Se o kernel parar ou os resultados não forem os esperados, recarregue a extensão kqlmagic.

  1. Para instalar o kqlmagic, execute o seguinte comando:

    !pip install Kqlmagic --no-cache-dir  --upgrade
    
  2. Para carregar a extensão kqlmagic, execute o seguinte comando:

    %reload_ext Kqlmagic
    

Ligar a um cluster

Selecione a guia do seu método preferido para se conectar ao cluster.

Observação

Recomendamos o uso do método de autenticação Certificate quando possível.

O certificado Microsoft Entra deve ser armazenado em um arquivo acessível a partir do bloco de anotações. Esse arquivo pode ser referenciado na cadeia de conexão.

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

Sugestão

  • Para parametrizar a cadeia de conexão, use valores não cotados como eles são interpretados como expressões Python.
  • Para simplificar o processo de obtenção de credenciais, consulte Opções de conexão.

Exemplo de uma conexão de cluster

O comando a seguir usa o método de código Microsoft Entra para autenticar no banco de dados Samples hospedado no cluster help. Para usuários que não são do Microsoft Entra, substitua o nome Microsoft.com do locatário pelo locatário do Microsoft Entra.

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

Opções de ligação

Para simplificar o processo de obtenção de credenciais, você pode adicionar um dos seguintes sinalizadores de opção após a cadeia de conexão.

Opção Descrição Sintaxe de exemplo
try_azcli_login Tente obter credenciais de autenticação da CLI do Azure. Espera que você esteja conectado usando a CLI do Azure. Consulte o Exemplo de uma conexão usando a CLI do Azure. -try_azcli_login
try_azcli_login_subscription Tente obter credenciais de autenticação da CLI do Azure com base na assinatura especificada. -try_azcli_login_subscription=<subscription_id>
try_vscode_login Tente obter credenciais de autenticação do logon da conta do Azure do Visual Studio Code. -try_vscode_login
try_msi Tente obter credenciais de autenticação do ponto de acesso local MSI. Espera um dicionário com os parâmetros MSI opcionais: resource,/client_idobject_idmis_res_id/ , cloud_environment, . timeout -try_msi={"client_id":<id>}
try_token Autentique-se com um token especificado. Espera um dicionário com propriedades de token do Azure AD v1 ou v2. -try_token={"tokenType":"bearer","accessToken":"<token>"}

Exemplo de uma conexão usando a CLI do Azure

Qualquer uma das opções descritas na tabela anterior pode ser adicionada após uma cadeia de conexão. O exemplo a seguir usa a opção de entrada da CLI do Azure como o método de autenticação:

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

Observação

Esta opção pressupõe que você esteja conectado ao Azure usando a CLI do Azure. Se você não estiver conectado, uma janela pop-up solicitará que você faça logon no Azure.

Exibir informações de conexão

Para ver todas as conexões existentes, execute o seguinte comando:

%kql --conn

Para verificar os detalhes de uma conexão específica, execute o seguinte comando:

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

Consultar e visualizar

Consulte dados usando o operador de renderização e visualize dados usando a biblioteca de ploy.ly. Essa consulta e visualização fornecem uma experiência integrada que usa KQL nativo.

Kqlmagic suporta a maioria dos gráficos, exceto timepivot, pivotcharte ladderchart. A renderização é suportada com todos os atributos, exceto kind, ysplite accumulate.

Consultar e renderizar piechart

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

Consultar e renderizar gráfico temporal

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

Observação

Estes gráficos são interativos. Selecione um intervalo de tempo para ampliar um horário específico.

Personalizar as cores do gráfico

Se você não gostar da paleta de cores padrão, personalize os gráficos usando as opções de paleta. As paletas disponíveis podem ser encontradas aqui: Escolha a paleta de cores para o resultado do gráfico de consulta kqlmagic

  1. Para obter uma lista de paletas:

    %kql --palettes -popup_window
    
  2. Selecione a paleta de cool cores e renderize a consulta novamente:

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

Parametrizar uma consulta com Python

O Kqlmagic permite um intercâmbio simples entre Kusto Query Language e Python. Para saber mais: Parametrize sua consulta kqlmagic com Python

Use uma variável Python em sua consulta KQL

Você pode usar o valor de uma variável Python em sua consulta para filtrar os dados:

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

Converter resultados de consulta em Pandas DataFrame

Você pode acessar os resultados de uma consulta KQL no Pandas DataFrame. Acesse os últimos resultados de consulta executados por variável _kql_raw_result_ e converta facilmente os resultados em Pandas DataFrame da seguinte maneira:

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

Exemplo

Em muitos cenários de análise, convém criar blocos de anotações reutilizáveis que contenham muitas consultas e alimentem os resultados de uma consulta em consultas subsequentes. O exemplo abaixo usa a variável statefilter Python para filtrar os dados.

  1. Execute uma consulta para visualizar os 10 principais estados com o máximo DamageProperty:

    %%kql
    StormEvents
    | summarize max(DamageProperty) by State
    | order by max_DamageProperty desc
    | take 10
    
  2. Execute uma consulta para extrair o estado superior e defini-lo em uma variável Python:

    df = _kql_raw_result_.to_dataframe()
    statefilter =df.loc[0].State
    statefilter
    
  3. Execute uma consulta usando a let instrução e a variável Python:

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

    %kql --help "help"
    

Sugestão

  • Para receber informações sobre todas as configurações disponíveis, use %config Kqlmagic.
  • Para solucionar problemas e capturar erros do Kusto, como problemas de conexão e consultas incorretas, use %config Kqlmagic.short_errors=False

Blocos de notas de exemplo