Azure Functions에 대한 Azure Data Explorer 입력 바인딩(미리 보기)
Azure Data Explorer 입력 바인딩은 데이터베이스에서 데이터를 검색합니다.
예제
C# 함수는 다음 C# 모드 중 하나를 사용하여 만들 수 있습니다.
- 격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. LTS 및 비 LTS 버전 .NET 및 .NET Framework에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다.
- In Process 모델: Functions 런타임과 동일한 프로세스에서 실행되는 컴파일된 C# 함수입니다.
- C# 스크립트: Azure Portal에서 C# 함수를 만들 때 주로 사용됩니다.
Important
2026년 11월 10일에 In-process 모델에 대한 지원이 종료됩니다. 모든 지원을 위해 앱을 격리된 작업자 모델로 마이그레이션하는 것이 좋습니다.
Azure Data Explorer 입력 바인딩(프로세스 외부)에 대한 추가 샘플은 GitHub 리포지토리에서 사용할 수 있습니다.
이 섹션에는 다음 예제가 포함되어 있습니다.
예에서는 이전 섹션에서 정의된 Product
클래스와 Products 테이블을 참조하세요.
HTTP 트리거, 쿼리 문자열에서 ID별 행 가져오기
다음 예는 단일 레코드를 검색하는 C# 함수를 보여 줍니다. 이 함수는 쿼리 문자열을 사용하여 ID를 지정하는 HTTP 요청에 의해 트리거됩니다. 해당 ID는 지정된 쿼리로 Product
레코드를 쿼리하는 데 사용됩니다.
참고 항목
HTTP 쿼리 문자열 매개 변수는 대/소문자를 구분합니다.
using System.Text.Json.Nodes;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Kusto;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Azure.WebJobs.Extensions.Kusto.SamplesOutOfProc.OutputBindingSamples.Common;
namespace Microsoft.Azure.WebJobs.Extensions.Kusto.SamplesOutOfProc.InputBindingSamples
{
public static class GetProductsQuery
{
[Function("GetProductsQuery")]
public static JsonArray Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproductsquery")] HttpRequestData req,
[KustoInput(Database: "productsdb",
KqlCommand = "declare query_parameters (productId:long);Products | where ProductID == productId",
KqlParameters = "@productId={Query.productId}",Connection = "KustoConnectionString")] JsonArray products)
{
return products;
}
}
}
HTTP 트리거, 경로 매개 변수에서 여러 행 가져오기
다음 예에서는 쿼리에서 반환된 레코드를 쿼리하는 C# 함수를 보여 줍니다(이 경우 제품 이름을 기준으로). 이 함수는 경로 데이터를 사용하여 쿼리 매개 변수의 값을 지정하는 HTTP 요청에 의해 트리거됩니다. 해당 매개 변수는 지정된 쿼리에서 Product
레코드를 필터링하는 데 사용됩니다.
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Kusto;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Azure.WebJobs.Extensions.Kusto.SamplesOutOfProc.OutputBindingSamples.Common;
namespace Microsoft.Azure.WebJobs.Extensions.Kusto.SamplesOutOfProc.InputBindingSamples
{
public static class GetProductsFunction
{
[Function("GetProductsFunction")]
public static IEnumerable<Product> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproductsfn/{name}")] HttpRequestData req,
[KustoInput(Database: "productsdb",
KqlCommand = "declare query_parameters (name:string);GetProductsByName(name)",
KqlParameters = "@name={name}",Connection = "KustoConnectionString")] IEnumerable<Product> products)
{
return products;
}
}
}
Java Azure Data Explorer 입력 바인딩에 대한 추가 샘플은 GitHub 리포지토리에서 사용할 수 있습니다.
이 섹션에는 다음 예제가 포함되어 있습니다.
예는 Product
클래스(별도 파일 Product.java
)와 해당 데이터베이스 테이블을 참조하세요.
package com.microsoft.azure.kusto.common;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Product {
@JsonProperty("ProductID")
public long ProductID;
@JsonProperty("Name")
public String Name;
@JsonProperty("Cost")
public double Cost;
public Product() {
}
public Product(long ProductID, String name, double Cost) {
this.ProductID = ProductID;
this.Name = name;
this.Cost = Cost;
}
}
HTTP 트리거, 여러 행 가져오기
이 예에서는 경로 매개 변수를 사용하여 제품 ID의 이름을 지정합니다. 일치하는 모든 제품이 제품 테이블에서 검색됩니다.
package com.microsoft.azure.kusto.inputbindings;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import com.microsoft.azure.functions.kusto.annotation.KustoInput;
import com.microsoft.azure.kusto.common.Product;
import java.util.Optional;
public class GetProducts {
@FunctionName("GetProducts")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {
HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS, route = "getproducts/{productId}") HttpRequestMessage<Optional<String>> request,
@KustoInput(name = "getjproducts", kqlCommand = "declare query_parameters (productId:long);Products | where ProductID == productId",
kqlParameters = "@productId={productId}", database = "productsdb", connection = "KustoConnectionString") Product[] products) {
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products)
.build();
}
}
HTTP 트리거, 쿼리 문자열에서 ID별 행 가져오기
다음 예에서는 제품 이름별로 제품 테이블에 대한 쿼리를 보여 줍니다. 이 함수는 쿼리 문자열을 사용하여 쿼리 매개 변수의 값을 지정하는 HTTP 요청에 의해 트리거됩니다. 해당 매개 변수는 지정된 쿼리에서 Product
레코드를 필터링하는 데 사용됩니다.
package com.microsoft.azure.kusto.inputbindings;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import com.microsoft.azure.functions.kusto.annotation.KustoInput;
import com.microsoft.azure.kusto.common.Product;
import java.util.Optional;
public class GetProductsQueryString {
@FunctionName("GetProductsQueryString")
public HttpResponseMessage run(@HttpTrigger(name = "req", methods = {
HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS, route = "getproducts") HttpRequestMessage<Optional<String>> request,
@KustoInput(name = "getjproductsquery", kqlCommand = "declare query_parameters (name:string);GetProductsByName(name)",
kqlParameters = "@name={Query.name}", database = "productsdb", connection = "KustoConnectionString") Product[] products) {
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products)
.build();
}
}
Azure Data Explorer 입력 바인딩에 대한 추가 샘플은 GitHub 리포지토리에서 사용할 수 있습니다.
이 섹션에는 다음 예제가 포함되어 있습니다.
예제는 데이터베이스 테이블을 참조하세요.
HTTP 트리거, 여러 행 가져오기
다음 예에서는 function.json 파일의 Azure Data Explorer 입력 바인딩과 쿼리에서 읽고 결과를 HTTP 응답으로 반환하는 JavaScript 함수를 보여 줍니다.
다음 바인딩 데이터는 function.json 파일에 있습니다.
{
"bindings": [
{
"authLevel": "function",
"name": "req",
"direction": "in",
"type": "httpTrigger",
"methods": [
"get"
],
"route": "getproducts/{productId}"
},
{
"name": "$return",
"type": "http",
"direction": "out"
},
{
"name": "productget",
"type": "kusto",
"database": "productsdb",
"direction": "in",
"kqlCommand": "declare query_parameters (productId:long);Products | where ProductID == productId",
"kqlParameters": "@productId={productId}",
"connection": "KustoConnectionString"
}
],
"disabled": false
}
구성 섹션에서는 이러한 속성을 설명합니다.
다음 코드 조각은 샘플 JavaScript 코드입니다.
module.exports = async function (context, req, productget) {
return {
status: 200,
body: productget
};
}
HTTP 트리거, 쿼리 문자열에서 이름별로 행 가져오기
다음 예에서는 제품 이름별로 제품 테이블에 대한 쿼리를 보여 줍니다. 이 함수는 쿼리 문자열을 사용하여 쿼리 매개 변수의 값을 지정하는 HTTP 요청에 의해 트리거됩니다. 해당 매개 변수는 지정된 쿼리에서 Product
레코드를 필터링하는 데 사용됩니다.
다음 바인딩 데이터는 function.json 파일에 있습니다.
{
"bindings": [
{
"authLevel": "function",
"name": "req",
"direction": "in",
"type": "httpTrigger",
"methods": [
"get"
],
"route": "getproductsfn"
},
{
"name": "$return",
"type": "http",
"direction": "out"
},
{
"name": "productfnget",
"type": "kusto",
"database": "productsdb",
"direction": "in",
"kqlCommand": "declare query_parameters (name:string);GetProductsByName(name)",
"kqlParameters": "@name={Query.name}",
"connection": "KustoConnectionString"
}
],
"disabled": false
}
구성 섹션에서는 이러한 속성을 설명합니다.
다음 코드 조각은 샘플 JavaScript 코드입니다.
module.exports = async function (context, req, producproductfngettget) {
return {
status: 200,
body: productfnget
};
}
Azure Data Explorer 입력 바인딩에 대한 추가 샘플은 GitHub 리포지토리에서 사용할 수 있습니다.
이 섹션에는 다음 예제가 포함되어 있습니다.
HTTP 트리거, 여러 행 가져오기
다음 예에서는 function.json 파일의 Azure Data Explorer 입력 바인딩과 쿼리에서 읽고 결과를 HTTP 응답으로 반환하는 Python 함수를 보여 줍니다.
다음 바인딩 데이터는 function.json 파일에 있습니다.
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "Anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get"
],
"route": "getproducts/{productId}"
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"name": "productsdb",
"type": "kusto",
"database": "sdktestsdb",
"direction": "in",
"kqlCommand": "declare query_parameters (productId:long);Products | where ProductID == productId",
"kqlParameters": "@productId={Query.productId}",
"connection": "KustoConnectionString"
}
]
}
구성 섹션에서는 이러한 속성을 설명합니다.
다음 코드 조각은 샘플 Python 코드입니다.
import azure.functions as func
from Common.product import Product
def main(req: func.HttpRequest, products: str) -> func.HttpResponse:
return func.HttpResponse(
products,
status_code=200,
mimetype="application/json"
)
HTTP 트리거, 쿼리 문자열에서 ID별 행 가져오기
다음 예에서는 제품 이름별로 제품 테이블에 대한 쿼리를 보여 줍니다. 이 함수는 쿼리 문자열을 사용하여 쿼리 매개 변수의 값을 지정하는 HTTP 요청에 의해 트리거됩니다. 해당 매개 변수는 지정된 쿼리에서 Product
레코드를 필터링하는 데 사용됩니다.
다음 바인딩 데이터는 function.json 파일에 있습니다.
{
"bindings": [
{
"authLevel": "function",
"name": "req",
"direction": "in",
"type": "httpTrigger",
"methods": [
"get"
],
"route": "getproductsfn"
},
{
"name": "$return",
"type": "http",
"direction": "out"
},
{
"name": "productfnget",
"type": "kusto",
"database": "productsdb",
"direction": "in",
"kqlCommand": "declare query_parameters (name:string);GetProductsByName(name)",
"kqlParameters": "@name={Query.name}",
"connection": "KustoConnectionString"
}
],
"disabled": false
}
구성 섹션에서는 이러한 속성을 설명합니다.
다음 코드 조각은 샘플 Python 코드입니다.
import azure.functions as func
def main(req: func.HttpRequest, products: str) -> func.HttpResponse:
return func.HttpResponse(
products,
status_code=200,
mimetype="application/json"
)
특성
C# 라이브러리는 KustoAttribute 특성을 사용하여 다음 속성이 있는 함수에 대한 Azure Data Explorer 바인딩을 선언합니다.
특성 속성 | 설명 |
---|---|
데이터베이스 | 필수입니다. 쿼리를 실행해야 하는 데이터베이스입니다. |
Connection | 필수입니다. 환경 변수 또는 함수 앱 설정을 통해 확인되는 연결 문자열을 보유하는 변수의 이름입니다. 변수 KustoConnectionString 을 조회하는 기본값입니다. 런타임 시 이 변수는 환경에 대해 조회됩니다. 연결 문자열에 대한 설명서는 Kusto 연결 문자열에 있습니다. 예:"KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId |
KqlCommand | 필수입니다. 실행해야 하는 KqlQuery 매개 변수입니다. KQL 쿼리 또는 KQL 함수 호출일 수 있습니다. |
KqlParameters | 선택 사항. KqlCommand 에 대한 조건자 변수 역할을 하는 매개 변수입니다. 예를 들어, "@name={name},@Id={id}"에서는 {name} 및 {id}가 런타임 시 조건자 역할을 하는 실제 값으로 대체됩니다. 매개 변수 이름과 매개 변수 값에는 쉼표(, ) 또는 등호(= )를 포함할 수 없습니다. |
ManagedServiceIdentity | 선택 사항. 관리 ID를 사용하여 Azure Data Explorer에 연결할 수 있습니다. 시스템 관리 ID를 사용하려면 "system"을 사용합니다. 다른 모든 ID 이름은 사용자 관리 ID로 해석됩니다. |
주석
Java 함수 런타임 라이브러리는 @KustoInput
주석(com.microsoft.azure.functions.kusto.annotation.KustoInput
)을 사용합니다.
요소 | 설명 |
---|---|
name | 필수입니다. 함수 코드에서 쿼리 결과를 나타내는 변수의 이름입니다. |
database | 필수입니다. 쿼리를 실행해야 하는 데이터베이스입니다. |
connection | 필수입니다. 환경 변수 또는 함수 앱 설정을 통해 확인되는 연결 문자열을 보유하는 변수의 이름입니다. 변수 KustoConnectionString 을 조회하는 기본값입니다. 런타임 시 이 변수는 환경에 대해 조회됩니다. 연결 문자열에 대한 설명서는 Kusto 연결 문자열에 있습니다. 예:"KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId |
kqlCommand | 필수입니다. 실행해야 하는 KqlQuery 매개 변수입니다. KQL 쿼리 또는 KQL 함수 호출일 수 있습니다. |
kqlParameters | 선택 사항. KqlCommand 에 대한 조건자 변수 역할을 하는 매개 변수입니다. 예를 들어, "@name={name},@Id={id}"에서는 {name} 및 {id}가 런타임 시 조건자 역할을 하는 실제 값으로 대체됩니다. 매개 변수 이름과 매개 변수 값에는 쉼표(, ) 또는 등호(= )를 포함할 수 없습니다. |
managedServiceIdentity | 관리 ID를 사용하여 Azure Data Explorer에 연결할 수 있습니다. 시스템 관리 ID를 사용하려면 "system"을 사용합니다. 다른 모든 ID 이름은 사용자 관리 ID로 해석됩니다. |
구성
다음 표에서는 function.json 파일에 설정된 바인딩 구성 속성을 설명합니다.
function.json 속성 | 설명 |
---|---|
type | 필수입니다. kusto 로 설정해야 합니다. |
direction | 필수입니다. in 로 설정해야 합니다. |
name | 필수입니다. 함수 코드에서 쿼리 결과를 나타내는 변수의 이름입니다. |
database | 필수입니다. 쿼리를 실행해야 하는 데이터베이스입니다. |
connection | 필수입니다. 환경 변수 또는 함수 앱 설정을 통해 확인되는 연결 문자열을 보유하는 변수의 이름입니다. 변수 KustoConnectionString 을 조회하는 기본값입니다. 런타임 시 이 변수는 환경에 대해 조회됩니다. 연결 문자열에 대한 설명서는 Kusto 연결 문자열에 있습니다. 예:"KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId |
kqlCommand | 필수입니다. 실행해야 하는 KqlQuery 매개 변수입니다. KQL 쿼리 또는 KQL 함수 호출일 수 있습니다. |
kqlParameters | 선택 사항. KqlCommand 에 대한 조건자 변수 역할을 하는 매개 변수입니다. 예를 들어, "@name={name},@Id={id}"에서는 {name} 및 {id}가 런타임 시 조건자 역할을 하는 실제 값으로 대체됩니다. 매개 변수 이름과 매개 변수 값에는 쉼표(, ) 또는 등호(= )를 포함할 수 없습니다. |
managedServiceIdentity | 관리 ID를 사용하여 Azure Data Explorer에 연결할 수 있습니다. 시스템 관리 ID를 사용하려면 "system"을 사용합니다. 다른 모든 ID 이름은 사용자 관리 ID로 해석됩니다. |
로컬에서 개발하는 경우 Values
컬렉션의 local.settings.json 파일에 애플리케이션 설정을 추가합니다.
사용
특성의 생성자는 데이터베이스와 KQLCommand
, KQLParameters
특성, 연결 설정 이름을 사용합니다. KQL 명령은 KQL 문 또는 KQL 함수일 수 있습니다. 연결 문자열 설정 이름은 Kusto 연결 문자열이 포함된 애플리케이션 설정(로컬 개발의 경우 local.settings.json
)에 해당합니다. 예: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId
입력 바인딩에 의해 실행되는 쿼리는 매개 변수화됩니다. KQL 매개 변수에 제공된 값은 런타임에 사용됩니다.