Indatabindningar för Azure Data Explorer för Azure Functions (förhandsversion)
Azure Data Explorer-indatabindningen hämtar data från en databas.
Exempel
En C#-funktion kan skapas med något av följande C#-lägen:
- Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework.
- Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen.
- C#-skript: Används främst när du skapar C#-funktioner i Azure Portal.
Viktigt!
Supporten upphör för den pågående modellen den 10 november 2026. Vi rekommenderar starkt att du migrerar dina appar till den isolerade arbetsmodellen för fullt stöd.
Fler exempel för Azure Data Explorer-indatabindningen (indatabindningen är ur funktion) finns på GitHub-lagringsplatsen.
Det här avsnittet innehåller följande exempel:
- HTTP-utlösare, hämta rad efter ID från frågesträng
- HTTP-utlösare, hämta flera rader från routningsdata
Exemplen refererar till en Product
klass och tabellen Produkter, som båda definieras i föregående avsnitt.
HTTP-utlösare, hämta rad efter ID från frågesträng
I följande exempel visas en C#-funktion som hämtar en enda post. Funktionen utlöses av en HTTP-begäran som använder en frågesträng för att ange ID:t. Det ID:t används för att hämta en Product
post med den angivna frågan.
Kommentar
HTTP-frågesträngsparametern är skiftlägeskänslig.
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-utlösare, hämta flera rader från vägparametern
I följande exempel visas en C#-funktion som hämtar poster som returneras av frågan (baserat på produktens namn, i det här fallet). Funktionen utlöses av en HTTP-begäran som använder routningsdata för att ange värdet för en frågeparameter. Parametern används för att filtrera posterna Product
i den angivna frågan.
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;
}
}
}
Fler exempel för Java Azure Data Explorer-indatabindningen finns på GitHub-lagringsplatsen.
Det här avsnittet innehåller följande exempel:
Exemplen refererar till en Product
klass (i en separat fil Product.java
) och en motsvarande databastabell.
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-utlösare, hämta flera rader
I exemplet används en vägparameter för att ange namnet på produkternas ID. Alla matchande produkter hämtas från produkttabellen.
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-utlösare, hämta rad efter ID från frågesträng
I följande exempel visas en fråga för produkttabellen efter produktnamnet. Funktionen utlöses av en HTTP-begäran som använder en frågesträng för att ange värdet för en frågeparameter. Parametern används för att filtrera posterna Product
i den angivna frågan.
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();
}
}
Fler exempel för Azure Data Explorer-indatabindningen finns på GitHub-lagringsplatsen.
Det här avsnittet innehåller följande exempel:
Exemplen refererar till en databastabell:
HTTP-utlösare, hämta flera rader
I följande exempel visas en Azure Data Explorer-indatabindning i en function.json-fil och en JavaScript-funktion som läser från en fråga och returnerar resultatet i HTTP-svaret.
Följande bindningsdata finns i filen 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
}
I konfigurationsavsnittet förklaras dessa egenskaper.
Följande kodfragment är JavaScript-exempelkod:
module.exports = async function (context, req, productget) {
return {
status: 200,
body: productget
};
}
HTTP-utlösare, hämta rad efter namn från frågesträng
I följande exempel visas en fråga för produkttabellen efter produktnamnet. Funktionen utlöses av en HTTP-begäran som använder en frågesträng för att ange värdet för en frågeparameter. Parametern används för att filtrera posterna Product
i den angivna frågan.
Följande bindningsdata finns i filen 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
}
I konfigurationsavsnittet förklaras dessa egenskaper.
Följande kodfragment är JavaScript-exempelkod:
module.exports = async function (context, req, producproductfngettget) {
return {
status: 200,
body: productfnget
};
}
Fler exempel för Azure Data Explorer-indatabindningen finns på GitHub-lagringsplatsen.
Det här avsnittet innehåller följande exempel:
HTTP-utlösare, hämta flera rader
I följande exempel visas en Azure Data Explorer-indatabindning i en function.json-fil och en Python-funktion som läser från en fråga och returnerar resultatet i HTTP-svaret.
Följande bindningsdata finns i filen 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"
}
]
}
I konfigurationsavsnittet förklaras dessa egenskaper.
Följande kodfragment är python-exempelkod:
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-utlösare, hämta rad efter ID från frågesträng
I följande exempel visas en fråga för produkttabellen efter produktnamnet. Funktionen utlöses av en HTTP-begäran som använder en frågesträng för att ange värdet för en frågeparameter. Parametern används för att filtrera posterna Product
i den angivna frågan.
Följande bindningsdata finns i filen 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
}
I konfigurationsavsnittet förklaras dessa egenskaper.
Följande kodfragment är python-exempelkod:
import azure.functions as func
def main(req: func.HttpRequest, products: str) -> func.HttpResponse:
return func.HttpResponse(
products,
status_code=200,
mimetype="application/json"
)
Attribut
C#-biblioteket använder attributet KustoAttribute för att deklarera Azure Data Explorer-bindningar för funktionen, som har följande egenskaper.
Attributegenskap | beskrivning |
---|---|
Databas | Obligatoriskt. Databasen som frågan måste köras mot. |
Connection | Obligatoriskt. Namnet på variabeln som innehåller anslutningssträng, matchas via miljövariabler eller via funktionsappinställningar. Standardvärden för att söka efter variabeln KustoConnectionString . Vid körningen granskas den här variabeln mot miljön. Dokumentation om anslutningssträng finns på Kusto anslutningssträng s. Till exempel:"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 | Obligatoriskt. Parametern KqlQuery som måste köras. Kan vara en KQL-fråga eller ett KQL-funktionsanrop. |
KqlParameters | Valfritt. Parametrar som fungerar som predikatvariabler för KqlCommand . Till exempel "@name={name},@Id={id}", där {name} och {id} ersätts vid körning med faktiska värden som fungerar som predikat. Parameternamnet och parametervärdet får inte innehålla kommatecken (, ) eller likhetstecken (= ). |
ManagedServiceIdentity | Valfritt. Du kan använda en hanterad identitet för att ansluta till Azure Data Explorer. Om du vill använda en systemhanterad identitet använder du "system". Andra identitetsnamn tolkas som en användarhanterad identitet. |
Kommentarer
Java Functions-körningsbiblioteket använder anteckningen @KustoInput
(com.microsoft.azure.functions.kusto.annotation.KustoInput
).
Element | Description |
---|---|
name | Obligatoriska. Namnet på variabeln som representerar frågan resulterar i funktionskod. |
database | Obligatoriskt. Databasen som frågan måste köras mot. |
anslutning | Obligatoriskt. Namnet på variabeln som innehåller anslutningssträng, matchas via miljövariabler eller via funktionsappinställningar. Standardvärden för att söka efter variabeln KustoConnectionString . Vid körningen granskas den här variabeln mot miljön. Dokumentation om anslutningssträng finns på Kusto anslutningssträng s. Till exempel:"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 | Obligatoriskt. Parametern KqlQuery som måste köras. Kan vara en KQL-fråga eller ett KQL-funktionsanrop. |
kqlParameters | Valfritt. Parametrar som fungerar som predikatvariabler för KqlCommand . Till exempel "@name={name},@Id={id}", där {name} och {id} ersätts vid körning med faktiska värden som fungerar som predikat. Parameternamnet och parametervärdet får inte innehålla kommatecken (, ) eller likhetstecken (= ). |
managedServiceIdentity | En hanterad identitet kan användas för att ansluta till Azure Data Explorer. Om du vill använda en systemhanterad identitet använder du "system". Andra identitetsnamn tolkas som en användarhanterad identitet. |
Konfiguration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .
function.json egenskap | beskrivning |
---|---|
type | Obligatoriska. Måste anges till kusto . |
riktning | Obligatoriskt. Måste anges till in . |
name | Obligatoriska. Namnet på variabeln som representerar frågan resulterar i funktionskod. |
database | Obligatoriskt. Databasen som frågan måste köras mot. |
anslutning | Obligatoriskt. Namnet på variabeln som innehåller anslutningssträng, matchas via miljövariabler eller via funktionsappinställningar. Standardvärden för att söka efter variabeln KustoConnectionString . Vid körningen granskas den här variabeln mot miljön. Dokumentation om anslutningssträng finns på Kusto anslutningssträng s. Till exempel:"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 | Obligatoriskt. Parametern KqlQuery som måste köras. Kan vara en KQL-fråga eller ett KQL-funktionsanrop. |
kqlParameters | Valfritt. Parametrar som fungerar som predikatvariabler för KqlCommand . Till exempel "@name={name},@Id={id}", där {name} och {id} ersätts vid körning med faktiska värden som fungerar som predikat. Parameternamnet och parametervärdet får inte innehålla kommatecken (, ) eller likhetstecken (= ). |
managedServiceIdentity | En hanterad identitet kan användas för att ansluta till Azure Data Explorer. Om du vill använda en systemhanterad identitet använder du "system". Andra identitetsnamn tolkas som en användarhanterad identitet. |
När du utvecklar lokalt lägger du till dina programinställningar i den local.settings.json filen i Values
samlingen.
Förbrukning
Attributets konstruktor tar databasen, attributen KQLCommand
och KQLParameters
anslutningsinställningens namn. KQL-kommandot kan vara en KQL-instruktion eller en KQL-funktion. Det anslutningssträng inställningsnamnet motsvarar programinställningen (i local.settings.json
för lokal utveckling) som innehåller Kusto-anslutningssträng. Exempel: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId
. Frågor som körs av indatabindningen parametriseras. Värdena som anges i KQL-parametrarna används vid körning.