Azure Data Explorer Python 라이브러리를 사용하여 데이터 쿼리Query data using the Azure Data Explorer Python library

이 문서에서는 Azure 데이터 탐색기를 사용 하 여 데이터를 쿼리 합니다.In this article, you query data using the Azure Data Explorer. Azure 데이터 탐색기는 로그 및 원격 분석 데이터에 사용 가능한 빠르고 확장성이 우수한 데이터 탐색 서비스입니다.Azure Data Explorer is a fast and highly scalable data exploration service for log and telemetry data.

Azure 데이터 탐색기는 Python에 대한 데이터 클라이언트 라이브러리를 제공합니다.Azure Data Explorer provides a data client library for Python. 이 라이브러리를 사용하여 코드에서 데이터를 쿼리할 수 있습니다.This library enables you to query data from your code. 학습을 지원 하기 위해 설정한 도움말 클러스터 의 테이블에 연결 합니다.Connect to a table on the help cluster that we have set up to aid learning. 해당 클러스터의 테이블을 쿼리하고 결과를 반환할 수 있습니다.You can query a table on that cluster and return the results.

필수 구성 요소Prerequisites

  • Python 3.4 이상Python 3.4+

  • AAD(Azure Active Directory)의 멤버인 조직 메일 계정An organizational email account that is a member of Azure Active Directory (AAD)

데이터 라이브러리 설치Install the data library

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

pip install azure-kusto-data

import 문 및 상수 추가Add import statements and constants

라이브러리의 클래스 및 데이터 분석 라이브러리인 pandas 를 가져옵니다.Import classes from the library, as well as pandas , a data analysis library.

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 데이터 탐색기는 AAD 테넌트 ID를 사용합니다.To authenticate an application, Azure Data Explorer uses your AAD tenant ID. 테넌트 ID를 찾으려면 다음 URL을 사용하여 YourDomain 을 사용자 도메인으로 대체합니다.To find your tenant ID, use the following URL, substituting your domain for YourDomain .

https://login.windows.net/<YourDomain>/.well-known/openid-configuration/

예를 들어 도메인이 contoso.com 인 경우 URL은 https://login.windows.net/contoso.com/.well-known/openid-configuration/입니다.For example, if your domain is contoso.com , the URL is: https://login.windows.net/contoso.com/.well-known/openid-configuration/. 결과를 보려면 이 URL을 클릭합니다. 첫 번째 줄은 다음과 같습니다.Click this URL to see the results; the first line is as follows.

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

이 경우의 테넌트 ID는 6babcaad-604b-40ac-a9d7-9fd97c0b779f입니다.The tenant ID in this case is 6babcaad-604b-40ac-a9d7-9fd97c0b779f. 이 코드를 실행하기 전에 AAD_TENANT_ID에 대한 값을 설정합니다.Set the value for AAD_TENANT_ID before running this code.

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

이제 연결 문자열을 구성합니다.Now construct the connection string. 이 예제에서는 디바이스 인증을 사용하여 클러스터에 액세스합니다.This example uses device authentication to access the cluster. Aad 응용 프로그램 인증서, aad 응용 프로그램 키, aad 사용자 및 암호를 사용할 수도 있습니다.You can also use AAD application certificate, AAD application key, and AAD user and password.

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

Azure 데이터 탐색기에 연결하고 쿼리 실행Connect to Azure Data Explorer and execute a query

클러스터에 대해 쿼리를 실행하고 출력을 데이터 프레임에 저장합니다.Execute a query against the cluster and store the output in a data frame. 이 코드가 실행되면 다음과 같은 메시지가 반환됩니다. 로그인하려면 웹 브라우저를 사용하여 https://microsoft.com/devicelogin 페이지를 열고 코드 F3W4VWZDM을 입력하여 인증하세요.When this code runs, it returns a message like the following: To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code F3W4VWZDM to authenticate . 단계에 따라 로그인한 후 돌아가서 다음 코드 블록을 실행합니다.Follow the steps to sign-in, then return to run the next code block.

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

RESPONSE = KUSTO_CLIENT.execute(KUSTO_DATABASE, KUSTO_QUERY)

DataFrame에서 데이터 탐색Explore data in DataFrame

로그인을 입력한 후 쿼리가 결과를 반환하고 결과는 데이터 프레임에 저장됩니다.After you enter a sign in, the query returns results, and they are stored in a data frame. 다른 데이터 프레임을 사용하는 것처럼 결과를 사용할 수 있습니다.You can work with the results like you do any other data frame.

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

StormEvents 테이블의 상위 10개 결과가 표시됩니다.You should see the top ten results from the StormEvents table.

다음 단계Next steps