Liaisons d’entrée Azure Data Explorer pour Azure Functions (préversion)
La liaison d’entrée Azure Data Explorer récupère les données d’une base de données.
Exemples
Une fonction C# peut être créée à l’aide de l’un des modes C# suivants :
- Modèle worker isolé : fonction C# compilée exécutée dans un processus worker isolé du runtime. Le processus Worker isolé est requis pour prendre en charge les fonctions C# exécutées sur les versions LTS et non-LTS de .NET et de .NET Framework.
- Modèle In-process : fonction C# compilée exécutée dans le même processus que le runtime Functions.
- Script C# : principalement utilisé lors de la création de fonctions C# dans le portail Azure.
Important
La prise en charge du modèle in-process prendra fin le 10 novembre 2026. Pour continuer à bénéficier d’une prise en charge complète, nous vous recommandons vivement de migrer vos applications vers le modèle worker isolé.
D’autres exemples pour la liaison d’entrée Azure Data Explorer (hors processus) sont disponibles dans le référentiel GitHub.
Cette section contient les exemples suivants :
- Déclencheur HTTP, obtenir une ligne par ID à partir de la chaîne de requête
- Déclencheur HTTP, obtention de plusieurs lignes à partir de données d’itinéraire
Les exemples font référence à une classe Product
et à la table Products, qui sont tous deux définis dans les sections précédentes.
Déclencheur HTTP, obtenir une ligne par ID à partir de la chaîne de requête
L’exemple suivant illustre une fonction C# qui récupère un dossier unique. La fonction est déclenchée par une requête HTTP qui utilise une chaîne de requête pour spécifier l’ID à rechercher. Cet ID est utilisé pour récupérer un Product
enregistrement avec la requête spécifiée.
Remarque
Le paramètre de chaîne de requête HTTP respecte la casse.
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;
}
}
}
Déclencheur HTTP, obtention de plusieurs lignes à partir du paramètre d’itinéraire
L’exemple suivant montre une fonction C# qui récupère les enregistrements retournés par la requête (en fonction du nom du produit, dans ce cas). Cette fonction est déclenchée par une requête HTTP qui utilise des données de routage pour spécifier la valeur du paramètre de la requête. Ce paramètre est utilisé pour filtrer les enregistrements Product
dans la requête spécifiée.
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;
}
}
}
D’autres exemples pour la liaison d’entrée Azure Data Explorer Java sont disponibles dans le référentiel GitHub.
Cette section contient les exemples suivants :
- Déclencheur HTTP, obtenir plusieurs lignes
- Déclencheur HTTP, obtenir une ligne par ID à partir de la chaîne de requête
Les exemples font référence à une Product
classe (dans un fichier Product.java
distinct) et à une table de base de données correspondante.
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;
}
}
Déclencheur HTTP, obtenir plusieurs lignes
L’exemple utilise un paramètre d’itinéraire pour spécifier le nom de l’ID des produits. Tous les produits correspondants sont récupérés à partir de la table products.
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();
}
}
Déclencheur HTTP, obtenir une ligne par ID à partir de la chaîne de requête
L’exemple suivant montre une requête pour la table des produits par le nom du produit. Cette fonction est déclenchée par une requête HTTP qui utilise une chaîne de requête pour spécifier la valeur du paramètre de la requête. Ce paramètre est utilisé pour filtrer les enregistrements Product
dans la requête spécifiée.
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();
}
}
D’autres exemples pour la liaison d’entrée Azure Data Explorer sont disponibles dans le référentiel GitHub.
Cette section contient les exemples suivants :
- Déclencheur HTTP, obtenir plusieurs lignes
- Déclencheur HTTP, obtenir une ligne par ID à partir de la chaîne de requête
Les exemples font référence à une table de base de données :
Déclencheur HTTP, obtenir plusieurs lignes
L’exemple suivant montre une liaison d’entrée Azure Data Explorer dans un fichier function.json et une fonction JavaScript qui lit à partir d’une requête et retourne les résultats dans la réponse HTTP.
Les données de liaison suivantes se situent dans le fichier 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
}
La section configuration décrit ces propriétés.
L’extrait suivant contient un exemple de code JavaScript :
module.exports = async function (context, req, productget) {
return {
status: 200,
body: productget
};
}
Déclencheur HTTP, obtenir une ligne par nom à partir de la chaîne de requête
L’exemple suivant montre une requête pour la table des produits par le nom du produit. Cette fonction est déclenchée par une requête HTTP qui utilise une chaîne de requête pour spécifier la valeur du paramètre de la requête. Ce paramètre est utilisé pour filtrer les enregistrements Product
dans la requête spécifiée.
Les données de liaison suivantes se situent dans le fichier 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
}
La section configuration décrit ces propriétés.
L’extrait suivant contient un exemple de code JavaScript :
module.exports = async function (context, req, producproductfngettget) {
return {
status: 200,
body: productfnget
};
}
D’autres exemples pour la liaison d’entrée Azure Data Explorer sont disponibles dans le référentiel GitHub.
Cette section contient les exemples suivants :
- Déclencheur HTTP, obtenir plusieurs lignes
- Déclencheur HTTP, obtenir des enregistrements à l’aide d’une fonction KQL
Déclencheur HTTP, obtenir plusieurs lignes
L’exemple suivant montre une liaison d’entrée Azure Data Explorer dans un fichier function.json et une fonction Python qui lit à partir d’une requête et retourne les résultats dans la réponse HTTP.
Les données de liaison suivantes se situent dans le fichier 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"
}
]
}
La section configuration décrit ces propriétés.
L’extrait suivant contient un exemple de code 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"
)
Déclencheur HTTP, obtenir une ligne par ID à partir de la chaîne de requête
L’exemple suivant montre une requête pour la table des produits par le nom du produit. Cette fonction est déclenchée par une requête HTTP qui utilise une chaîne de requête pour spécifier la valeur du paramètre de la requête. Ce paramètre est utilisé pour filtrer les enregistrements Product
dans la requête spécifiée.
Les données de liaison suivantes se situent dans le fichier 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
}
La section configuration décrit ces propriétés.
L’extrait suivant contient un exemple de code 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"
)
Attributs
La bibliothèque C# utilise l’attribut KustoAttribute pour déclarer les liaisons Azure Data Explorer sur la fonction, qui a les propriétés suivantes.
Propriété d’attribut | Description |
---|---|
Base de données | Obligatoire. La base de données sur laquelle la requête doit être exécutée. |
Connexion | Obligatoire. Nom de la variable qui contient la chaîne de connexion, résolu par le biais de variables d’environnement ou de paramètres d’application de fonction. Par défaut, la recherche sur la variable KustoConnectionString est effectuée. Au moment de l’exécution, cette variable est recherchée par rapport à l’environnement. La documentation sur la chaîne de connexion se trouve dans Chaînes de connexion Kusto. Par exemple, "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 | Obligatoire. Paramètre KqlQuery qui doit être exécuté. Il peut s’agir d’une requête KQL ou d’un appel de fonction KQL. |
KqlParameters | facultatif. Paramètres qui agissent comme des variables de prédicat pour KqlCommand . Par exemple, « @name={name} »,@Id={id} où {name} et {id} sont substitués au moment de l’exécution par des valeurs réelles agissant en tant que prédicats. Le nom du paramètre et la valeur du paramètre ne peuvent pas contenir de virgule (, ) ou un signe égal (= ). |
ManagedServiceIdentity | facultatif. Vous pouvez utiliser une identité managée pour vous connecter à Azure Data Explorer. Pour utiliser une identité managée par le système, utilisez « system ». Tous les autres noms d’identité sont interprétés comme une identité managée par l’utilisateur. |
Annotations
La bibliothèque du runtime de fonctions Java utilise l’annotation @KustoInput
(com.microsoft.azure.functions.kusto.annotation.KustoInput
).
Élément | Description |
---|---|
name | Obligatoire. Nom de la variable qui représente les résultats de la requête dans le code de la fonction. |
database | Obligatoire. La base de données sur laquelle la requête doit être exécutée. |
connection | Obligatoire. Nom de la variable qui contient la chaîne de connexion, résolu par le biais de variables d’environnement ou de paramètres d’application de fonction. Par défaut, la recherche sur la variable KustoConnectionString est effectuée. Au moment de l’exécution, cette variable est recherchée par rapport à l’environnement. La documentation sur la chaîne de connexion se trouve dans Chaînes de connexion Kusto. Par exemple, "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 | Obligatoire. Paramètre KqlQuery qui doit être exécuté. Il peut s’agir d’une requête KQL ou d’un appel de fonction KQL. |
kqlParameters | facultatif. Paramètres qui agissent comme des variables de prédicat pour KqlCommand . Par exemple, « @name={name} »,@Id={id} où {name} et {id} sont substitués au moment de l’exécution par des valeurs réelles agissant en tant que prédicats. Le nom du paramètre et la valeur du paramètre ne peuvent pas contenir de virgule (, ) ou un signe égal (= ). |
managedServiceIdentity | Une identité managée peut être utilisée pour se connecter à Azure Data Explorer. Pour utiliser une identité managée par le système, utilisez « system ». Tous les autres noms d’identité sont interprétés comme une identité managée par l’utilisateur. |
Configuration
Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json.
Propriété function.json | Description |
---|---|
type | Obligatoire. Cette propriété doit être définie sur kusto . |
direction | Obligatoire. Cette propriété doit être définie sur in . |
name | Obligatoire. Nom de la variable qui représente les résultats de la requête dans le code de la fonction. |
database | Obligatoire. La base de données sur laquelle la requête doit être exécutée. |
connection | Obligatoire. Nom de la variable qui contient la chaîne de connexion, résolu par le biais de variables d’environnement ou de paramètres d’application de fonction. Par défaut, la recherche sur la variable KustoConnectionString est effectuée. Au moment de l’exécution, cette variable est recherchée par rapport à l’environnement. La documentation sur la chaîne de connexion se trouve dans Chaînes de connexion Kusto. Par exemple, "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 | Obligatoire. Paramètre KqlQuery qui doit être exécuté. Il peut s’agir d’une requête KQL ou d’un appel de fonction KQL. |
kqlParameters | facultatif. Paramètres qui agissent comme des variables de prédicat pour KqlCommand . Par exemple, « @name={name} »,@Id={id} où {name} et {id} sont substitués au moment de l’exécution par des valeurs réelles agissant en tant que prédicats. Le nom du paramètre et la valeur du paramètre ne peuvent pas contenir de virgule (, ) ou un signe égal (= ). |
managedServiceIdentity | Une identité managée peut être utilisée pour se connecter à Azure Data Explorer. Pour utiliser une identité managée par le système, utilisez « system ». Tous les autres noms d’identité sont interprétés comme une identité managée par l’utilisateur. |
Lorsque vous développez en local, ajoutez vos paramètres d’application dans le fichier local.settings.json de la collection Values
.
Utilisation
Le constructeur de l’attribut prend la base de données et les attributs KQLCommand
et KQLParameters
le nom du paramètre de connexion. La commande KQL peut être une instruction KQL ou une fonction KQL. Le nom du paramètre de la chaîne de connexion correspond au paramètre d’application (dans local.settings.json
pour le développement local) qui contient les chaînes de connexion Kusto. Par exemple : "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId
. Les requêtes exécutées par la liaison d’entrée sont paramétrées. Les valeurs fournies dans les paramètres KQL sont utilisées au moment de l’exécution.