Aracılığıyla paylaş


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:

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

Ö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 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: