Powiązania wejściowe usługi Azure Data Explorer dla usługi Azure Functions (wersja zapoznawcza)

Powiązanie wejściowe usługi Azure Data Explorer pobiera dane z bazy danych.

Przykłady

Funkcję języka C# można utworzyć przy użyciu jednego z następujących trybów języka C#:

  • Model izolowanego procesu roboczego: skompilowana funkcja języka C#, która jest uruchamiana w procesie roboczym izolowanym od środowiska uruchomieniowego. Proces izolowanego procesu roboczego jest wymagany do obsługi funkcji języka C# uruchomionych w wersjach LTS i innych niż LTS platformy .NET oraz programu .NET Framework.
  • Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi Functions.
  • Skrypt języka C#: używany głównie podczas tworzenia funkcji języka C# w witrynie Azure Portal.

Ważne

Wsparcie zostanie zakończone dla modelu procesu 10 listopada 2026 r. Zdecydowanie zalecamy przeprowadzenie migracji aplikacji do izolowanego modelu procesu roboczego w celu uzyskania pełnej obsługi.

Więcej przykładów dla powiązania wejściowego usługi Azure Data Explorer (poza procesem) jest dostępnych w repozytorium GitHub.

Ta sekcja zawiera następujące przykłady:

Przykłady odnoszą się do Product klasy i tabeli Products, które są zdefiniowane w poprzednich sekcjach.

Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania

W poniższym przykładzie pokazano funkcję języka C#, która pobiera pojedynczy rekord. Funkcja jest wyzwalana przez żądanie HTTP, które używa ciągu zapytania do określenia identyfikatora. Ten identyfikator służy do pobierania rekordu Product z określonym zapytaniem.

Uwaga

W parametrze ciągu zapytania HTTP jest uwzględniana wielkość liter.

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

Wyzwalacz HTTP, pobieranie wielu wierszy z parametru trasy

W poniższym przykładzie przedstawiono funkcję języka C#, która pobiera rekordy zwracane przez zapytanie (na podstawie nazwy produktu w tym przypadku). Funkcja jest wyzwalana przez żądanie HTTP, które używa danych trasy do określenia wartości parametru zapytania. Ten parametr służy do filtrowania Product rekordów w określonym zapytaniu.

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

Więcej przykładów dla powiązania wejściowego usługi Azure Data Explorer w języku Java jest dostępnych w repozytorium GitHub.

Ta sekcja zawiera następujące przykłady:

Przykłady odnoszą się do Product klasy (w osobnym pliku Product.java) i odpowiedniej tabeli bazy danych.

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

Wyzwalacz HTTP, pobieranie wielu wierszy

W przykładzie użyto parametru trasy, aby określić nazwę identyfikatora produktów. Wszystkie pasujące produkty są pobierane z tabeli 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();
    }
}

Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania

W poniższym przykładzie przedstawiono zapytanie dotyczące tabeli products według nazwy produktu. Funkcja jest wyzwalana przez żądanie HTTP, które używa ciągu zapytania do określenia wartości parametru zapytania. Ten parametr służy do filtrowania Product rekordów w określonym zapytaniu.

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

Więcej przykładów dla powiązania wejściowego usługi Azure Data Explorer jest dostępnych w repozytorium GitHub.

Ta sekcja zawiera następujące przykłady:

Przykłady odnoszą się do tabeli bazy danych:

Wyzwalacz HTTP, pobieranie wielu wierszy

Poniższy przykład przedstawia powiązanie wejściowe usługi Azure Data Explorer w pliku function.json i funkcję JavaScript, która odczytuje zapytanie i zwraca wyniki w odpowiedzi HTTP.

Następujące dane powiązania są w pliku 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
}

W sekcji konfiguracji opisano te właściwości.

Poniższy fragment kodu to przykładowy kod JavaScript:

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

Wyzwalacz HTTP, pobieranie wiersza według nazwy z ciągu zapytania

W poniższym przykładzie przedstawiono zapytanie dotyczące tabeli products według nazwy produktu. Funkcja jest wyzwalana przez żądanie HTTP, które używa ciągu zapytania do określenia wartości parametru zapytania. Ten parametr służy do filtrowania Product rekordów w określonym zapytaniu.

Następujące dane powiązania są w pliku 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
}

W sekcji konfiguracji opisano te właściwości.

Poniższy fragment kodu to przykładowy kod JavaScript:

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

Więcej przykładów dla powiązania wejściowego usługi Azure Data Explorer jest dostępnych w repozytorium GitHub.

Ta sekcja zawiera następujące przykłady:

Wyzwalacz HTTP, pobieranie wielu wierszy

Poniższy przykład przedstawia powiązanie wejściowe usługi Azure Data Explorer w pliku function.json i funkcję języka Python, która odczytuje zapytanie i zwraca wyniki w odpowiedzi HTTP.

Następujące dane powiązania są w pliku 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"
    }
  ]
}

W sekcji konfiguracji opisano te właściwości.

Poniższy fragment kodu to przykładowy kod języka 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"
    )

Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania

W poniższym przykładzie przedstawiono zapytanie dotyczące tabeli products według nazwy produktu. Funkcja jest wyzwalana przez żądanie HTTP, które używa ciągu zapytania do określenia wartości parametru zapytania. Ten parametr służy do filtrowania Product rekordów w określonym zapytaniu.

Następujące dane powiązania są w pliku 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
}

W sekcji konfiguracji opisano te właściwości.

Poniższy fragment kodu to przykładowy kod języka 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"
    )

Atrybuty

Biblioteka języka C# używa atrybutu KustoAttribute do deklarowania powiązań usługi Azure Data Explorer w funkcji, która ma następujące właściwości.

Właściwość atrybutu opis
baza danych Wymagany. Baza danych, dla której należy wykonać zapytanie.
Connection Wymagany. Nazwa zmiennej, która zawiera parametry połączenia, rozpoznawana za pomocą zmiennych środowiskowych lub ustawień aplikacji funkcji. Wartości domyślne do wyszukania w zmiennej KustoConnectionString. W czasie wykonywania ta zmienna jest sprawdzana względem środowiska. Dokumentacja dotycząca parametry połączenia znajduje się w witrynie Kusto parametry połączenia s. Na przykład:"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 Wymagany. Parametr KqlQuery , który należy wykonać. Może to być zapytanie KQL lub wywołanie funkcji KQL.
KqlParameters Opcjonalny. Parametry, które działają jako zmienne predykatu dla elementu KqlCommand. Na przykład "@name={name}"@Id={id}, gdzie {name} i {id} są zastępowane w czasie wykonywania rzeczywistymi wartościami działającymi jako predykaty. Nazwa parametru i wartość parametru nie mogą zawierać przecinka (,) ani znaku równości (=).
ManagedServiceIdentity Opcjonalny. Tożsamość zarządzana umożliwia nawiązanie połączenia z usługą Azure Data Explorer. Aby użyć tożsamości zarządzanej systemu, użyj polecenia "system". Wszystkie inne nazwy tożsamości są interpretowane jako tożsamość zarządzana przez użytkownika.

Adnotacje

Biblioteka środowiska uruchomieniowego funkcji Języka Java używa @KustoInput adnotacji (com.microsoft.azure.functions.kusto.annotation.KustoInput).

Element opis
name Wymagany. Nazwa zmiennej reprezentującej zapytanie powoduje wyświetlenie kodu funkcji.
database Wymagany. Baza danych, dla której należy wykonać zapytanie.
połączenie Wymagany. Nazwa zmiennej, która zawiera parametry połączenia, rozpoznawana za pomocą zmiennych środowiskowych lub ustawień aplikacji funkcji. Wartości domyślne do wyszukania w zmiennej KustoConnectionString. W czasie wykonywania ta zmienna jest sprawdzana względem środowiska. Dokumentacja dotycząca parametry połączenia znajduje się w witrynie Kusto parametry połączenia s. Na przykład:"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 Wymagany. Parametr KqlQuery , który należy wykonać. Może to być zapytanie KQL lub wywołanie funkcji KQL.
kqlParameters Opcjonalny. Parametry, które działają jako zmienne predykatu dla elementu KqlCommand. Na przykład "@name={name}"@Id={id}, gdzie {name} i {id} są zastępowane w czasie wykonywania rzeczywistymi wartościami działającymi jako predykaty. Nazwa parametru i wartość parametru nie mogą zawierać przecinka (,) ani znaku równości (=).
managedServiceIdentity Tożsamość zarządzana może służyć do nawiązywania połączenia z usługą Azure Data Explorer. Aby użyć tożsamości zarządzanej systemu, użyj polecenia "system". Wszystkie inne nazwy tożsamości są interpretowane jako tożsamość zarządzana przez użytkownika.

Konfigurowanie

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json .

właściwość function.json opis
type Wymagany. Musi być ustawiona wartość kusto.
kierunek Wymagany. Musi być ustawiona wartość in.
name Wymagany. Nazwa zmiennej reprezentującej zapytanie powoduje wyświetlenie kodu funkcji.
database Wymagany. Baza danych, dla której należy wykonać zapytanie.
połączenie Wymagany. Nazwa zmiennej, która zawiera parametry połączenia, rozpoznawana za pomocą zmiennych środowiskowych lub ustawień aplikacji funkcji. Wartości domyślne do wyszukania w zmiennej KustoConnectionString. W czasie wykonywania ta zmienna jest sprawdzana względem środowiska. Dokumentacja dotycząca parametry połączenia znajduje się w witrynie Kusto parametry połączenia s. Na przykład:"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 Wymagany. Parametr KqlQuery , który należy wykonać. Może to być zapytanie KQL lub wywołanie funkcji KQL.
kqlParameters Opcjonalny. Parametry, które działają jako zmienne predykatu dla elementu KqlCommand. Na przykład "@name={name}"@Id={id}, gdzie {name} i {id} są zastępowane w czasie wykonywania rzeczywistymi wartościami działającymi jako predykaty. Nazwa parametru i wartość parametru nie mogą zawierać przecinka (,) ani znaku równości (=).
managedServiceIdentity Tożsamość zarządzana może służyć do nawiązywania połączenia z usługą Azure Data Explorer. Aby użyć tożsamości zarządzanej systemu, użyj polecenia "system". Wszystkie inne nazwy tożsamości są interpretowane jako tożsamość zarządzana przez użytkownika.

Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values .

Użycie

Konstruktor atrybutu przyjmuje bazę danych i atrybuty KQLCommand oraz KQLParameters nazwę ustawienia połączenia. Polecenie KQL może być instrukcją KQL lub funkcją KQL. Nazwa ustawienia parametry połączenia odpowiada ustawieniu aplikacji (w local.settings.json programie na potrzeby programowania lokalnego), które zawiera parametry połączenia Kusto. Na przykład: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId. Zapytania wykonywane przez powiązanie wejściowe są sparametryzowane. Wartości podane w parametrach KQL są używane w czasie wykonywania.

Następne kroki

Zapisywanie danych w tabeli (powiązanie wyjściowe)