Azure İşlevleri için Azure Veri Gezgini çıkış bağlamaları (önizleme)
bir işlev çalıştırıldığında, Azure Veri Gezgini çıkış bağlaması verileri Azure Veri Gezgini'a alır.
Kurulum ve yapılandırma ayrıntıları hakkında bilgi için genel bakışa bakın.
Örnekler
C# işlevi aşağıdaki C# modlarından biri kullanılarak oluşturulabilir:
- Yalıtılmış çalışan modeli: Çalışma zamanından yalıtılmış bir çalışan işleminde çalışan derlenmiş C# işlevi. LTS ve .NET ve .NET Framework dışındaki sürümlerde çalışan C# işlevlerini desteklemek için yalıtılmış çalışan işlemi gereklidir.
- İşlem içi model: İşlevler çalışma zamanıyla aynı işlemde çalışan derlenmiş C# işlevi.
- C# betiği: Öncelikle Azure portalında C# işlevleri oluşturduğunuzda kullanılır.
Önemli
İşlem içi model desteği 10 Kasım 2026'da sona erecektir. Tam destek için uygulamalarınızı yalıtılmış çalışan modeline geçirmenizi kesinlikle öneririz.
GitHub deposunda Azure Veri Gezgini çıkış bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örnekleri içerir:
Örnekler sınıfa Product
ve buna karşılık gelen bir veritabanı tablosuna başvurur:
public class Product
{
[JsonProperty(nameof(ProductID))]
public long ProductID { get; set; }
[JsonProperty(nameof(Name))]
public string Name { get; set; }
[JsonProperty(nameof(Cost))]
public double Cost { get; set; }
}
.create-merge table Products (ProductID:long, Name:string, Cost:double)
HTTP tetikleyicisi, bir kayıt yazma
Aşağıdaki örnekte veritabanına kayıt ekleyen bir C# işlevi gösterilmektedir. İşlev, JSON gövdesi olarak HTTP POST isteğinde sağlanan verileri kullanır.
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.OutputBindingSamples
{
public static class AddProduct
{
[Function("AddProduct")]
[KustoOutput(Database: "productsdb", Connection = "KustoConnectionString", TableName = "Products")]
public static async Task<Product> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "addproductuni")]
HttpRequestData req)
{
Product? prod = await req.ReadFromJsonAsync<Product>();
return prod ?? new Product { };
}
}
}
HTTP tetikleyicisi, eşleme ile kayıt yazma
Aşağıdaki örnekte, veritabanına bir kayıt koleksiyonu ekleyen bir C# işlevi gösterilmektedir. işlevi, bir Product
öğesini öğesine dönüştüren eşlemeyi Item
kullanır.
İşlev, 'den'e Product
veri dönüştürmek için Item
bir eşleme başvurusu kullanır:
.create-merge table Item (ItemID:long, ItemName:string, ItemCost:float)
-- Create a mapping that transforms an Item to a Product
.create-or-alter table Product ingestion json mapping "item_to_product_json" '[{"column":"ProductID","path":"$.ItemID"},{"column":"Name","path":"$.ItemName"},{"column":"Cost","path":"$.ItemCost"}]'
namespace Microsoft.Azure.WebJobs.Extensions.Kusto.SamplesOutOfProc.OutputBindingSamples.Common
{
public class Item
{
public long ItemID { get; set; }
public string? ItemName { get; set; }
public double ItemCost { get; set; }
}
}
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.OutputBindingSamples
{
public static class AddProductsWithMapping
{
[Function("AddProductsWithMapping")]
[KustoOutput(Database: "productsdb", Connection = "KustoConnectionString", TableName = "Products", MappingRef = "item_to_product_json")]
public static async Task<Item> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "addproductswithmapping")]
HttpRequestData req)
{
Item? item = await req.ReadFromJsonAsync<Item>();
return item ?? new Item { };
}
}
}
GitHub deposunda Java Azure Veri Gezgini giriş bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örnekleri içerir:
Örnekler bir sınıfa (ayrı bir Products
dosyada Product.java
) ve buna karşılık gelen bir veritabanı tablosuna Products
(daha önce tanımlanmıştır) başvurur:
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 tetikleyicisi, tabloya kayıt yazma
Aşağıdaki örnekte, tabloya ürün kaydı ekleyen bir Java işlevindeki Azure Veri Gezgini çıkış bağlaması gösterilmektedir. İşlev, JSON gövdesi olarak HTTP POST isteğinde sağlanan verileri kullanır. İşlev, JSON gövdesini ayrıştırmak için com.fasterxml.jackson.core kitaplığına başka bir bağımlılık alır.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.4.1</version>
</dependency>
package com.microsoft.azure.kusto.outputbindings;
import com.fasterxml.jackson.databind.ObjectMapper;
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.OutputBinding;
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.KustoOutput;
import com.microsoft.azure.kusto.common.Product;
import java.io.IOException;
import java.util.Optional;
import static com.microsoft.azure.kusto.common.Constants.*;
public class AddProduct {
@FunctionName("AddProduct")
public HttpResponseMessage run(@HttpTrigger(name = "req", methods = {
HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS, route = "addproductuni") HttpRequestMessage<Optional<String>> request,
@KustoOutput(name = "product", database = "productsdb", tableName = "Products", connection = KUSTOCONNSTR) OutputBinding<Product> product)
throws IOException {
if (request.getBody().isPresent()) {
String json = request.getBody().get();
ObjectMapper mapper = new ObjectMapper();
Product p = mapper.readValue(json, Product.class);
product.setValue(p);
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(product)
.build();
} else {
return request.createResponseBuilder(HttpStatus.NO_CONTENT).header("Content-Type", "application/json")
.build();
}
}
}
HTTP tetikleyicisi, iki tabloya yazma
Aşağıdaki örnekte, iki farklı tablodaki (Product
ve ProductChangeLog
) bir veritabanına kayıt ekleyen bir Java işlevindeki Azure Veri Gezgini çıkış bağlaması gösterilmektedir. İşlev, JSON gövdesi ve birden çok çıkış bağlaması olarak BIR HTTP POST isteğinde sağlanan verileri kullanır. İşlev, JSON gövdesini ayrıştırmak için com.fasterxml.jackson.core kitaplığına başka bir bağımlılık alır.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.4.1</version>
</dependency>
İkinci tablo olan ProductsChangeLog
, aşağıdaki tanıma karşılık gelir:
.create-merge table ProductsChangeLog (ProductID:long, CreatedAt:datetime)
ve içindeki ProductsChangeLog.java
Java sınıfı:
package com.microsoft.azure.kusto.common;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ProductsChangeLog {
@JsonProperty("ProductID")
public long ProductID;
@JsonProperty("CreatedAt")
public String CreatedAt;
public ProductsChangeLog() {
}
public ProductsChangeLog(long ProductID, String CreatedAt) {
this.ProductID = ProductID;
this.CreatedAt = CreatedAt;
}
}
package com.microsoft.azure.kusto.outputbindings;
import com.fasterxml.jackson.databind.ObjectMapper;
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.OutputBinding;
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.KustoOutput;
import com.microsoft.azure.kusto.common.Product;
import com.microsoft.azure.kusto.common.ProductsChangeLog;
import static com.microsoft.azure.kusto.common.Constants.*;
import java.io.IOException;
import java.time.Clock;
import java.time.Instant;
import java.util.Optional;
public class AddMultiTable {
@FunctionName("AddMultiTable")
public HttpResponseMessage run(@HttpTrigger(name = "req", methods = {
HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS, route = "addmultitable") HttpRequestMessage<Optional<String>> request,
@KustoOutput(name = "product", database = "productsdb", tableName = "Products", connection = KUSTOCONNSTR) OutputBinding<Product> product,
@KustoOutput(name = "productChangeLog", database = "productsdb", tableName = "ProductsChangeLog",
connection = KUSTOCONNSTR) OutputBinding<ProductsChangeLog> productChangeLog)
throws IOException {
if (request.getBody().isPresent()) {
String json = request.getBody().get();
ObjectMapper mapper = new ObjectMapper();
Product p = mapper.readValue(json, Product.class);
product.setValue(p);
productChangeLog.setValue(new ProductsChangeLog(p.ProductID, Instant.now(Clock.systemUTC()).toString()));
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(product)
.build();
} else {
return request.createResponseBuilder(HttpStatus.NO_CONTENT).header("Content-Type", "application/json")
.build();
}
}
}
GitHub deposunda Azure Veri Gezgini çıkış bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örnekleri içerir:
Örnekler bir veritabanı tablosuna başvurur.
Örnekler tablolara Products
ve ProductsChangeLog
(daha önce tanımlanmıştır) başvurur.
HTTP tetikleyicisi, tabloya kayıt yazma
Aşağıdaki örnekte, bir function.json dosyasındaki Azure Veri Gezgini çıkış bağlaması ve tabloya kayıt ekleyen bir JavaScript işlevi gösterilmektedir. İşlev, JSON gövdesi olarak HTTP POST isteğinde sağlanan verileri kullanır.
Aşağıdaki örnek, function.json dosyasındaki verileri bağlamadır:
{
"bindings": [
{
"authLevel": "function",
"name": "req",
"direction": "in",
"type": "httpTrigger",
"methods": [
"post"
],
"route": "addproduct"
},
{
"name": "$return",
"type": "http",
"direction": "out"
},
{
"name": "product",
"type": "kusto",
"database": "productsdb",
"direction": "out",
"tableName": "Products",
"connection": "KustoConnectionString"
}
],
"disabled": false
}
Yapılandırma bölümünde bu özellikler açıklanır.
Aşağıdaki kod parçacığı örnek JavaScript kodudur:
// Insert the product, which will insert it into the Products table.
module.exports = async function (context, req) {
// Note that this expects the body to be a JSON object or array of objects which have a property
// matching each of the columns in the table to insert to.
context.bindings.product = req.body;
return {
status: 201,
body: req.body
};
}
HTTP tetikleyicisi, iki tabloya yazma
Aşağıdaki örnekte, bir function.json dosyasındaki Azure Veri Gezgini çıkış bağlaması ve iki farklı tablodaki (Products
ve ProductsChangeLog
) bir veritabanına kayıt ekleyen bir JavaScript işlevi gösterilmektedir. İşlev, JSON gövdesi ve birden çok çıkış bağlaması olarak BIR HTTP POST isteğinde sağlanan verileri kullanır.
İkinci tablo olan ProductsChangeLog
, aşağıdaki tanıma karşılık gelir:
.create-merge table ProductsChangeLog (ProductID:long, CreatedAt:datetime)
Aşağıdaki kod parçacığı, function.json dosyasındaki verileri bağlamaktır:
{
"bindings": [
{
"authLevel": "function",
"name": "req",
"direction": "in",
"type": "httpTrigger",
"methods": [
"post"
],
"route": "addmultitable"
},
{
"name": "res",
"type": "http",
"direction": "out"
},
{
"name": "product",
"type": "kusto",
"database": "productsdb",
"direction": "out",
"tableName": "Products",
"connection": "KustoConnectionString"
},
{
"name": "productchangelog",
"type": "kusto",
"database": "productsdb",
"direction": "out",
"tableName": "ProductsChangeLog",
"connection": "KustoConnectionString"
}
],
"disabled": false
}
Yapılandırma bölümünde bu özellikler açıklanır.
Aşağıdaki kod parçacığı örnek JavaScript kodudur:
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger and Kusto output binding function processed a request.');
context.log(req.body);
if (req.body) {
var changeLog = {ProductID:req.body.ProductID, CreatedAt: new Date().toISOString()};
context.bindings.product = req.body;
context.bindings.productchangelog = changeLog;
context.res = {
body: req.body,
mimetype: "application/json",
status: 201
}
} else {
context.res = {
status: 400,
body: "Error reading request body"
}
}
}
GitHub deposunda Azure Veri Gezgini çıkış bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örnekleri içerir:
Örnekler tablolara Products
ve ProductsChangeLog
(daha önce tanımlanmıştır) başvurur.
HTTP tetikleyicisi, tabloya kayıt yazma
Aşağıdaki örnekte, bir function.json dosyasındaki Azure Veri Gezgini çıkış bağlaması ve tabloya kayıt ekleyen bir Python işlevi gösterilmektedir. İşlev, JSON gövdesi olarak HTTP POST isteğinde sağlanan verileri kullanır.
Aşağıdaki kod parçacığı, function.json dosyasındaki verileri bağlamaktır:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "Anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"post"
],
"route": "addproductuni"
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"name": "product",
"type": "kusto",
"database": "sdktestsdb",
"direction": "out",
"tableName": "Products",
"connection": "KustoConnectionString"
}
]
}
Yapılandırma bölümünde bu özellikler açıklanır.
Aşağıdaki kod parçacığı örnek Python kodudur:
import azure.functions as func
from Common.product import Product
def main(req: func.HttpRequest, product: func.Out[str]) -> func.HttpResponse:
body = str(req.get_body(),'UTF-8')
product.set(body)
return func.HttpResponse(
body=body,
status_code=201,
mimetype="application/json"
)
HTTP tetikleyicisi, iki tabloya yazma
Aşağıdaki örnekte, bir function.json dosyasındaki Azure Veri Gezgini çıkış bağlaması ve iki farklı tablodaki (Products
ve ProductsChangeLog
) bir veritabanına kayıt ekleyen bir JavaScript işlevi gösterilmektedir. İşlev, JSON gövdesi ve birden çok çıkış bağlaması olarak BIR HTTP POST isteğinde sağlanan verileri kullanır. İkinci tablo olan ProductsChangeLog
, aşağıdaki tanıma karşılık gelir:
.create-merge table ProductsChangeLog (ProductID:long, CreatedAt:datetime)
Aşağıdaki kod parçacığı, function.json dosyasındaki verileri bağlamaktır:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "Anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"post"
],
"route": "addmultitable"
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"name": "product",
"type": "kusto",
"database": "sdktestsdb",
"direction": "out",
"tableName": "Products",
"connection": "KustoConnectionString"
},
{
"name": "productchangelog",
"type": "kusto",
"database": "sdktestsdb",
"direction": "out",
"tableName": "ProductsChangeLog",
"connection": "KustoConnectionString"
}
]
}
Yapılandırma bölümünde bu özellikler açıklanır.
Aşağıdaki kod parçacığı örnek Python kodudur:
import json
from datetime import datetime
import azure.functions as func
from Common.product import Product
def main(req: func.HttpRequest, product: func.Out[str],productchangelog: func.Out[str]) -> func.HttpResponse:
body = str(req.get_body(),'UTF-8')
# parse x:
product.set(body)
id = json.loads(body)["ProductID"]
changelog = {
"ProductID": id,
"CreatedAt": datetime.now().isoformat(),
}
productchangelog.set(json.dumps(changelog))
return func.HttpResponse(
body=body,
status_code=201,
mimetype="application/json"
)
Özellikler
C# kitaplığı, aşağıdaki özelliklere sahip olan işlevde Azure Veri Gezgini bağlamalarını bildirmek için KustoAttribute özniteliğini kullanır.
Öznitelik özelliği | Açıklama |
---|---|
Veritabanı | Gerekli. Sorgunun yürütülmesi gereken veritabanı. |
Connection | Gerekli. ortam değişkenleri veya işlev uygulaması ayarları aracılığıyla çözümlenen bağlantı dizesi tutan değişkenin adı. değişkenini KustoConnectionString aramak için varsayılan değerdir. Çalışma zamanında, bu değişken ortama göre aranılır. bağlantı dizesi belgeleri Kusto bağlantı dizesi s adresindedir. Örneğin: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId . |
TableName | Gerekli. Verileri alınacak tablo. |
MappingRef | isteğe bağlı. Kümede zaten tanımlanmış bir eşleme başvurusu geçirme özniteliği. |
ManagedServiceIdentity | isteğe bağlı. Yönetilen kimlik, Azure Veri Gezgini bağlanmak için kullanılabilir. Sistem tarafından yönetilen kimlik kullanmak için "system" kullanın. Diğer kimlik adları, kullanıcı tarafından yönetilen kimlik olarak yorumlanır. |
Veri Biçimi | isteğe bağlı. Varsayılan veri biçimi şeklindedir multijson/json . Biçim numaralandırmasında desteklenen metin biçimlerine datasource ayarlanabilir. Örnekler doğrulanır ve CSV ve JSON biçimleri için sağlanır. |
Ek Açıklamalar
Java işlevleri çalışma zamanı kitaplığında @KustoInput
ek açıklama ()com.microsoft.azure.functions.kusto.annotation.KustoOutput
kullanılır.
Öğe | Açıklama |
---|---|
Adı | Gerekli. Sorguyu temsil eden değişkenin adı işlev koduyla sonuç alır. |
database | Gerekli. Sorgunun yürütülmesi gereken veritabanı. |
bağlantı | Gerekli. ortam değişkenleri veya işlev uygulaması ayarları aracılığıyla çözümlenen bağlantı dizesi tutan değişkenin adı. değişkenini KustoConnectionString aramak için varsayılan değerdir. Çalışma zamanında, bu değişken ortama göre aranılır. bağlantı dizesi belgeleri Kusto bağlantı dizesi s adresindedir. Örneğin: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId . |
tableName | Gerekli. Verileri alınacak tablo. |
mappingRef | isteğe bağlı. Kümede zaten tanımlanmış bir eşleme başvurusu geçirme özniteliği. |
dataFormat | isteğe bağlı. Varsayılan veri biçimi şeklindedir multijson/json . Biçim numaralandırmasında desteklenen metin biçimlerine datasource ayarlanabilir. Örnekler doğrulanır ve CSV ve JSON biçimleri için sağlanır. |
managedServiceIdentity | Yönetilen kimlik, Azure Veri Gezgini bağlanmak için kullanılabilir. Sistem tarafından yönetilen kimlik kullanmak için "system" kullanın. Diğer kimlik adları, kullanıcı tarafından yönetilen kimlik olarak yorumlanır. |
Yapılandırma
Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.
function.json özelliği | Açıklama |
---|---|
Tür | Gerekli. olarak ayarlanmalıdır kusto . |
yön | Gerekli. olarak ayarlanmalıdır out . |
Adı | Gerekli. Sorguyu temsil eden değişkenin adı işlev koduyla sonuç alır. |
database | Gerekli. Sorgunun yürütülmesi gereken veritabanı. |
bağlantı | Gerekli. ortam değişkenleri veya işlev uygulaması ayarları aracılığıyla çözümlenen bağlantı dizesi tutan değişkenin adı. değişkenini KustoConnectionString aramak için varsayılan değerdir. Çalışma zamanında, bu değişken ortama göre aranılır. bağlantı dizesi belgeleri Kusto bağlantı dizesi s adresindedir. Örneğin: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId . |
tableName | Gerekli. Verileri alınacak tablo. |
mappingRef | isteğe bağlı. Kümede zaten tanımlanmış bir eşleme başvurusu geçirme özniteliği. |
dataFormat | isteğe bağlı. Varsayılan veri biçimi şeklindedir multijson/json . Biçim numaralandırmasında desteklenen metin biçimlerine datasource ayarlanabilir. Örnekler doğrulanır ve CSV ve JSON biçimleri için sağlanır. |
managedServiceIdentity | Yönetilen kimlik, Azure Veri Gezgini bağlanmak için kullanılabilir. Sistem tarafından yönetilen kimlik kullanmak için "system" kullanın. Diğer kimlik adları, kullanıcı tarafından yönetilen kimlik olarak yorumlanır. |
Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasına Values
ekleyin.
Kullanım
Özniteliğin oluşturucusunun veritabanı ve öznitelikleri TableName
, MappingRef
ve DataFormat
ve bağlantı ayarı adı alır. KQL komutu bir KQL deyimi veya KQL işlevi olabilir. bağlantı dizesi ayarı adı Kusto bağlantı dizesi içeren uygulama ayarına (local.settings.json
yerel geliştirme için) karşılık gelir. Örneğin:"KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId
Giriş bağlaması tarafından yürütülen sorgular parametreleştirilir. KQL parametrelerinde sağlanan değerler çalışma zamanında kullanılır.