適用於 Azure Functions 的 Azure 數據總管輸入系結 (預覽)
Azure 數據總管輸入系結會從資料庫擷取數據。
範例
您可以使用下列其中一種 C# 模式來建立 C# 函式:
- 隔離的背景工作模型:在與運行時間隔離的背景工作進程中執行的已編譯 C# 函式。 需要隔離的背景工作進程,才能支援在 LTS 和非 LTS 版本 .NET 和 .NET Framework 上執行的 C# 函式。
- 同進程模型:在與 Functions 運行時間相同的進程中執行的已編譯 C# 函式。
- C# 文稿:主要用於在 Azure 入口網站 中建立 C# 函式。
重要
內含式模型支援將於 2026 年 11 月 10 日結束。 強烈建議您將應用程式移轉至隔離式背景工作角色模型,以取得完整支援。
GitHub 存放庫中有更多 Azure 數據總管輸入系結的範例可供使用。
本區段包含下列範例:
這些範例會參考類別和 Products 數據表,這兩者都是在前幾 Product
節中定義的。
HTTP 觸發程序,依識別碼從查詢字串取得資料列
下列範例顯示擷 取單一記錄的 C# 函式 。 此函式是由 HTTP 要求觸發,而該 HTTP 要求會使用查詢字串指定識別碼。 該識別碼用來擷取具有所指定查詢的 Product
記錄。
注意
HTTP 查詢字串參數區分大小寫。
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;
}
}
}
HTTP 觸發程式,從路由參數取得多個數據列
下列範例顯示 C# 函 式,可擷取查詢所傳回的記錄(在此案例中是根據產品名稱)。 此函式是由使用路由數據來指定查詢參數值的 HTTP 要求所觸發。 該參數用來篩選 Product
指定查詢中的記錄。
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;
}
}
}
GitHub 存放庫中提供 Java Azure 數據總管輸入系結的更多範例。
本區段包含下列範例:
這些範例會參考類別 Product
(在不同的檔案 Product.java
中),以及對應的資料庫數據表。
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;
}
}
HTTP 觸發程式,取得多個數據列
此範例會使用路由參數來指定產品識別碼的名稱。 所有相符的產品都會從 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();
}
}
HTTP 觸發程序,依識別碼從查詢字串取得資料列
下列範例顯示依產品名稱查詢 products 數據表。 此函式是由使用查詢字串來指定查詢參數值的 HTTP 要求所觸發。 該參數用來篩選 Product
指定查詢中的記錄。
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();
}
}
GitHub 存放庫中提供 Azure 數據總管輸入系結的更多範例。
本區段包含下列範例:
這些範例會參考資料庫資料表:
HTTP 觸發程式,取得多個數據列
下列範例顯示function.json檔案中的 Azure 數據總管輸入系結,以及從查詢讀取並傳回 HTTP 回應中結果的 JavaScript 函式。
下列系結數據位於 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
}
組 態 區段說明這些屬性。
下列代碼段是範例 JavaScript 程式代碼:
module.exports = async function (context, req, productget) {
return {
status: 200,
body: productget
};
}
HTTP 觸發程式,依名稱從查詢字串取得數據列
下列範例顯示依產品名稱查詢 products 數據表。 此函式是由使用查詢字串來指定查詢參數值的 HTTP 要求所觸發。 該參數用來篩選 Product
指定查詢中的記錄。
下列系結數據位於 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
}
組 態 區段說明這些屬性。
下列代碼段是範例 JavaScript 程式代碼:
module.exports = async function (context, req, producproductfngettget) {
return {
status: 200,
body: productfnget
};
}
GitHub 存放庫中提供 Azure 數據總管輸入系結的更多範例。
本區段包含下列範例:
HTTP 觸發程式,取得多個數據列
下列範例顯示function.json檔案中的 Azure 數據總管輸入系結,以及從查詢讀取並傳回 HTTP 回應中結果的 Python 函式。
下列系結數據位於 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"
}
]
}
組 態 區段說明這些屬性。
下列代碼段是 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"
)
HTTP 觸發程序,依識別碼從查詢字串取得資料列
下列範例顯示依產品名稱查詢 products 數據表。 此函式是由使用查詢字串來指定查詢參數值的 HTTP 要求所觸發。 該參數用來篩選 Product
指定查詢中的記錄。
下列系結數據位於 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
}
組 態 區段說明這些屬性。
下列代碼段是 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"
)
屬性
C# 連結 庫 會使用 KustoAttribute 屬性來宣告函式上的 Azure 數據總管系結,其具有下列屬性。
屬性內容 | 描述 |
---|---|
資料庫 | 必要。 必須對其執行查詢的資料庫。 |
連線 | 必要。 保存 連接字串、透過環境變數或函式應用程式設定解析的變數名稱。 預設會查閱變數 KustoConnectionString 。 在運行時間,此變數會針對環境進行查閱。 連接字串 的文件位於 Kusto 連接字串。 例如:"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 | 必要。 KqlQuery 必須執行的參數。 可以是 KQL 查詢或 KQL 函數調用。 |
KqlParameters | 選擇性。 做為述詞變數的參數 KqlCommand 。 例如,“@name={name}”,@Id={id}其中 {name} 和 {id} 會在運行時間取代為述詞的實際值。 參數名稱和參數值不能包含逗號 (, ) 或等號 (= )。 |
ManagedServiceIdentity | 選擇性。 您可以使用受控識別來連線到 Azure 數據總管。 若要使用系統受控識別,請使用「系統」。任何其他身分識別名稱會解譯為使用者受控識別。 |
註釋
Java 函式運行時間連結庫會使用@KustoInput
註釋 (com.microsoft.azure.functions.kusto.annotation.KustoInput
)。
元素 | 描述 |
---|---|
NAME | 必要。 代表函式程式代碼中查詢結果的變數名稱。 |
database | 必要。 必須對其執行查詢的資料庫。 |
connection | 必要。 保存 連接字串、透過環境變數或函式應用程式設定解析的變數名稱。 預設會查閱變數 KustoConnectionString 。 在運行時間,此變數會針對環境進行查閱。 連接字串 的文件位於 Kusto 連接字串。 例如:"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 | 必要。 KqlQuery 必須執行的參數。 可以是 KQL 查詢或 KQL 函數調用。 |
kqlParameters | 選擇性。 做為述詞變數的參數 KqlCommand 。 例如,“@name={name}”,@Id={id}其中 {name} 和 {id} 會在運行時間取代為述詞的實際值。 參數名稱和參數值不能包含逗號 (, ) 或等號 (= )。 |
managedServiceIdentity | 受控識別可用來連線到 Azure 數據總管。 若要使用系統受控識別,請使用「系統」。任何其他身分識別名稱會解譯為使用者受控識別。 |
組態
下表說明您在 function.json 檔案中設定的繫結設定屬性。
function.json 屬性 | 描述 |
---|---|
type | 必要。 必須設定為 kusto 。 |
direction | 必要。 必須設定為 in 。 |
NAME | 必要。 代表函式程式代碼中查詢結果的變數名稱。 |
database | 必要。 必須對其執行查詢的資料庫。 |
connection | 必要。 保存 連接字串、透過環境變數或函式應用程式設定解析的變數名稱。 預設會查閱變數 KustoConnectionString 。 在運行時間,此變數會針對環境進行查閱。 連接字串 的文件位於 Kusto 連接字串。 例如:"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 | 必要。 KqlQuery 必須執行的參數。 可以是 KQL 查詢或 KQL 函數調用。 |
kqlParameters | 選擇性。 做為述詞變數的參數 KqlCommand 。 例如,“@name={name}”,@Id={id}其中 {name} 和 {id} 會在運行時間取代為述詞的實際值。 參數名稱和參數值不能包含逗號 (, ) 或等號 (= )。 |
managedServiceIdentity | 受控識別可用來連線到 Azure 數據總管。 若要使用系統受控識別,請使用「系統」。任何其他身分識別名稱會解譯為使用者受控識別。 |
當您在本機開發時,請在集合中的 local.settings.json 檔案Values
中新增應用程式設定。
使用方式
屬性的建構函式會採用資料庫和屬性 KQLCommand
,以及 KQLParameters
連接設定名稱。 KQL 命令可以是 KQL 語句或 KQL 函式。 連接字串 設定名稱會對應至包含 Kusto 連接字串 的應用程式設定(用於local.settings.json
本機開發)。 例如: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId
。 輸入系結所執行的查詢會參數化。 KQL 參數中提供的值會在運行時間使用。