Partager via


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 :

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 Productenregistrement 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 :

Les exemples font référence à une Product classe (dans un fichier Product.javadistinct) 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 :

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

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.

Étapes suivantes

Enregistrer des données dans une table (liaison de sortie)