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:

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
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.

Langkah berikutnya

Menyimpan data ke tabel (pengikatan output)