Usar um Jupyter Notebook e a extensão kqlmagic para analisar dados no Azure Data Explorer
O Jupyter Notebook é um aplicativo Web de código aberto que permite que criar e compartilhar documentos que contêm código dinâmico, equações, visualizações e texto narrativo. É útil para uma ampla variedade de tarefas, como limpeza e transformação de dados, simulação numérica, modelagem estatística, visualização de dados e machine learning.
O Kqlmagic estende os recursos do kernel do Python no Jupyter Notebook para que você possa executar consultas da Linguagem de Consulta Kusto (KQL) nativamente. Você pode combinar Python e KQL para consultar e visualizar dados usando a biblioteca avançada Plot.ly integrada ao operador de renderização. A extensão kqlmagic é compatível com o Jupyter Lab, a extensão Jupyter do Visual Studio Code e o Azure Data Studio e as fontes de dados com suporte incluem o Azure Data Explorer, os logs do Azure Monitor e o Application Insights.
Neste artigo, você aprenderá a usar o kqlmagic em um Jupyter Notebook para se conectar e consultar dados armazenados no Azure Data Explorer.
Pré-requisitos
- Uma conta Microsoft ou uma identidade de usuário do Microsoft Entra. Uma assinatura do Azure não é necessária.
- Jupyter Notebook instalado em 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.
Instale o 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.
Para instalar o kqlmagic, execute o seguinte comando:
!pip install Kqlmagic --no-cache-dir --upgrade
Para carregar a extensão kqlmagic, execute o seguinte comando:
%reload_ext Kqlmagic
Conectar a um cluster
Selecione a guia do método preferido para se conectar ao cluster.
Observação
Recomendamos usar o método de autenticação Certificado quando possível.
O certificado do 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>'
Dica
- Para parametrizar a cadeia de conexão, use valores sem aspas, pois 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 conexão de cluster
O comando a seguir usa o método de código do Microsoft Entra para autenticar no Samples
banco de dados hospedado no help
cluster. 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 conexã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 | Exemplo de sintaxe |
---|---|---|
try_azcli_login | Tente obter credenciais de autenticação da 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 da entrada da conta do Azure do Visual Studio Code. | -try_vscode_login |
try_msi | Tente obter credenciais de autenticação do ponto de extremidade local do MSI. Espera um dicionário com os parâmetros MSI opcionais: resource ,/client_id object_id mis_res_id / , cloud_environment , . timeout |
-try_msi={"client_id":<id>} |
try_token | Autentique 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 opção de conexão
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:
%kql azureDataExplorer://code;cluster='help';database='Samples' -try_azcli_login
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 de dados usando o operador renderizar e visualize dados usando a biblioteca ploy.ly. Essa consulta e visualização fornece uma experiência integrada que usa um KQL nativo. O Kqlmagic dá suporte a maioria dos gráficos, exceto timepivot
, pivotchart
, e ladderchart
. A renderização é compatível com todos os atributos, exceto kind
, ysplit
, e accumulate
.
Consultar e renderizar o gráfico de pizza
%%kql
StormEvents
| summarize statecount=count() by State
| sort by statecount
| take 10
| render piechart title="My Pie Chart by State"
Consultar e renderizar o gráfico de tempo
%%kql
StormEvents
| summarize count() by bin(StartTime,7d)
| render timechart
Observação
Os gráficos são interativos. Selecione um intervalo de tempo para ampliar um horário específico.
Personalizar a legenda de cores
Se 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 consultas do kqlmagic
Para uma lista de paletas:
%kql --palettes -popup_window
Selecione a paleta de cores
cool
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
Kqlmagic permite o intercâmbio simples entre a linguagem de consulta Kusto e o Python. Para saber mais: parametrizar a consulta do kqlmagic com o Python
Usar uma variável de Python em sua consulta KQL
Use o valor de uma variável de 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 os resultados da consulta em DataFrame do Pandas
Você pode acessar os resultados de uma consulta KQL no DataFrame Pandas. Acesse os últimos resultados da consulta executada pela variável _kql_raw_result_
e converta facilmente os resultados em DataFrame Pandas da seguinte maneira:
df = _kql_raw_result_.to_dataframe()
df.head(10)
Exemplo
Em muitos cenários de análise, você talvez queira criar blocos de anotações reutilizáveis que contêm muitas consultas e alimentam os resultados de uma consulta em consultas subsequentes. O exemplo a seguir usa a variável de Python statefilter
para filtrar os dados.
Executar uma consulta para exibir os estados de 10 principais com máximo
DamageProperty
:%%kql StormEvents | summarize max(DamageProperty) by State | order by max_DamageProperty desc | take 10
Execute uma consulta para extrair o estado superior e defina-o em uma variável de Python:
df = _kql_raw_result_.to_dataframe() statefilter =df.loc[0].State statefilter
Executar uma consulta usando a instrução
let
e a variável de Python:%%kql let _state = statefilter; StormEvents | where State in (_state) | summarize statecount=count() by bin(StartTime,1d), State | render timechart title = "Trend"
Execute o comando de Ajuda:
%kql --help "help"
Dica
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
Notebooks de exemplo
- Introdução ao kqlmagic para o Azure Data Explorer
- Introdução ao kqlmagic para o Application Insights
- Introdução ao kqlmagic para os logs do Azure Monitor
- Parametrizar a consulta do kqlmagic com o Python
- Escolher paleta de cores para o resultado do gráfico de consulta do kqlmagic