Azure Data Explorer Python 라이브러리를 사용하여 데이터 쿼리

이 문서에서는 Azure Data Explorer를 사용하여 데이터를 쿼리합니다. Azure 데이터 탐색기는 로그 및 원격 분석 데이터에 사용 가능한 빠르고 확장성이 우수한 데이터 탐색 서비스입니다.

Azure 데이터 탐색기는 Python에 대한 데이터 클라이언트 라이브러리를 제공합니다. 이 라이브러리를 사용하여 코드에서 데이터를 쿼리할 수 있습니다. 학습을 지원하기 위해 설정한 help 클러스터에 대한 테이블에 연결합니다. 해당 클러스터에 대한 테이블을 쿼리하고 결과를 반환합니다.

사전 요구 사항

데이터 라이브러리 설치

azure-kusto-data를 설치합니다.

pip install azure-kusto-data

import 문 및 상수 추가

라이브러리의 클래스 및 데이터 분석 라이브러리인 pandas를 가져옵니다.

from azure.kusto.data import KustoClient, KustoConnectionStringBuilder
from azure.kusto.data.exceptions import KustoServiceError
from azure.kusto.data.helpers import dataframe_from_result_table
import pandas as pd

애플리케이션을 인증하기 위해 Azure Data Explorer Microsoft Entra 테넌트 ID를 사용합니다. 테넌트 ID를 찾으려면 다음 URL을 사용하여 YourDomain을 사용자 도메인으로 대체합니다.

https://login.microsoftonline.com/<YourDomain>/.well-known/openid-configuration/

예를 들어 도메인이 contoso.com인 경우 URL은 https://login.microsoftonline.com/contoso.com/.well-known/openid-configuration/입니다. 결과를 보려면 이 URL을 클릭합니다. 첫 번째 줄은 다음과 같습니다.

"authorization_endpoint":"https://login.microsoftonline.com/6babcaad-604b-40ac-a9d7-9fd97c0b779f/oauth2/authorize"

이 경우의 테넌트 ID는 6babcaad-604b-40ac-a9d7-9fd97c0b779f입니다. 이 코드를 실행하기 전에 AAD_TENANT_ID에 대한 값을 설정합니다.

AAD_TENANT_ID = "<TenantId>"
KUSTO_CLUSTER = "https://help.kusto.windows.net/"
KUSTO_DATABASE = "Samples"

이제 연결 문자열을 구성합니다. 이 예제에서는 디바이스 인증을 사용하여 클러스터에 액세스합니다. Microsoft Entra 애플리케이션 인증서, Microsoft Entra 애플리케이션 키Microsoft Entra 사용자 및 암호를 사용할 수도 있습니다.

KCSB = KustoConnectionStringBuilder.with_aad_device_authentication(
    KUSTO_CLUSTER)
KCSB.authority_id = AAD_TENANT_ID

Azure 데이터 탐색기에 연결하고 쿼리 실행

클러스터에 대해 쿼리를 실행하고 출력을 데이터 프레임에 저장합니다. 이 코드가 실행되면 다음과 같은 메시지가 반환됩니다. 로그인하려면 웹 브라우저를 사용하여 https://microsoft.com/devicelogin 페이지를 열고 코드 F3W4VWZDM을 입력하여 인증하세요. 단계에 따라 로그인한 후 돌아가서 다음 코드 블록을 실행합니다.

KUSTO_CLIENT = KustoClient(KCSB)
KUSTO_QUERY = "StormEvents | sort by StartTime desc | take 10"

RESPONSE = KUSTO_CLIENT.execute(KUSTO_DATABASE, KUSTO_QUERY)

DataFrame에서 데이터 탐색

로그인을 입력한 후 쿼리가 결과를 반환하고 결과는 데이터 프레임에 저장됩니다. 다른 데이터 프레임을 사용하는 것처럼 결과를 사용할 수 있습니다.

df = dataframe_from_result_table(RESPONSE.primary_results[0])
df

StormEvents 테이블의 상위 10개 결과가 표시됩니다.

다음 단계