Vstupní vazby Azure Data Exploreru pro Azure Functions (Preview)

Vstupní vazba Azure Data Exploreru načte data z databáze.

Příklady

Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:

  • Izolovaný model pracovního procesu: Kompilovaná funkce jazyka C#, která běží v pracovním procesu, který je izolovaný od modulu runtime. Izolovaný pracovní proces je nutný pro podporu funkcí C# spuštěných na LTS a jiných verzích než LTS .NET a rozhraní .NET Framework.
  • Model v procesu: Zkompilovaná funkce jazyka C#, která běží ve stejném procesu jako modul runtime služby Functions.
  • Skript jazyka C#: Používá se především při vytváření funkcí jazyka C# na webu Azure Portal.

Další ukázky vstupní vazby Azure Data Exploreru (mimo proces) jsou k dispozici v úložišti GitHub.

Tato část obsahuje následující příklady:

Příklady odkazují na Product třídu a tabulku Products, z nichž obě jsou definovány v předchozích částech.

Trigger HTTP, získání řádku podle ID z řetězce dotazu

Následující příklad ukazuje funkci jazyka C#, která načte jeden záznam. Funkce se aktivuje požadavkem HTTP, který k zadání ID používá řetězec dotazu. Toto ID se používá k načtení záznamu Product se zadaným dotazem.

Poznámka:

V parametru řetězce dotazu HTTP se rozlišují malá a velká písmena.

using System.Text.Json.Nodes;
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.InputBindingSamples
{
    public static class GetProductsQuery
    {
        [Function("GetProductsQuery")]
        public static JsonArray Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproductsquery")] HttpRequestData req,
            [KustoInput(Database: "productsdb",
            KqlCommand = "declare query_parameters (productId:long);Products | where ProductID == productId",
            KqlParameters = "@productId={Query.productId}",Connection = "KustoConnectionString")] JsonArray products)
        {
            return products;
        }
    }
}

Trigger HTTP, získání více řádků z parametru trasy

Následující příklad ukazuje funkci jazyka C#, která načte záznamy vrácené dotazem (v tomto případě na základě názvu produktu). Funkce se aktivuje požadavkem HTTP, který používá směrovací data k určení hodnoty parametru dotazu. Tento parametr slouží k filtrování Product záznamů v zadaném dotazu.

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.InputBindingSamples
{
    public static class GetProductsFunction
    {
        [Function("GetProductsFunction")]
        public static IEnumerable<Product> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproductsfn/{name}")] HttpRequestData req,
            [KustoInput(Database: "productsdb",
            KqlCommand = "declare query_parameters (name:string);GetProductsByName(name)",
            KqlParameters = "@name={name}",Connection = "KustoConnectionString")] IEnumerable<Product> products)
        {
            return products;
        }
    }
}

Další ukázky vstupní vazby Azure Data Exploreru v Javě jsou k dispozici v úložišti GitHub.

Tato část obsahuje následující příklady:

Příklady odkazují na Product třídu (v samostatném souboru Product.java) a odpovídající tabulku databáze.

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

Trigger HTTP, získání více řádků

Příklad používá parametr trasy k určení názvu ID produktů. Všechny odpovídající produkty se načtou z tabulky produktů.

package com.microsoft.azure.kusto.inputbindings;

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.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import com.microsoft.azure.functions.kusto.annotation.KustoInput;
import com.microsoft.azure.kusto.common.Product;


import java.util.Optional;

public class GetProducts {
    @FunctionName("GetProducts")
    public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {
            HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS, route = "getproducts/{productId}") HttpRequestMessage<Optional<String>> request,
            @KustoInput(name = "getjproducts", kqlCommand = "declare query_parameters (productId:long);Products | where ProductID == productId",
                    kqlParameters = "@productId={productId}", database = "productsdb", connection = "KustoConnectionString") Product[] products) {
        return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products)
                .build();
    }
}

Trigger HTTP, získání řádku podle ID z řetězce dotazu

Následující příklad ukazuje dotaz na tabulku produktů podle názvu produktu. Funkce se aktivuje požadavkem HTTP, který k zadání hodnoty parametru dotazu používá řetězec dotazu. Tento parametr slouží k filtrování Product záznamů v zadaném dotazu.

package com.microsoft.azure.kusto.inputbindings;

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.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import com.microsoft.azure.functions.kusto.annotation.KustoInput;
import com.microsoft.azure.kusto.common.Product;

import java.util.Optional;

public class GetProductsQueryString {
    @FunctionName("GetProductsQueryString")
    public HttpResponseMessage run(@HttpTrigger(name = "req", methods = {
            HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS, route = "getproducts") HttpRequestMessage<Optional<String>> request,
            @KustoInput(name = "getjproductsquery", kqlCommand = "declare query_parameters (name:string);GetProductsByName(name)",
                    kqlParameters = "@name={Query.name}", database = "productsdb", connection = "KustoConnectionString") Product[] products) {
        return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products)
                .build();
    }
}

Další ukázky vstupní vazby Azure Data Exploreru jsou k dispozici v úložišti GitHub.

Tato část obsahuje následující příklady:

Příklady odkazují na tabulku databáze:

Trigger HTTP, získání více řádků

Následující příklad ukazuje vstupní vazbu Azure Data Exploreru v souboru function.json a funkci JavaScriptu, která čte z dotazu a vrací výsledky v odpovědi HTTP.

Následující data vazby jsou v souboru function.json :

{
  "bindings": [
    {
      "authLevel": "function",
      "name": "req",
      "direction": "in",
      "type": "httpTrigger",
      "methods": [
        "get"
      ],
      "route": "getproducts/{productId}"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "productget",
      "type": "kusto",
      "database": "productsdb",
      "direction": "in",
      "kqlCommand": "declare query_parameters (productId:long);Products | where ProductID == productId",
      "kqlParameters": "@productId={productId}",
      "connection": "KustoConnectionString"
    }
  ],
  "disabled": false
}

Oddíl konfigurace vysvětluje tyto vlastnosti.

Následující fragment kódu je ukázkový javascriptový kód:

module.exports = async function (context, req, productget) {
    return {
        status: 200,
        body: productget
    };
}

Trigger HTTP, získání řádku podle názvu z řetězce dotazu

Následující příklad ukazuje dotaz na tabulku produktů podle názvu produktu. Funkce se aktivuje požadavkem HTTP, který k zadání hodnoty parametru dotazu používá řetězec dotazu. Tento parametr slouží k filtrování Product záznamů v zadaném dotazu.

Následující data vazby jsou v souboru function.json :

{
  "bindings": [
    {
      "authLevel": "function",
      "name": "req",
      "direction": "in",
      "type": "httpTrigger",
      "methods": [
        "get"
      ],
      "route": "getproductsfn"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "productfnget",
      "type": "kusto",
      "database": "productsdb",
      "direction": "in",
      "kqlCommand": "declare query_parameters (name:string);GetProductsByName(name)",
      "kqlParameters": "@name={Query.name}",
      "connection": "KustoConnectionString"
    }
  ],
  "disabled": false
}

Oddíl konfigurace vysvětluje tyto vlastnosti.

Následující fragment kódu je ukázkový javascriptový kód:

module.exports = async function (context, req, producproductfngettget) {
    return {
        status: 200,
        body: productfnget
    };
}

Další ukázky vstupní vazby Azure Data Exploreru jsou k dispozici v úložišti GitHub.

Tato část obsahuje následující příklady:

Trigger HTTP, získání více řádků

Následující příklad ukazuje vstupní vazbu Azure Data Exploreru v souboru function.json a funkci Pythonu, která čte z dotazu a vrací výsledky v odpovědi HTTP.

Následující data vazby jsou v souboru function.json :

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "Anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get"
      ],
      "route": "getproducts/{productId}"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
      "name": "productsdb",
      "type": "kusto",
      "database": "sdktestsdb",
      "direction": "in",
      "kqlCommand": "declare query_parameters (productId:long);Products | where ProductID == productId",
      "kqlParameters": "@productId={Query.productId}",
      "connection": "KustoConnectionString"
    }
  ]
}

Oddíl konfigurace vysvětluje tyto vlastnosti.

Následující fragment kódu je ukázkový kód Pythonu:

import azure.functions as func
from Common.product import Product


def main(req: func.HttpRequest, products: str) -> func.HttpResponse:
    return func.HttpResponse(
        products,
        status_code=200,
        mimetype="application/json"
    )

Trigger HTTP, získání řádku podle ID z řetězce dotazu

Následující příklad ukazuje dotaz na tabulku produktů podle názvu produktu. Funkce se aktivuje požadavkem HTTP, který k zadání hodnoty parametru dotazu používá řetězec dotazu. Tento parametr slouží k filtrování Product záznamů v zadaném dotazu.

Následující data vazby jsou v souboru function.json :

{
  "bindings": [
    {
      "authLevel": "function",
      "name": "req",
      "direction": "in",
      "type": "httpTrigger",
      "methods": [
        "get"
      ],
      "route": "getproductsfn"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "productfnget",
      "type": "kusto",
      "database": "productsdb",
      "direction": "in",
      "kqlCommand": "declare query_parameters (name:string);GetProductsByName(name)",
      "kqlParameters": "@name={Query.name}",
      "connection": "KustoConnectionString"
    }
  ],
  "disabled": false
}

Oddíl konfigurace vysvětluje tyto vlastnosti.

Následující fragment kódu je ukázkový kód Pythonu:

import azure.functions as func

def main(req: func.HttpRequest, products: str) -> func.HttpResponse:
    return func.HttpResponse(
        products,
        status_code=200,
        mimetype="application/json"
    )

Atributy

Knihovna C# pomocí atributu KustoAttribute deklaruje vazby Azure Data Exploreru pro funkci, která má následující vlastnosti.

Vlastnost atributu Popis
Databáze Povinný: Databáze, ve které se má dotaz spustit.
Connection Povinný: Název proměnné, která obsahuje připojovací řetězec, překládá se prostřednictvím proměnných prostředí nebo prostřednictvím nastavení aplikace funkcí. Ve výchozím nastavení se vyhledá proměnná KustoConnectionString. Za běhu se tato proměnná vyhledá v prostředí. Dokumentace k připojovací řetězec je na připojovací řetězec Kusto. Příklad:"KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId.
KqlCommand Povinný: Parametr KqlQuery , který se musí spustit. Může to být dotaz KQL nebo volání funkce KQL.
KqlParameters Nepovinné. Parametry, které fungují jako predikátové proměnné pro KqlCommand. Například "@name={name}"@Id={id}, kde {name} a {id} se za běhu nahradí skutečnými hodnotami, které fungují jako predikáty. Název parametru a hodnota parametru nemohou obsahovat čárku (,) ani rovnítko (=).
ManagedServiceIdentity Nepovinné. Spravovanou identitu můžete použít k připojení k Azure Data Exploreru. Pokud chcete použít spravovanou identitu systému, použijte "systém". Všechny ostatní názvy identit se interpretují jako identita spravovaná uživatelem.

Poznámky

Knihovna modulu runtime funkcí Java používá @KustoInput anotace (com.microsoft.azure.functions.kusto.annotation.KustoInput).

Element (Prvek) Popis
name Požadováno. Název proměnné, která představuje výsledek dotazu v kódu funkce.
database Povinný: Databáze, ve které se má dotaz spustit.
připojení Povinný: Název proměnné, která obsahuje připojovací řetězec, překládá se prostřednictvím proměnných prostředí nebo prostřednictvím nastavení aplikace funkcí. Ve výchozím nastavení se vyhledá proměnná KustoConnectionString. Za běhu se tato proměnná vyhledá v prostředí. Dokumentace k připojovací řetězec je na připojovací řetězec Kusto. Příklad:"KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId.
kqlCommand Povinný: Parametr KqlQuery , který se musí spustit. Může to být dotaz KQL nebo volání funkce KQL.
kqlParameters Nepovinné. Parametry, které fungují jako predikátové proměnné pro KqlCommand. Například "@name={name}"@Id={id}, kde {name} a {id} se za běhu nahradí skutečnými hodnotami, které fungují jako predikáty. Název parametru a hodnota parametru nemohou obsahovat čárku (,) ani rovnítko (=).
managedServiceIdentity Spravovanou identitu je možné použít k připojení k Azure Data Exploreru. Pokud chcete použít spravovanou identitu systému, použijte "systém". Všechny ostatní názvy identit se interpretují jako identita spravovaná uživatelem.

Konfigurace

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json .

vlastnost function.json Popis
type Povinný: Musí být nastavena na kustohodnotu .
směr Povinný: Musí být nastavena na inhodnotu .
name Požadováno. Název proměnné, která představuje výsledek dotazu v kódu funkce.
database Povinný: Databáze, ve které se má dotaz spustit.
připojení Povinný: Název proměnné, která obsahuje připojovací řetězec, překládá se prostřednictvím proměnných prostředí nebo prostřednictvím nastavení aplikace funkcí. Ve výchozím nastavení se vyhledá proměnná KustoConnectionString. Za běhu se tato proměnná vyhledá v prostředí. Dokumentace k připojovací řetězec je na připojovací řetězec Kusto. Příklad:"KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId.
kqlCommand Povinný: Parametr KqlQuery , který se musí spustit. Může to být dotaz KQL nebo volání funkce KQL.
kqlParameters Nepovinné. Parametry, které fungují jako predikátové proměnné pro KqlCommand. Například "@name={name}"@Id={id}, kde {name} a {id} se za běhu nahradí skutečnými hodnotami, které fungují jako predikáty. Název parametru a hodnota parametru nemohou obsahovat čárku (,) ani rovnítko (=).
managedServiceIdentity Spravovanou identitu je možné použít k připojení k Azure Data Exploreru. Pokud chcete použít spravovanou identitu systému, použijte "systém". Všechny ostatní názvy identit se interpretují jako identita spravovaná uživatelem.

Při místním vývoji přidejte nastavení aplikace do souboru local.settings.json v kolekci Values .

Využití

Konstruktor atributu přebírá databázi a atributy KQLCommand a KQLParameters název nastavení připojení. Příkazem KQL může být příkaz KQL nebo funkce KQL. Název nastavení připojovací řetězec odpovídá nastavení aplikace (pro local.settings.json místní vývoj), které obsahuje připojovací řetězec Kusto. Například: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId. Dotazy spouštěné vstupní vazbou jsou parametrizovány. Hodnoty zadané v parametrech KQL se používají za běhu.

Další kroky

Uložení dat do tabulky (výstupní vazba)