Azure Functions integrálása az Azure Data Explorer-nal bemeneti és kimeneti kötések használatával (előzetes verzió)
Fontos
Ez az összekötő használható a Microsoft Fabric valós idejű elemzéseiben . Használja a cikkben található utasításokat a következő kivételekkel:
- Ha szükséges, hozzon létre adatbázisokat a KQL-adatbázis létrehozása című témakör utasításai alapján.
- Ha szükséges, hozzon létre táblákat az Üres tábla létrehozása című témakörben található utasítások alapján.
- Lekérdezési vagy betöltési URI-k lekérése az URI másolása című témakör utasításai alapján.
- Lekérdezések futtatása KQL-lekérdezéskészletben.
Azure Functions lehetővé teszi a kiszolgáló nélküli kód futtatását a felhőben ütemezés szerint vagy egy eseményre válaszul. Az Azure Data Explorer Azure Functions bemeneti és kimeneti kötéseivel integrálhatja az Azure Data Explorer a munkafolyamatokba az adatok betöltéséhez és lekérdezések futtatásához a fürtön.
Előfeltételek
- Azure-előfizetés. Hozzon létre egy ingyenes Azure-fiókot.
- Egy Azure Data Explorer-fürt és adatbázis mintaadatokkal. Hozzon létre egy fürtöt és egy adatbázist.
- Egy tárfiók.
Próbálja ki a mintaprojekttel való integrációt
Azure Data Explorer kötések használata Azure Functions
Az Azure Data Explorer-kötések Azure Functions való használatáról az alábbi témakörökben olvashat:
- Azure Data Explorer kötések Azure Functions áttekintéséhez
- Azure Data Explorer bemeneti kötések Azure Functions
- Azure Data Explorer kimeneti kötések Azure Functions
Forgatókönyvek az Azure Data Explorer-kötések Azure Functions
Az alábbi szakaszok az Azure Data Explorer kötéseinek Azure Functions való használatára vonatkozó gyakori forgatókönyveket ismertetik.
Bemeneti kötések
A bemeneti kötések Kusto lekérdezésnyelv (KQL) lekérdezést vagy KQL-függvényt futtatnak, opcionálisan paraméterekkel, és visszaadja a kimenetet a függvénynek.
Az alábbi szakaszok néhány gyakori forgatókönyvben ismertetik a bemeneti kötések használatát.
1. forgatókönyv: HTTP-végpont egy fürt adatainak lekérdezéséhez
A bemeneti kötések használata olyan helyzetekben alkalmazható, amikor az Azure Data Explorer-adatokat REST API-val kell elérhetővé tenni. Ebben a forgatókönyvben egy Azure Functions HTTP-eseményindítót használ a fürt adatainak lekérdezéséhez. Ez a forgatókönyv különösen hasznos olyan helyzetekben, amikor programozott hozzáférést kell biztosítania az Azure Data Explorer adatokhoz külső alkalmazásokhoz vagy szolgáltatásokhoz. Az adatok REST API-val történő felfedésével az alkalmazások könnyen felhasználhatják az adatokat anélkül, hogy közvetlenül a fürthöz kellene csatlakozniuk.
A kód egy HTTP-eseményindítóval és egy Azure Data Explorer bemeneti kötéssel rendelkező függvényt határoz meg. A bemeneti kötés megadja a productsdb adatbázis Products táblájában futtatandó lekérdezést. A függvény a productId oszlopot használja paraméterként átadott predikátumként.
{
[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);
}
}
A függvény ezután a következőképpen hívható meg:
curl https://myfunctionapp.azurewebsites.net/api/getproducts/1
2. forgatókönyv: Ütemezett eseményindító, amely adatokat exportál egy fürtből
Az alábbi forgatókönyv olyan esetekben alkalmazható, amikor az adatokat időalapú ütemezés szerint kell exportálni.
A kód meghatároz egy időzítő eseményindítóval rendelkező függvényt, amely az értékesítési adatok összesítését exportálja a productsdb adatbázisból egy CSV-fájlba a Azure Blob Storage.
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);
}
}
Kimeneti kötések
A kimeneti kötések egy vagy több sort vesznek igénybe, és beszúrják őket egy Azure-Data Explorer táblába.
Az alábbi szakaszok néhány gyakori forgatókönyvben ismertetik a kimeneti kötések használatát.
1. forgatókönyv: HTTP-végpont az adatok fürtbe való betöltéséhez
Az alábbi forgatókönyv olyan esetekben alkalmazható, amikor a bejövő HTTP-kéréseket fel kell dolgozni, és be kell őket helyezni a fürtbe. Kimeneti kötés használatával a kérésből származó bejövő adatok az Azure Data Explorer táblákba írhatók.
A kód egy HTTP-eseményindítóval és egy Azure Data Explorer kimeneti kötéssel rendelkező függvényt határoz meg. Ez a függvény egy JSON hasznos adattal rendelkezik a HTTP-kérelem törzsében, és a productsdb adatbázis termékek táblájára írja.
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);
}
A függvény ezután a következőképpen hívható meg:
curl -X POST https://myfunctionapp.azurewebsites.net/api/addproductuni -d '{"Name":"Product1","ProductID":1,"Cost":100,"ActivatedOn":"2023-01-02T00:00:00"}'
2. forgatókönyv: Adatok betöltése a RabbitMQ-ból vagy az Azure-ban támogatott egyéb üzenetkezelési rendszerekből
Az alábbi forgatókönyv olyan esetekben alkalmazható, amikor egy üzenetkezelési rendszer adatait a fürtbe kell beszúrni. Kimeneti kötés használatával az üzenetkezelési rendszer bejövő adatai betölthetők az Azure Data Explorer-táblákba.
A kód egy olyan függvényt definiál, amely üzeneteket, JSON formátumú adatokat tartalmaz, és egy RabbitMQ-eseményindítón keresztül bejövő adatokat tartalmaz, amelyek a productsdb adatbázis termékek táblájába vannak betöltve.
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;
}
}
További információ a függvényekről: Azure Functions dokumentáció. Az Azure Data Explorer bővítmény a következő időpontban érhető el: