Поделиться через


Используйте блокнот Jupyter и расширение kqlmagic для анализа данных в Azure Data Explorer

Jupyter Notebook — это веб-приложение с открытым исходным кодом, которое позволяет создавать и предоставлять общий доступ к документам, содержащим динамический код, уравнения, визуализации и текст повествования. Это полезно для широкого спектра задач, таких как очистка и преобразование данных, числовое моделирование, статистическое моделирование, визуализация данных и машинное обучение.

Kqlmagic расширяет возможности ядра Python в Jupyter Notebook, чтобы вы могли выполнять запросы язык запросов Kusto (KQL) в собственном коде. Вы можете объединить Python и KQL для запроса и визуализации данных с помощью полнофункциональной библиотеки Plot.ly, интегрированной с оператором отрисовки . Расширение kqlmagic совместимо с jupyter Lab, расширением Jupyter Для Visual Studio Code и Azure Data Studio, а также поддерживаемыми источниками данных, включая azure Data Обозреватель, журналы Azure Monitor и приложения Аналитика.

В этой статье вы узнаете, как использовать kqlmagic в Jupyter Notebook для подключения и запроса данных, хранящихся в azure Data Обозреватель.

Необходимые компоненты

  • Учетная запись Майкрософт или удостоверение пользователя Microsoft Entra. Подписка Azure не обязательна.
  • Jupyter Notebook установлен на локальном компьютере. В противном случае используйте Azure Data Studio.
  • Python 3.6. Чтобы изменить версию ядра Jupyter Notebook на Python 3.6, выберите ядро>>Python 3.6.

Установка kqlmagic

После установки и загрузки расширения kqlmagic можно написать запросы KQL в записной книжке. Если ядро останавливается или результаты не являются ожидаемыми, перезагрузите расширение kqlmagic.

  1. Чтобы установить kqlmagic, выполните следующую команду:

    !pip install Kqlmagic --no-cache-dir  --upgrade
    
  2. Чтобы загрузить расширение kqlmagic, выполните следующую команду:

    %reload_ext Kqlmagic
    

Подключение к кластеру

Выберите вкладку для предпочтительного метода для подключения к кластеру.

Примечание.

По возможности рекомендуется использовать метод проверки подлинности Certificate.

Сертификат Microsoft Entra должен храниться в файле, доступном из записной книжки. На этот файл можно ссылаться в строка подключения.

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

Совет

  • Чтобы параметризировать строка подключения, используйте неквотируемые значения, так как они интерпретируются как выражения Python.
  • Чтобы упростить процесс получения учетных данных, ознакомьтесь с параметрами Подключение ion.

Пример подключения к кластеру

Следующая команда использует метод кода Microsoft Entra для проверки подлинности в Samples базе данных, размещенной в кластере help . Для пользователей, отличных от Майкрософт, замените имя Microsoft.com клиента клиентом Microsoft Entra.

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

Параметры подключения

Чтобы упростить процесс получения учетных данных, можно добавить один из следующих флагов параметров после строка подключения.

Вариант Описание Пример синтаксиса
try_azcli_login Попытайтесь получить учетные данные проверки подлинности из Azure CLI. -try_azcli_login
try_azcli_login_subscription Попытайтесь получить учетные данные проверки подлинности из Azure CLI на основе указанной подписки. -try_azcli_login_subscription=<subscription_id>
try_vscode_login Попытайтесь получить учетные данные проверки подлинности из входа в учетную запись Azure Visual Studio Code. -try_vscode_login
try_msi Попытайтесь получить учетные данные проверки подлинности из локальной конечной точки MSI. Ожидает словарь с необязательными параметрами MSI: resource,/client_idobject_idmis_res_id/ , . timeoutcloud_environment -try_msi={"client_id":<id>}
try_token Проверка подлинности с помощью указанного маркера. Ожидает словарь со свойствами маркера Azure AD версии 1 или версии 2. -try_token={"tokenType":"bearer","accessToken":"<token>"}

Пример параметра подключения

Любой из параметров, описанных в предыдущей таблице, можно добавить после строка подключения. В следующем примере используется параметр входа в Azure CLI:

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

Отображение сведений о подключении

Чтобы просмотреть все существующие подключения, выполните следующую команду:

%kql --conn

Чтобы проверка сведения о конкретном подключении, выполните следующую команду:

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

Отправка запросов и визуализация

Запрашивайте данные с помощью оператора отображения и визуализируйте их с помощью библиотеки ploy.ly. Для запрашивания и визуализации данных используется интегрированный интерфейс, использующий собственный KQL. Kqlmagic поддерживает большинство диаграмм, за исключением timepivot, pivotchart и ladderchart. Отображение поддерживается для всех атрибутов, за исключением kind, ysplit и accumulate.

Запрос и отображение круговой диаграммы

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

Запрос и отображение временной диаграммы

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

Примечание.

Эти диаграммы являются интерактивными. Выберите диапазон времени, чтобы изменить масштаб в соответствии с этим диапазоном.

Настройка цветов диаграммы

Если вам не нравится цветовая палитра по умолчанию, настройте диаграммы с помощью параметров палитры. Доступные палитры можно найти здесь: Выберите цветовую палитру для результата диаграммы запроса kqlmagic.

  1. Для списка палитр:

    %kql --palettes -popup_window
    
  2. Выберите палитру цветов cool и снова отобразите результаты запроса.

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

Параметризация запроса с помощью Python

Kqlmagic позволяет легко выполнять обмен между язык запросов Kusto и Python. Чтобы узнать больше: Параметризуйте свой запрос kqlmagic с помощью Python

Использование переменной Python в запросе KQL

Для фильтрации данных можно использовать значение переменной Python в своем запросе.

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

Преобразование результатов запроса в Pandas DataFrame

Вы можете получить доступ к результатам выполнения запроса KQL в Pandas DataFrame. Вы можете получить доступ к результатам последних выполненных запросов с помощью переменной _kql_raw_result_ и легко преобразовать результаты в Pandas DataFrame следующим образом.

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

Пример

Во многих сценариях анализа может потребоваться создать повторно используемые записные книжки, которые содержат множество запросов, и передать результаты из одного запроса в последующие. В следующем примере используется переменная Python statefilter для фильтрации данных.

  1. Выполнение запроса для просмотра 10 состояний с максимальным значением параметра DamageProperty:

    %%kql
    StormEvents
    | summarize max(DamageProperty) by State
    | order by max_DamageProperty desc
    | take10
    
  2. Выполнение запроса для получения максимального состояния и запись этого значения в переменную Python:

    df = _kql_raw_result_.to_dataframe()
    statefilter =df.loc[0].State
    statefilter
    
  3. Выполнение запроса с использованием инструкции let и переменной Python:

    %%kql
    let _state = statefilter;
    StormEvents 
    | where State in (_state)
    | summarize statecount=count() by bin(StartTime,1d), State
    | render timechart title = "Trend"
    
  4. Выполнение команды help:

    %kql --help "help"
    

Совет

Для получения информации обо всех доступных конфигурациях используйте %config Kqlmagic. Для поиска и устранения ошибок Kusto, таких как проблемы с подключением и неправильные запросы, используйте %config Kqlmagic.short_errors=False

Записные книжки с примерами