Giriş ve çıkış bağlamalarını kullanarak Azure İşlevleri Azure Veri Gezgini ile tümleştirme (önizleme)
Önemli
Bu bağlayıcı, Microsoft Fabric'teki Gerçek Zamanlı Zeka'da kullanılabilir. Aşağıdaki özel durumlar için bu makaledeki yönergeleri kullanın:
- Gerekirse, KQL veritabanı oluşturma başlığındaki yönergeleri kullanarak veritabanları oluşturun.
- Gerekirse, Boş tablo oluşturma başlığındaki yönergeleri kullanarak tablolar oluşturun.
- Kopyalama URI'sindeki yönergeleri kullanarak sorgu veya alma URI'lerini alın.
- KQL sorgu kümesinde sorgu çalıştırma.
Azure İşlevleri zamanlamaya göre veya bir olaya yanıt olarak bulutta sunucusuz kod çalıştırmanıza olanak sağlar. Azure İşlevleri için Azure Veri Gezgini giriş ve çıkış bağlamalarıyla azure Veri Gezgini iş akışlarınızla tümleştirerek verileri alabilir ve kümenizde sorgu çalıştırabilirsiniz.
Önkoşullar
- Azure aboneliği. Ücretsiz bir Azure hesabı oluşturun.
- Örnek verileri içeren bir Azure Veri Gezgini kümesi ve veritabanı. Küme ve veritabanı oluşturma.
- Depolama hesabı.
Örnek projemizle tümleştirmeyi deneyin
Azure İşlevleri için Azure Veri Gezgini bağlamalarını kullanma
Azure İşlevleri için Azure Veri Gezgini bağlamalarını kullanma hakkında bilgi için aşağıdaki konulara bakın:
- Azure İşlevleri genel bakış için Azure Veri Gezgini bağlamaları
- Azure İşlevleri için Azure Veri Gezgini giriş bağlamaları
- Azure İşlevleri için Azure Veri Gezgini çıkış bağlamaları
Azure İşlevleri için Azure Veri Gezgini bağlamalarını kullanma senaryoları
Aşağıdaki bölümlerde, Azure İşlevleri için Azure Veri Gezgini bağlamalarını kullanmaya yönelik bazı yaygın senaryolar açıklanmaktadır.
Giriş bağlamaları
Giriş bağlamaları isteğe bağlı olarak parametrelerle bir Kusto Sorgu Dili (KQL) sorgusu veya KQL işlevi çalıştırır ve çıkışı işleve döndürür.
Aşağıdaki bölümlerde bazı yaygın senaryolarda giriş bağlamalarının nasıl kullanılacağı açıklanmaktadır.
Senaryo 1: Kümeden verileri sorgulamak için bir HTTP uç noktası
Giriş bağlamalarını kullanmak, REST API aracılığıyla Azure Veri Gezgini verilerini kullanıma sunmanız gereken durumlarda geçerlidir. Bu senaryoda, kümenizdeki verileri sorgulamak için bir Azure İşlevleri HTTP tetikleyicisi kullanırsınız. Senaryo özellikle dış uygulamalar veya hizmetler için Azure Veri Gezgini verilerine programlı erişim sağlamanız gereken durumlarda kullanışlıdır. Uygulamalar, verilerinizi bir REST API aracılığıyla kullanıma sunarak doğrudan kümenize bağlanmalarını gerektirmeden verileri kolayca kullanabilir.
Kod, HTTP tetikleyicisi ve Azure Veri Gezgini giriş bağlaması olan bir işlevi tanımlar. Giriş bağlaması, productsdb veritabanındaki Products tablosunda çalıştırılacak sorguyu belirtir. işlevi, parametre olarak geçirilen koşul olarak productId sütununu kullanır.
{
[FunctionName("GetProduct")]
public static async Task<IActionResult> RunAsync(
[HttpTrigger(AuthorizationLevel.User, "get", Route = "getproducts/{productId}")]
HttpRequest req,
[Kusto(Database:"productsdb" ,
KqlCommand = "declare query_parameters (productId:long);Products | where ProductID == productId" ,
KqlParameters = "@productId={productId}",
Connection = "KustoConnectionString")]
IAsyncEnumerable<Product> products)
{
IAsyncEnumerator<Product> enumerator = products.GetAsyncEnumerator();
var productList = new List<Product>();
while (await enumerator.MoveNextAsync())
{
productList.Add(enumerator.Current);
}
await enumerator.DisposeAsync();
return new OkObjectResult(productList);
}
}
İşlev daha sonra aşağıdaki gibi çağrılabilir:
curl https://myfunctionapp.azurewebsites.net/api/getproducts/1
Senaryo 2: Kümeden verileri dışarı aktarmak için zamanlanmış tetikleyici
Aşağıdaki senaryo, verilerin zamana dayalı bir zamanlamaya göre dışarı aktarılması gereken durumlarda geçerlidir.
Kod, productsdb veritabanındaki satış verilerinin bir toplamasını Azure Blob Depolama'deki bir CSV dosyasına aktaran zamanlayıcı tetikleyicisine sahip bir işlev tanımlar.
public static async Task Run([TimerTrigger("0 0 1 * * *")] TimerInfo myTimer,
[Kusto(ConnectionStringSetting = "KustoConnectionString",
DatabaseName = "productsdb",
Query = "ProductSales | where OrderDate >= ago(1d) | summarize Sales = sum(ProductSales) by ProductName | top 10 by Sales desc")] IEnumerable<dynamic> queryResults,
[Blob("salescontainer/productsblob.csv", FileAccess.Write, Connection = "BlobStorageConnection")] CloudBlockBlob outputBlob,
ILogger log)
{
// Write the query results to a CSV file
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(queryResults);
writer.Flush();
stream.Position = 0;
await outputBlob.UploadFromStreamAsync(stream);
}
}
Çıkış bağlamaları
Çıkış bağlamaları bir veya daha fazla satır alır ve bunları bir Azure Veri Gezgini tablosuna ekler.
Aşağıdaki bölümlerde bazı yaygın senaryolarda çıkış bağlamalarının nasıl kullanılacağı açıklanmaktadır.
Senaryo 1: Verileri kümeye almak için HTTP uç noktası
Aşağıdaki senaryo, gelen HTTP isteklerinin işlenmesi ve kümenize alınması gereken durumlarda geçerlidir. Çıkış bağlaması kullanılarak istekten gelen veriler Azure Veri Gezgini tablolarına yazılabilir.
Kod, HTTP tetikleyicisi ve Azure Veri Gezgini çıkış bağlaması olan bir işlev tanımlar. Bu işlev HTTP isteği gövdesinde bir JSON yükü alır ve bunu productsdb veritabanındaki products tablosuna yazar.
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "addproductuni")]
HttpRequest req, ILogger log,
[Kusto(Database:"productsdb" ,
TableName ="products" ,
Connection = "KustoConnectionString")] out Product product)
{
log.LogInformation($"AddProduct function started");
string body = new StreamReader(req.Body).ReadToEnd();
product = JsonConvert.DeserializeObject<Product>(body);
string productString = string.Format(CultureInfo.InvariantCulture, "(Name:{0} ID:{1} Cost:{2})",
product.Name, product.ProductID, product.Cost);
log.LogInformation("Ingested product {}", productString);
return new CreatedResult($"/api/addproductuni", product);
}
İşlev daha sonra aşağıdaki gibi çağrılabilir:
curl -X POST https://myfunctionapp.azurewebsites.net/api/addproductuni -d '{"Name":"Product1","ProductID":1,"Cost":100,"ActivatedOn":"2023-01-02T00:00:00"}'
Senaryo 2: RabbitMQ'dan veya Azure'da desteklenen diğer mesajlaşma sistemlerinden veri alma
Aşağıdaki senaryo, bir mesajlaşma sisteminden alınan verilerin kümenize alınması gereken durumlarda geçerlidir. Çıkış bağlaması kullanılarak, mesajlaşma sisteminden gelen veriler Azure Veri Gezgini tablolarına alınabiliyor.
Kod, productsdb veritabanındaki ürünler tablosuna alınan bir RabbitMQ tetikleyicisi aracılığıyla gelen, JSON biçiminde veriler içeren bir işlev tanımlar.
public class QueueTrigger
{
[FunctionName("QueueTriggerBinding")]
[return: Kusto(Database: "productsdb",
TableName = "products",
Connection = "KustoConnectionString")]
public static Product Run(
[RabbitMQTrigger(queueName: "bindings.products.queue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] Product product,
ILogger log)
{
log.LogInformation($"Dequeued product {product.ProductID}");
return product;
}
}
İşlevler hakkında daha fazla bilgi için Azure İşlevleri belgelerine bakın. Azure Veri Gezgini uzantısı şu platformlarda kullanılabilir: