Pengikatan input Azure Data Explorer untuk Azure Functions (pratinjau)
Pengikatan input Azure Data Explorer mengambil data dari database.
Contoh
Fungsi C# dapat dibuat dengan menggunakan salah satu mode C# berikut:
- Model pekerja terisolasi: Fungsi C# terkompilasi yang berjalan dalam proses pekerja yang terisolasi dari runtime. Proses pekerja terisolasi diperlukan untuk mendukung fungsi C# yang berjalan pada versi LTS dan non-LTS .NET dan .NET Framework.
- Model dalam proses: Fungsi C# yang dikompilasi yang berjalan dalam proses yang sama dengan runtime Functions.
- Skrip C#: Digunakan terutama saat Anda membuat fungsi C# di portal Azure.
Penting
Dukungan akan berakhir untuk model dalam proses pada 10 November 2026. Kami sangat menyarankan Agar Anda memigrasikan aplikasi Anda ke model pekerja yang terisolasi untuk dukungan penuh.
Sampel lainnya untuk pengikatan input Azure Data Explorer (di luar proses) tersedia di repositori GitHub.
Bagian ini berisi contoh-contoh berikut:
- Pemicu HTTP, dapatkan baris menurut ID dari string kueri
- Pemicu HTTP, dapatkan beberapa baris dari data rute
Contohnya merujuk ke Product
kelas dan tabel Produk, yang keduanya ditentukan di bagian sebelumnya.
Pemicu HTTP, dapatkan baris berdasarkan ID dari string kueri
Contoh berikut memperlihatkan fungsi C# yang mengambil satu catatan. Fungsi ini dipicu oleh permintaan HTTP yang menggunakan sebuah string kueri untuk menentukan ID. ID tersebut digunakan untuk mengambil Product
catatan dengan kueri yang ditentukan.
Catatan
Parameter string kueri HTTP peka huruf besar/kecil.
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;
}
}
}
Pemicu HTTP, dapatkan beberapa baris dari parameter rute
Contoh berikut menunjukkan fungsi C# yang mengambil rekaman yang dikembalikan oleh kueri (berdasarkan nama produk, dalam hal ini). Fungsi ini dipicu oleh permintaan HTTP yang menggunakan data rute untuk menentukan nilai parameter kueri. Parameter tersebut digunakan untuk memfilter Product
catatan dalam kueri yang ditentukan.
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;
}
}
}
Sampel lainnya untuk pengikatan input Java Azure Data Explorer tersedia di repositori GitHub.
Bagian ini berisi contoh-contoh berikut:
Contohnya merujuk ke Product
kelas (dalam file Product.java
terpisah ) dan tabel database terkait.
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;
}
}
Pemicu HTTP, dapatkan beberapa baris
Contoh menggunakan parameter rute untuk menentukan nama ID produk. Semua produk yang cocok diambil dari tabel produk.
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();
}
}
Pemicu HTTP, dapatkan baris berdasarkan ID dari string kueri
Contoh berikut menunjukkan kueri untuk tabel produk menurut nama produk. Fungsi ini dipicu oleh permintaan HTTP yang menggunakan string kueri untuk menentukan nilai parameter kueri. Parameter tersebut digunakan untuk memfilter Product
catatan dalam kueri yang ditentukan.
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();
}
}
Sampel lainnya untuk pengikatan input Azure Data Explorer tersedia di repositori GitHub.
Bagian ini berisi contoh-contoh berikut:
Contoh merujuk ke tabel database:
Pemicu HTTP, dapatkan beberapa baris
Contoh berikut menunjukkan pengikatan input Azure Data Explorer dalam file function.json dan fungsi JavaScript yang membaca dari kueri dan mengembalikan hasilnya dalam respons HTTP.
Data pengikatan berikut ada dalam file 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
}
Bagian konfigurasi menjelaskan properti ini.
Cuplikan berikut adalah contoh kode JavaScript:
module.exports = async function (context, req, productget) {
return {
status: 200,
body: productget
};
}
Pemicu HTTP, dapatkan baris menurut nama dari string kueri
Contoh berikut menunjukkan kueri untuk tabel produk menurut nama produk. Fungsi ini dipicu oleh permintaan HTTP yang menggunakan string kueri untuk menentukan nilai parameter kueri. Parameter tersebut digunakan untuk memfilter Product
catatan dalam kueri yang ditentukan.
Data pengikatan berikut ada dalam file 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
}
Bagian konfigurasi menjelaskan properti ini.
Cuplikan berikut adalah contoh kode JavaScript:
module.exports = async function (context, req, producproductfngettget) {
return {
status: 200,
body: productfnget
};
}
Sampel lainnya untuk pengikatan input Azure Data Explorer tersedia di repositori GitHub.
Bagian ini berisi contoh-contoh berikut:
Pemicu HTTP, dapatkan beberapa baris
Contoh berikut menunjukkan pengikatan input Azure Data Explorer dalam file function.json dan fungsi Python yang membaca dari kueri dan mengembalikan hasilnya dalam respons HTTP.
Data pengikatan berikut ada dalam file 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"
}
]
}
Bagian konfigurasi menjelaskan properti ini.
Cuplikan berikut adalah sampel kode 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"
)
Pemicu HTTP, dapatkan baris berdasarkan ID dari string kueri
Contoh berikut menunjukkan kueri untuk tabel produk menurut nama produk. Fungsi ini dipicu oleh permintaan HTTP yang menggunakan string kueri untuk menentukan nilai parameter kueri. Parameter tersebut digunakan untuk memfilter Product
catatan dalam kueri yang ditentukan.
Data pengikatan berikut ada dalam file 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
}
Bagian konfigurasi menjelaskan properti ini.
Cuplikan berikut adalah sampel kode 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"
)
Atribut
Pustaka C# menggunakan atribut KustoAttribute untuk mendeklarasikan pengikatan Azure Data Explorer pada fungsi , yang memiliki properti berikut.
Properti atribut | Deskripsi |
---|---|
Database | Harus diisi. Database tempat kueri harus dijalankan. |
Connection | Harus diisi. Nama variabel yang menyimpan string koneksi, diselesaikan melalui variabel lingkungan atau melalui pengaturan aplikasi fungsi. Default untuk mencari variabel KustoConnectionString . Pada runtime, variabel ini dicari terhadap lingkungan. Dokumentasi tentang string koneksi ada di Kusto string koneksi s. Misalnya:"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 | Harus diisi. Parameter KqlQuery yang harus dijalankan. Dapat berupa kueri KQL atau panggilan fungsi KQL. |
KqlParameters | Opsional. Parameter yang bertindak sebagai variabel predikat untuk KqlCommand . Misalnya, "@name={name},@Id={id}", di mana {name} dan {id} diganti pada runtime dengan nilai aktual yang bertindak sebagai predikat. Nama parameter dan nilai parameter tidak boleh berisi tanda koma (, ) atau sama dengan (= ). |
ManagedServiceIdentity | Opsional. Anda dapat menggunakan identitas terkelola untuk menyambungkan ke Azure Data Explorer. Untuk menggunakan identitas terkelola sistem, gunakan "sistem." Nama identitas lain ditafsirkan sebagai identitas terkelola pengguna. |
Anotasi
Pustaka runtime fungsi Java menggunakan @KustoInput
anotasi (com.microsoft.azure.functions.kusto.annotation.KustoInput
).
Elemen | Deskripsi |
---|---|
nama | Harus diisi. Nama variabel yang mewakili kueri dalam kode fungsi. |
database | Harus diisi. Database tempat kueri harus dijalankan. |
koneksi | Harus diisi. Nama variabel yang menyimpan string koneksi, diselesaikan melalui variabel lingkungan atau melalui pengaturan aplikasi fungsi. Default untuk mencari variabel KustoConnectionString . Pada runtime, variabel ini dicari terhadap lingkungan. Dokumentasi tentang string koneksi ada di Kusto string koneksi s. Misalnya:"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 | Harus diisi. Parameter KqlQuery yang harus dijalankan. Dapat berupa kueri KQL atau panggilan fungsi KQL. |
kqlParameters | Opsional. Parameter yang bertindak sebagai variabel predikat untuk KqlCommand . Misalnya, "@name={name},@Id={id}", di mana {name} dan {id} diganti pada runtime dengan nilai aktual yang bertindak sebagai predikat. Nama parameter dan nilai parameter tidak boleh berisi tanda koma (, ) atau sama dengan (= ). |
managedServiceIdentity | Identitas terkelola dapat digunakan untuk menyambungkan ke Azure Data Explorer. Untuk menggunakan identitas terkelola sistem, gunakan "sistem." Nama identitas lain ditafsirkan sebagai identitas terkelola pengguna. |
Konfigurasi
Tabel berikut menjelaskan properti konfigurasi pengikatan yang Anda atur di file function.json.
Properti function.json | Deskripsi |
---|---|
jenis | Harus diisi. Harus diatur ke kusto . |
direction | Harus diisi. Harus diatur ke in . |
nama | Harus diisi. Nama variabel yang mewakili kueri dalam kode fungsi. |
database | Harus diisi. Database tempat kueri harus dijalankan. |
koneksi | Harus diisi. Nama variabel yang menyimpan string koneksi, diselesaikan melalui variabel lingkungan atau melalui pengaturan aplikasi fungsi. Default untuk mencari variabel KustoConnectionString . Pada runtime, variabel ini dicari terhadap lingkungan. Dokumentasi tentang string koneksi ada di Kusto string koneksi s. Misalnya:"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 | Harus diisi. Parameter KqlQuery yang harus dijalankan. Dapat berupa kueri KQL atau panggilan fungsi KQL. |
kqlParameters | Opsional. Parameter yang bertindak sebagai variabel predikat untuk KqlCommand . Misalnya, "@name={name},@Id={id}", di mana {name} dan {id} diganti pada runtime dengan nilai aktual yang bertindak sebagai predikat. Nama parameter dan nilai parameter tidak boleh berisi tanda koma (, ) atau sama dengan (= ). |
managedServiceIdentity | Identitas terkelola dapat digunakan untuk menyambungkan ke Azure Data Explorer. Untuk menggunakan identitas terkelola sistem, gunakan "sistem." Nama identitas lain ditafsirkan sebagai identitas terkelola pengguna. |
Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values
.
Penggunaan
Konstruktor atribut mengambil database dan atribut KQLCommand
dan serta KQLParameters
nama pengaturan koneksi. Perintah KQL dapat berupa pernyataan KQL atau fungsi KQL. Nama pengaturan string koneksi sesuai dengan pengaturan aplikasi (untuk local.settings.json
pengembangan lokal) yang berisi string koneksi Kusto. Misalnya: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId
. Kueri yang dijalankan oleh pengikatan input diparameterkan. Nilai yang disediakan dalam parameter KQL digunakan pada runtime.