Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pengikatan input Azure Data Explorer mengambil data dari database.
Contoh
Anda dapat membuat fungsi C# 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 dukungan jangka panjang (LTS) dan non-LTS untuk .NET dan .NET Framework.
- Model dalam proses: Fungsi C# terkompilasi yang berjalan dalam proses yang sama dengan runtime Azure 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.javaterpisah ) 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 |
|---|---|
| Basis data | 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 (=). |
| Identitas Layanan Terkelola | 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. |
| basis data | 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. |
| arah | Harus diisi. Harus diatur ke in. |
| nama | Harus diisi. Nama variabel yang mewakili kueri dalam kode fungsi. |
| basis data | 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.
Penting
Untuk keamanan yang optimal, aplikasi fungsi Anda harus menggunakan identitas terkelola saat menyambungkan ke Azure Data Explorer alih-alih menggunakan string koneksi, yang berisi kunci. Untuk informasi lebih lanjut, lihat halaman string koneksi Kusto. Untuk koneksi berbasis identitas mananaged, Anda harus mengatur managedServiceIdentity properti dalam definisi pengikatan.