Azure Data Explorer-Eingabebindungen für Azure Functions (Vorschau)

Die Azure Data Explorer-Eingabebindung ruft Daten aus einer Datenbank ab.

Beispiele

Eine C#-Funktion kann mit einem der folgenden C#-Modi erstellt werden:

  • Isoliertes Workermodell: Kompilierte C#-Funktion, die in einem Workerprozess ausgeführt wird, der von der Runtime isoliert ist. Ein isolierter Workerprozess ist erforderlich, um C#-Funktionen zu unterstützen, die in LTS- und Nicht-LTS-Versionen von .NET und .NET Framework ausgeführt werden.
  • In-Process-Modell: Kompilierte C#-Funktion, die im gleichen Prozess wie die Functions-Runtime ausgeführt wird.
  • C#-Skript: Wird hauptsächlich beim Erstellen von C#-Funktionen im Azure-Portal verwendet.

Wichtig

Die Unterstützung für das In-Process-Modell endet am 10. November 2026. Es wird dringend empfohlen, Ihre Apps zum isolierten Workermodell zu migrieren, um den vollständigen Support zu ermöglichen.

Weitere Beispiele für die Azure Data Explorer-Eingabebindung (Out-of-Process) sind im GitHub-Repository verfügbar.

Dieser Abschnitt enthält folgende Beispiele:

Die Beispiele beziehen sich auf eine Product-Klasse und die Tabelle „Products“, die beide in den vorherigen Abschnitten definiert wurden.

HTTP-Trigger, Zeile nach ID aus Abfragezeichenfolge abrufen

Das folgende Beispiel zeigt eine C#-Funktion, die einen einzelnen Datensatz abruft. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die ID anzugeben. Diese ID wird verwendet, um einen Datensatz Product mit der angegebenen Abfrage abzurufen.

Hinweis

Beim Wert für den HTTP-Abfragezeichenfolge-Parameter muss Groß-/Kleinschreibung beachtet werden.

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, mehrere Zeilen aus Routenparameter abrufen

Das folgende Beispiel zeigt eine C#-Funktion, die von der Abfrage zurückgegebene Datensätze (in diesem Fall basierend auf dem Namen des Produkts) abruft. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die Routendaten verwendet, um den Wert eines Abfrageparameters anzugeben. Dieser Parameter wird verwendet, um die Datensätze Product in der angegebenen Abfrage zu filtern.

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;
        }
    }
}

Weitere Beispiele für die Java Azure Data Explorer-Eingabebindung sind im GitHub-Repository verfügbar.

Dieser Abschnitt enthält folgende Beispiele:

Die Beispiele beziehen sich auf eine Product-Klasse (in einer getrennten Datei Product.java) und eine entsprechende Datenbanktabelle.

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, mehrere Zeilen abrufen

Im Beispiel wird ein Routenparameter verwendet, um den Namen der ID der Produkte anzugeben. Alle übereinstimmenden Produkte werden aus der Products-Tabelle abgerufen.

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, Zeile nach ID aus Abfragezeichenfolge abrufen

Das folgende Beispiel zeigt eine Abfrage der Products-Tabelle nach dem Produktnamen. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um den Wert eines Abfrageparameters anzugeben. Dieser Parameter wird verwendet, um die Datensätze Product in der angegebenen Abfrage zu filtern.

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();
    }
}

Weitere Beispiele für die Azure Data Explorer-Eingabebindung sind im GitHub-Repository verfügbar.

Dieser Abschnitt enthält folgende Beispiele:

Die Beispiele beziehen sich auf eine Datenbanktabelle:

HTTP-Trigger, mehrere Zeilen abrufen

Das folgende Beispiel zeigt eine Azure Data Explorer-Eingabebindung in einer Datei function.json und eine JavaScript-Funktion, die aus einer Abfrage liest und die Ergebnisse in der HTTP-Antwort zurückgibt.

Das folgende Beispiel bindet Daten in der Datei 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
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.

Der folgende Codeschnipsel zeigt JavaScript-Beispielcode:

module.exports = async function (context, req, productget) {
    return {
        status: 200,
        body: productget
    };
}

HTTP-Trigger, Zeile nach Name aus Abfragezeichenfolge abrufen

Das folgende Beispiel zeigt eine Abfrage der Products-Tabelle nach dem Produktnamen. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um den Wert eines Abfrageparameters anzugeben. Dieser Parameter wird verwendet, um die Datensätze Product in der angegebenen Abfrage zu filtern.

Das folgende Beispiel bindet Daten in der Datei 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
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.

Der folgende Codeschnipsel zeigt JavaScript-Beispielcode:

module.exports = async function (context, req, producproductfngettget) {
    return {
        status: 200,
        body: productfnget
    };
}

Weitere Beispiele für die Azure Data Explorer-Eingabebindung sind im GitHub-Repository verfügbar.

Dieser Abschnitt enthält folgende Beispiele:

HTTP-Trigger, mehrere Zeilen abrufen

Das folgende Beispiel zeigt eine Azure Data Explorer-Eingabebindung in einer Datei function.json und eine Python-Funktion, die aus einer Abfrage liest und die Ergebnisse in der HTTP-Antwort zurückgibt.

Das folgende Beispiel bindet Daten in der Datei 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"
    }
  ]
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.

Der folgende Codeschnipsel zeigt Python-Beispielcode:

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, Zeile nach ID aus Abfragezeichenfolge abrufen

Das folgende Beispiel zeigt eine Abfrage der Products-Tabelle nach dem Produktnamen. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um den Wert eines Abfrageparameters anzugeben. Dieser Parameter wird verwendet, um die Datensätze Product in der angegebenen Abfrage zu filtern.

Das folgende Beispiel bindet Daten in der Datei 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
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.

Der folgende Codeschnipsel zeigt Python-Beispielcode:

import azure.functions as func

def main(req: func.HttpRequest, products: str) -> func.HttpResponse:
    return func.HttpResponse(
        products,
        status_code=200,
        mimetype="application/json"
    )

Attribute

Die C#-Bibliothek verwendet das Attribut KustoAttribute, um die Azure Data Explorer-Bindungen für die Funktion zu deklarieren, die die folgenden Eigenschaften aufweist.

Attributeigenschaft BESCHREIBUNG
Datenbank Erforderlich. Die Datenbank, für die die Abfrage ausgeführt werden muss.
Verbindung Erforderlich. Der Name der Variablen, die die Verbindungszeichenfolge enthält, aufgelöst durch Umgebungsvariablen oder über Funktions-App-Einstellungen. Standardmäßig wird nach der Variablen KustoConnectionString gesucht. Zur Laufzeit wird diese Variable anhand der Umgebung gesucht. Dokumentation zur Verbindungszeichenfolge finden Sie unter Kusto-Verbindungszeichenfolgen. Beispiel: "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 Erforderlich. Der KqlQuery Parameter, der ausgeführt werden muss. Dies kann eine KQL-Abfrage oder ein KQL-Funktionsaufruf sein.
KqlParameters Optional. Parameter, die als Prädikatvariablen für KqlCommand fungieren. Beispiel: „@name={name},@Id={id}“, wobei die Parameter {name} und {id} zur Laufzeit durch tatsächliche Werte ersetzt werden, die als Prädikate dienen. Der Parametername und der Parameterwert dürfen kein Komma (,) oder Gleichheitszeichen (=) enthalten.
ManagedServiceIdentity Optional. Sie können eine verwaltete Identität für die Verbindung mit Azure Data Explorer verwenden. Wenn Sie eine systemseitig verwaltete Identität verwenden möchten, verwenden Sie „System“. Alle anderen Identitätsnamen werden als benutzerseitig verwaltete Identität interpretiert.

Anmerkungen

Die Java-Funktionslaufzeitbibliothek verwendet die @KustoInput-Anmerkung (com.microsoft.azure.functions.kusto.annotation.KustoInput).

Element BESCHREIBUNG
name Erforderlich. Der Name der Variablen, die die Abfrageergebnisse im Funktionscode darstellt.
database Erforderlich. Die Datenbank, für die die Abfrage ausgeführt werden muss.
connection Erforderlich. Der Name der Variablen, die die Verbindungszeichenfolge enthält, aufgelöst durch Umgebungsvariablen oder über Funktions-App-Einstellungen. Standardmäßig wird nach der Variablen KustoConnectionString gesucht. Zur Laufzeit wird diese Variable anhand der Umgebung gesucht. Dokumentation zur Verbindungszeichenfolge finden Sie unter Kusto-Verbindungszeichenfolgen. Beispiel: "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 Erforderlich. Der KqlQuery Parameter, der ausgeführt werden muss. Dies kann eine KQL-Abfrage oder ein KQL-Funktionsaufruf sein.
kqlParameters Optional. Parameter, die als Prädikatvariablen für KqlCommand fungieren. Beispiel: „@name={name},@Id={id}“, wobei die Parameter {name} und {id} zur Laufzeit durch tatsächliche Werte ersetzt werden, die als Prädikate dienen. Der Parametername und der Parameterwert dürfen kein Komma (,) oder Gleichheitszeichen (=) enthalten.
managedServiceIdentity Eine verwaltete Identität kann verwendet werden, um eine Verbindung mit Azure Data Explorer herzustellen. Wenn Sie eine systemseitig verwaltete Identität verwenden möchten, verwenden Sie „System“. Alle anderen Identitätsnamen werden als benutzerseitig verwaltete Identität interpretiert.

Konfiguration

Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.

function.json-Eigenschaft BESCHREIBUNG
type Erforderlich. Muss auf kusto festgelegt sein.
direction Erforderlich. Muss auf in festgelegt sein.
name Erforderlich. Der Name der Variablen, die die Abfrageergebnisse im Funktionscode darstellt.
database Erforderlich. Die Datenbank, für die die Abfrage ausgeführt werden muss.
connection Erforderlich. Der Name der Variablen, die die Verbindungszeichenfolge enthält, aufgelöst durch Umgebungsvariablen oder über Funktions-App-Einstellungen. Standardmäßig wird nach der Variablen KustoConnectionString gesucht. Zur Laufzeit wird diese Variable anhand der Umgebung gesucht. Dokumentation zur Verbindungszeichenfolge finden Sie unter Kusto-Verbindungszeichenfolgen. Beispiel: "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 Erforderlich. Der KqlQuery Parameter, der ausgeführt werden muss. Dies kann eine KQL-Abfrage oder ein KQL-Funktionsaufruf sein.
kqlParameters Optional. Parameter, die als Prädikatvariablen für KqlCommand fungieren. Beispiel: „@name={name},@Id={id}“, wobei die Parameter {name} und {id} zur Laufzeit durch tatsächliche Werte ersetzt werden, die als Prädikate dienen. Der Parametername und der Parameterwert dürfen kein Komma (,) oder Gleichheitszeichen (=) enthalten.
managedServiceIdentity Eine verwaltete Identität kann verwendet werden, um eine Verbindung mit Azure Data Explorer herzustellen. Wenn Sie eine systemseitig verwaltete Identität verwenden möchten, verwenden Sie „System“. Alle anderen Identitätsnamen werden als benutzerseitig verwaltete Identität interpretiert.

Wenn Sie die Entwicklung lokal ausführen, fügen Sie Ihre Anwendungseinstellungen in der Datei local.settings.json in der Values-Sammlung hinzu.

Verbrauch

Der Konstruktor des Attributs nimmt die Datenbank und die Attribute KQLCommand und KQLParameters sowie den Namen der Verbindungseinstellung an. Der KQL-Befehl kann eine KQL-Anweisung oder eine KQL-Funktion sein. Der Name der Verbindungszeichenfolgeneinstellung entspricht der Anwendungseinstellung (in local.settings.json für lokale Entwicklung), die die Kusto-Verbindungszeichenfolgen enthält. Beispiel: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId. Abfragen, die von der Eingabebindung ausgeführt werden, werden parametrisiert. Die in den KQL-Parametern angegebenen Werte werden zur Laufzeit verwendet.

Nächste Schritte

Speichern von Daten in einer Tabelle (Ausgabebindung)