Azure Data Explorer-invoerbindingen voor Azure Functions (preview)
De Azure Data Explorer-invoerbinding haalt gegevens op uit een database.
Voorbeelden
U kunt een C#-functie maken met behulp van een van de volgende C#-modi:
- Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Geïsoleerd werkproces is vereist voor de ondersteuning van C#-functies die worden uitgevoerd op LTS- en niet-LTS-versies .NET en .NET Framework.
- In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Functions-runtime.
- C#-script: wordt voornamelijk gebruikt wanneer u C#-functies maakt in Azure Portal.
Belangrijk
De ondersteuning wordt beëindigd voor het in-process model op 10 november 2026. We raden u ten zeerste aan uw apps te migreren naar het geïsoleerde werkrolmodel voor volledige ondersteuning.
Meer voorbeelden voor de Azure Data Explorer-invoerbinding (niet verwerkt) zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat de volgende voorbeelden:
- HTTP-trigger, rij ophalen op id uit queryreeks
- HTTP-trigger, meerdere rijen ophalen uit routegegevens
De voorbeelden verwijzen naar een Product
klasse en de tabel Producten, die beide in de vorige secties zijn gedefinieerd.
HTTP-trigger, rij ophalen op id uit queryreeks
In het volgende voorbeeld ziet u een C#-functie waarmee één record wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag die gebruikmaakt van een querytekenreeks om de id op te geven. Deze id wordt gebruikt om een Product
record met de opgegeven query op te halen.
Notitie
De http-queryreeksparameter is hoofdlettergevoelig.
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-trigger, meerdere rijen ophalen uit routeparameter
In het volgende voorbeeld ziet u een C#-functie waarmee records worden opgehaald die door de query worden geretourneerd (op basis van de naam van het product, in dit geval). De functie wordt geactiveerd door een HTTP-aanvraag die routegegevens gebruikt om de waarde van een queryparameter op te geven. Deze parameter wordt gebruikt om de Product
records in de opgegeven query te filteren.
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;
}
}
}
Meer voorbeelden voor de Java Azure Data Explorer-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat de volgende voorbeelden:
De voorbeelden verwijzen naar een Product
klasse (in een afzonderlijk bestand Product.java
) en een bijbehorende databasetabel.
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-trigger, meerdere rijen ophalen
In het voorbeeld wordt een routeparameter gebruikt om de naam van de id van de producten op te geven. Alle overeenkomende producten worden opgehaald uit de productentabel.
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-trigger, rij ophalen op id uit queryreeks
In het volgende voorbeeld ziet u een query voor de tabel producten op basis van de productnaam. De functie wordt geactiveerd door een HTTP-aanvraag die gebruikmaakt van een querytekenreeks om de waarde van een queryparameter op te geven. Deze parameter wordt gebruikt om de Product
records in de opgegeven query te filteren.
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();
}
}
Meer voorbeelden voor de Azure Data Explorer-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat de volgende voorbeelden:
De voorbeelden verwijzen naar een databasetabel:
HTTP-trigger, meerdere rijen ophalen
In het volgende voorbeeld ziet u een Azure Data Explorer-invoerbinding in een function.json-bestand en een JavaScript-functie die uit een query leest en de resultaten in het HTTP-antwoord retourneert.
De volgende bindingsgegevens zijn opgenomen in het bestand 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
}
In de configuratiesectie worden deze eigenschappen uitgelegd.
Het volgende codefragment is een voorbeeld van JavaScript-code:
module.exports = async function (context, req, productget) {
return {
status: 200,
body: productget
};
}
HTTP-trigger, rij ophalen op naam uit queryreeks
In het volgende voorbeeld ziet u een query voor de tabel producten op basis van de productnaam. De functie wordt geactiveerd door een HTTP-aanvraag die gebruikmaakt van een querytekenreeks om de waarde van een queryparameter op te geven. Deze parameter wordt gebruikt om de Product
records in de opgegeven query te filteren.
De volgende bindingsgegevens zijn opgenomen in het bestand 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
}
In de configuratiesectie worden deze eigenschappen uitgelegd.
Het volgende codefragment is een voorbeeld van JavaScript-code:
module.exports = async function (context, req, producproductfngettget) {
return {
status: 200,
body: productfnget
};
}
Meer voorbeelden voor de Azure Data Explorer-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat de volgende voorbeelden:
HTTP-trigger, meerdere rijen ophalen
In het volgende voorbeeld ziet u een Azure Data Explorer-invoerbinding in een function.json-bestand en een Python-functie die uit een query leest en de resultaten in het HTTP-antwoord retourneert.
De volgende bindingsgegevens zijn opgenomen in het bestand 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"
}
]
}
In de configuratiesectie worden deze eigenschappen uitgelegd.
Het volgende codefragment is python-voorbeeldcode:
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-trigger, rij ophalen op id uit queryreeks
In het volgende voorbeeld ziet u een query voor de tabel producten op basis van de productnaam. De functie wordt geactiveerd door een HTTP-aanvraag die gebruikmaakt van een querytekenreeks om de waarde van een queryparameter op te geven. Deze parameter wordt gebruikt om de Product
records in de opgegeven query te filteren.
De volgende bindingsgegevens zijn opgenomen in het bestand 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
}
In de configuratiesectie worden deze eigenschappen uitgelegd.
Het volgende codefragment is python-voorbeeldcode:
import azure.functions as func
def main(req: func.HttpRequest, products: str) -> func.HttpResponse:
return func.HttpResponse(
products,
status_code=200,
mimetype="application/json"
)
Kenmerken
De C#-bibliotheek maakt gebruik van het KustoAttribute-kenmerk om de Azure Data Explorer-bindingen op de functie te declareren, die de volgende eigenschappen heeft.
Kenmerkeigenschap | Beschrijving |
---|---|
Database | Vereist. De database waarmee de query moet worden uitgevoerd. |
Connection | Vereist. De naam van de variabele met de verbindingsreeks, omgezet via omgevingsvariabelen of via instellingen van de functie-app. Standaard wordt gezocht naar de variabele KustoConnectionString . Tijdens runtime wordt deze variabele opgezoekd op basis van de omgeving. Documentatie over het verbindingsreeks vindt u in Kusto verbindingsreeks s. Bijvoorbeeld:"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 | Vereist. De KqlQuery parameter die moet worden uitgevoerd. Dit kan een KQL-query of een KQL-functieoproep zijn. |
KqlParameters | Optioneel. Parameters die fungeren als predicaatvariabelen voor KqlCommand . Bijvoorbeeld '@name={name}'@Id={id}, waarbij {name} en {id} tijdens runtime worden vervangen door werkelijke waarden die fungeren als predicaten. De parameternaam en de parameterwaarde mogen geen komma (, ) of een gelijkteken (= ) bevatten. |
ManagedServiceIdentity | Optioneel. U kunt een beheerde identiteit gebruiken om verbinding te maken met Azure Data Explorer. Als u een door het systeem beheerde identiteit wilt gebruiken, gebruikt u 'systeem'. Alle andere identiteitsnamen worden geïnterpreteerd als een door de gebruiker beheerde identiteit. |
Aantekeningen
De Runtime-bibliotheek van Java-functies maakt gebruik van de @KustoInput
aantekening (com.microsoft.azure.functions.kusto.annotation.KustoInput
).
Element | Description |
---|---|
naam | Vereist. De naam van de variabele die de query vertegenwoordigt, resulteert in functiecode. |
database | Vereist. De database waarmee de query moet worden uitgevoerd. |
verbinding | Vereist. De naam van de variabele met de verbindingsreeks, omgezet via omgevingsvariabelen of via instellingen van de functie-app. Standaard wordt gezocht naar de variabele KustoConnectionString . Tijdens runtime wordt deze variabele opgezoekd op basis van de omgeving. Documentatie over het verbindingsreeks vindt u in Kusto verbindingsreeks s. Bijvoorbeeld:"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 | Vereist. De KqlQuery parameter die moet worden uitgevoerd. Dit kan een KQL-query of een KQL-functieoproep zijn. |
kqlParameters | Optioneel. Parameters die fungeren als predicaatvariabelen voor KqlCommand . Bijvoorbeeld '@name={name}'@Id={id}, waarbij {name} en {id} tijdens runtime worden vervangen door werkelijke waarden die fungeren als predicaten. De parameternaam en de parameterwaarde mogen geen komma (, ) of een gelijkteken (= ) bevatten. |
managedServiceIdentity | Een beheerde identiteit kan worden gebruikt om verbinding te maken met Azure Data Explorer. Als u een door het systeem beheerde identiteit wilt gebruiken, gebruikt u 'systeem'. Alle andere identiteitsnamen worden geïnterpreteerd als een door de gebruiker beheerde identiteit. |
Configuratie
In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.
function.json-eigenschap | Beschrijving |
---|---|
type | Vereist. Moet worden ingesteld op kusto . |
richting | Vereist. Moet worden ingesteld op in . |
naam | Vereist. De naam van de variabele die de query vertegenwoordigt, resulteert in functiecode. |
database | Vereist. De database waarmee de query moet worden uitgevoerd. |
verbinding | Vereist. De naam van de variabele met de verbindingsreeks, omgezet via omgevingsvariabelen of via instellingen van de functie-app. Standaard wordt gezocht naar de variabele KustoConnectionString . Tijdens runtime wordt deze variabele opgezoekd op basis van de omgeving. Documentatie over het verbindingsreeks vindt u in Kusto verbindingsreeks s. Bijvoorbeeld:"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 | Vereist. De KqlQuery parameter die moet worden uitgevoerd. Dit kan een KQL-query of een KQL-functieoproep zijn. |
kqlParameters | Optioneel. Parameters die fungeren als predicaatvariabelen voor KqlCommand . Bijvoorbeeld '@name={name}'@Id={id}, waarbij {name} en {id} tijdens runtime worden vervangen door werkelijke waarden die fungeren als predicaten. De parameternaam en de parameterwaarde mogen geen komma (, ) of een gelijkteken (= ) bevatten. |
managedServiceIdentity | Een beheerde identiteit kan worden gebruikt om verbinding te maken met Azure Data Explorer. Als u een door het systeem beheerde identiteit wilt gebruiken, gebruikt u 'systeem'. Alle andere identiteitsnamen worden geïnterpreteerd als een door de gebruiker beheerde identiteit. |
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values
verzameling.
Gebruik
De constructor van het kenmerk neemt de database en de kenmerken KQLCommand
en KQLParameters
de naam van de verbindingsinstelling. De KQL-opdracht kan een KQL-instructie of een KQL-functie zijn. De naam van de verbindingsreeks-instelling komt overeen met de toepassingsinstelling (voor local.settings.json
lokale ontwikkeling) die de Kusto-verbindingsreeks s bevat. Voorbeeld: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId
. Query's die door de invoerbinding worden uitgevoerd, worden geparameteriseerd. De waarden die in de KQL-parameters worden opgegeven, worden tijdens runtime gebruikt.