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, bulutta zamanlamaya göre veya bir olaya yanıt olarak sunucusuz kod çalıştırmanızı sağlar. Azure İşlevleri için Azure Veri Gezgini giriş ve çıkış bağlamalarını kullanarak verileri almak ve kümenizde sorgu çalıştırmak için Azure Veri Gezgini'nin iş akışlarınızla tümleştirilmesini sağlayabilirsiniz.

Önkoşullar

Örnek projeyi kullanarak 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 makalelere 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ı

Rest API aracılığıyla Azure Veri Gezgini verilerini kullanıma sunmanız gerektiğinde giriş bağlamalarını kullanın. Bu senaryoda, kümenizdeki verileri sorgulamak için bir Azure İşlevleri HTTP tetikleyicisi kullanırsınız. Senaryo, dış uygulamalar veya hizmetler için Azure Veri Gezgini verilerine programlı erişim sağlamanız gereken durumlarda kullanışlıdır. Verilerinizi REST API aracılığıyla kullanıma açmak, uygulamaların verileri doğrudan kümenize bağlanmasına gerek kalmadan kolayca kullanmasına olanak tanır.

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şlev, 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);
    }
}

işlevini aşağıdaki gibi çağırırsınız:

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'daki bir CSV dosyasına aktaran zamanlayıcı tetikleyici özelliğine 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ı

Gelen HTTP isteklerini işlemeniz ve verileri kümenize almanız gerektiğinde bu senaryoyu kullanın. Çıkış bağlaması kullanarak istekten gelen verileri Azure Veri Gezgini tablolarına yazabilirsiniz.

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);
}

işlevini aşağıdaki gibi çağırırsınız:

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

Bir mesajlaşma sisteminden kümenize veri almanız gerektiğinde bu senaryoyı kullanın. Çıkış bağlaması kullanarak, mesajlaşma sisteminden gelen verileri Azure Veri Gezgini tablolarına alabilirsiniz.

Kod, RabbitMQ tetikleyicisi olan bir işlevi tanımlar. İşlev, JSON biçimindeki iletileri productsdb veritabanındaki products tablosuna alır.

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: