Hello Kusto: 첫 번째 앱 만들기
이 문서의 내용
적용 대상: ✅Microsoft Fabric ✅Azure Data Explorer
이 문서에서는 다음 방법을 알아봅니다.
첫 번째 클라이언트 앱 만들기
대화형 인증 사용
Hello Kusto!를 출력하는 기본 쿼리를 실행합니다.
필수 구성 요소
Kusto 클라이언트 라이브러리를 사용하도록 개발 환경 설정합니다.
앱 만들기
기본 설정 IDE 또는 텍스트 편집기에서 원하는 언어에 적합한 규칙을 사용하여 hello kusto 프로젝트 또는 파일을 만듭니다. 그런 다음, 다음 코드를 추가합니다.
Kusto 클라이언트 및 문자열 작성기 클래스를 추가합니다.
using Kusto.Data;
using Kusto.Data.Net.Client;
from azure.kusto.data import KustoClient, KustoConnectionStringBuilder
import { Client as KustoClient, KustoConnectionStringBuilder } from "azure-kusto-data";
import { InteractiveBrowserCredentialInBrowserOptions } from "@azure/identity";
메모
Node.js 앱의 경우 InteractiveBrowserCredentialInBrowserOptions
대신 InteractiveBrowserCredentialNodeOptions
사용합니다.
import com.microsoft.azure.kusto.data.Client;
import com.microsoft.azure.kusto.data.ClientFactory;
import com.microsoft.azure.kusto.data.KustoOperationResult;
import com.microsoft.azure.kusto.data.KustoResultSetTable;
import com.microsoft.azure.kusto.data.auth.ConnectionStringBuilder;
main
명명된 빈 함수를 정의하고 호출합니다.
namespace HelloKusto {
class HelloKusto {
static void Main(string[] args) {
}
}
}
def main():
if __name__ == "__main__":
main()
async function main()
{
}
main();
public class HelloKusto
{
public static void main(String[] args) throws Exception {
try {
}
}
}
클러스터 URI를 정의하고 인증 모드를 대화형으로 설정하는 연결 문자열 작성기 개체를 만듭니다. 클러스터 URI에 대한 자세한 내용은 Kusto 연결 문자열 을 참조하세요.
var clusterUri = "https://help.kusto.windows.net/";
var kcsb = new KustoConnectionStringBuilder(clusterUri).WithAadUserPromptAuthentication();
cluster_uri = "https://help.kusto.windows.net"
kcsb = KustoConnectionStringBuilder.with_interactive_login(cluster_uri)
및 은개발 환경 설정 의 필수 구성 요소 섹션에서 만든 Microsoft Entra 앱 등록에서 가져온 것입니다.
const clusterUri = "https://help.kusto.windows.net";
const authOptions = {
clientId: "00001111-aaaa-2222-bbbb-3333cccc4444",
redirectUri: "http://localhost:5173",
} as InteractiveBrowserCredentialInBrowserOptions;
const kcsb = KustoConnectionStringBuilder.withUserPrompt(clusterUri, authOptions);
메모
Node.js 앱의 경우 InteractiveBrowserCredentialInBrowserOptions
대신 InteractiveBrowserCredentialNodeOptions
사용합니다.
String clusterUri = "https://help.kusto.windows.net/";
ConnectionStringBuilder kcsb = ConnectionStringBuilder.createWithUserPrompt(clusterUri);
메모
대화형 인증의 경우 Microsoft 계정 또는 Microsoft Entra 사용자 ID가 필요합니다. Azure 구독은 필요하지 않습니다.
C#에서 대화형 인증 프로세스는 다음과 같은 경우 사용자에게 메시지를 표시하지 않을 수 있습니다.
사용자가 디바이스에서 이미 인증되었습니다.
디바이스에 기존 Kusto.Explorer 또는 Azure Date Explorer 웹 UI 인증이 있습니다.
연결 문자열 작성기 개체를 사용하여 클러스터에 연결하는 클라이언트 개체를 만듭니다.
메모
Kusto 클라이언트 인스턴스를 캐시하고 다시 사용하는 것이 좋습니다. Kusto 클라이언트를 자주 다시 만들면 애플리케이션의 성능이 저하되고 클러스터의 부하가 증가할 수 있습니다.
using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
}
with KustoClient(kcsb) as kusto_client:
const kustoClient = new KustoClient(kcsb);
try (Client kustoClient = ClientFactory.createClient(kcsb)) {
}
실행할 데이터베이스 및 쿼리를 정의합니다. 쿼리는 "Hello Kusto! "를 이름이 Welcome 인 열에 출력합니다.
var database = "Samples";
var query = "print Welcome='Hello Kusto!'";
database = "Samples"
query = "print Welcome='Hello Kusto!'"
const database = "Samples";
const query = "print Welcome='Hello Kusto!'";
String database = "Samples";
String query = "print Welcome='Hello Kusto!'";
쿼리를 실행하고 결과를 출력합니다.
using (var response = kustoClient.ExecuteQuery(database, query, null)) {
response.Read();
int columnNo = response.GetOrdinal("Welcome");
Console.WriteLine(response.GetString(columnNo));
}
response = kusto_client.execute(database, query)
print(response.primary_results[0][0]["Welcome"])
const response = await kustoClient.execute(database, query);
console.log(response.primaryResults[0][0]["Welcome"].toString());
KustoOperationResult response = kustoClient.execute(database, query);
KustoResultSetTable primary_results = response.getPrimaryResults();
primary_results.next();
System.out.println(primary_results.getString("Welcome"));
메모
쿼리 출력은 하나 이상의 행과 열로 구성된 하나 이상의 테이블을 포함하는 개체로 응답에 반환됩니다.
개체의 형식은 클라이언트 라이브러리 언어에 따라 달라집니다.
인쇄 kusto 쿼리는 하나의 행과 열이 있는 단일 테이블을 반환합니다.
기본 결과 JSON 개체의 응답입니다. 개체에는 테이블 배열이 포함되며, 이 배열에는 행 배열이 포함됩니다. 각 행에는 열 사전으로 구성된 데이터가 포함됩니다. 다음과 같이 결과를 참조할 수 있습니다.
첫 번째 배열 인덱스 [0]
첫 번째 테이블을 참조합니다.
두 번째 배열 인덱스 [0]
첫 번째 행을 참조합니다.
사전 키 ["Welcome"]
는 환영 열을 참조합니다.
응답은 KustoOperationResult 개체입니다. 다음과 같이 결과를 참조할 수 있습니다.
getPrimaryResults() 메서드를 사용하여 기본 결과 테이블 가져오기
첫 번째 행을 읽는 next() 메서드
첫 번째 열의 값을 가져오는 getString() 메서드
전체 코드는 다음과 같습니다.
using Kusto.Data;
using Kusto.Data.Net.Client;
namespace HelloKusto {
class HelloKusto {
static void Main(string[] args) {
string clusterUri = "https://help.kusto.windows.net/";
var kcsb = new KustoConnectionStringBuilder(clusterUri).WithAadUserPromptAuthentication();
using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
string database = "Samples";
string query = "print Welcome='Hello Kusto!'";
using (var response = kustoClient.ExecuteQuery(database, query, null)) {
response.Read();
int columnNo = response.GetOrdinal("Welcome");
Console.WriteLine(response.GetString(columnNo));
}
}
}
}
}
from azure.kusto.data import KustoClient, KustoConnectionStringBuilder
def main():
cluster_uri = "https://help.kusto.windows.net"
kcsb = KustoConnectionStringBuilder.with_interactive_login(cluster_uri)
with KustoClient(kcsb) as kusto_client:
database = "Samples"
query = "print Welcome='Hello Kusto!'"
response = kusto_client.execute(database, query)
print(response.primary_results[0][0]["Welcome"])
if __name__ == "__main__":
main()
import { Client as KustoClient, KustoConnectionStringBuilder } from "azure-kusto-data/";
import { InteractiveBrowserCredentialInBrowserOptions } from "@azure/identity";
async function main()
{
const clusterUri = "https://help.kusto.windows.net";
const authOptions = {
clientId: "00001111-aaaa-2222-bbbb-3333cccc4444",
redirectUri: "http://localhost:5173",
} as InteractiveBrowserCredentialInBrowserOptions;
const kcsb = KustoConnectionStringBuilder.withUserPrompt(clusterUri, authOptions);
const kustoClient = new KustoClient(kcsb);
const database = "Samples";
const query = "print Welcome='Hello Kusto!'";
const response = await kustoClient.execute(database, query);
console.log(response.primaryResults[0][0]["Welcome"].toString());
}
main();
메모
Node.js 앱의 경우 InteractiveBrowserCredentialInBrowserOptions
대신 InteractiveBrowserCredentialNodeOptions
사용합니다.
import com.microsoft.azure.kusto.data.Client;
import com.microsoft.azure.kusto.data.ClientFactory;
import com.microsoft.azure.kusto.data.KustoOperationResult;
import com.microsoft.azure.kusto.data.KustoResultSetTable;
import com.microsoft.azure.kusto.data.auth.ConnectionStringBuilder;
public class HelloKusto {
public static void main(String[] args) throws Exception {
try {
String clusterUri = "https://help.kusto.windows.net/";
ConnectionStringBuilder kcsb = ConnectionStringBuilder.createWithUserPrompt(clusterUri);
try (Client kustoClient = ClientFactory.createClient(kcsb)) {
String database = "Samples";
String query = "print Welcome='Hello Kusto!'";
KustoOperationResult response = kustoClient.execute(database, query);
KustoResultSetTable primaryResults = response.getPrimaryResults();
primaryResults.next();
System.out.println(primaryResults.getString("Welcome"));
}
}
}
}
앱 실행
명령 셸에서 다음 명령을 사용하여 앱을 실행합니다.
# Change directory to the folder that contains the hello world project
dotnet run .
Node.js 환경에서 다음을 수행합니다.
node hello-kusto.js
브라우저 환경에서 적절한 명령을 사용하여 앱을 실행합니다. 예를 들어 Vite-React의 경우:
npm run dev
mvn install exec:java -Dexec.mainClass="<groupId>.HelloKusto"
다음과 유사한 결과가 표시됩니다.
Hello Kusto!
다음 단계