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:
- Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
- Wyzwalacz HTTP, pobieranie wielu wierszy z danych trasy
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:
- Wyzwalacz HTTP, pobieranie wielu wierszy
- Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
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:
- Wyzwalacz HTTP, pobieranie wielu wierszy
- Wyzwalacz HTTP, pobieranie wiersza według identyfikatora z ciągu zapytania
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
- Wyzwalacz HTTP, pobieranie rekordów przy użyciu funkcji KQL
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.