Associazioni di input Esplora dati di Azure per Funzioni di Azure (anteprima)

L'associazione di input Esplora dati di Azure recupera i dati da un database.

Esempi

È possibile creare una funzione C# usando una delle modalità C# seguenti:

  • Modello di lavoro isolato: funzione C# compilata eseguita in un processo di lavoro isolato dal runtime. Il processo di lavoro isolato è necessario per supportare le funzioni C# in esecuzione in LTS e versioni non LTS .NET e .NET Framework.
  • Modello in-process: funzione C# compilata eseguita nello stesso processo del runtime di Funzioni.
  • Script C#: usato principalmente quando si creano funzioni C# nel portale di Azure.

Importante

Il supporto terminerà per il modello in-process il 10 novembre 2026. È consigliabile eseguire la migrazione delle app al modello di lavoro isolato per il supporto completo.

Altri esempi per l'associazione di input (out-of-process) di Azure Esplora dati sono disponibili nel repository GitHub.

Questa sezione contiene gli esempi seguenti:

Gli esempi fanno riferimento a una Product classe e alla tabella Products, entrambe definite nelle sezioni precedenti.

Trigger HTTP, ottenere riga per ID dalla stringa di query

L'esempio seguente illustra una funzione C# che recupera un singolo record. La funzione viene attivata da una richiesta HTTP che usa una stringa di query per specificare l'ID. Tale ID viene usato per recuperare un Product record con la query specificata.

Nota

Il parametro della stringa di query HTTP fa distinzione tra maiuscole e minuscole.

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, ottenere più righe dal parametro di route

L'esempio seguente illustra una funzione C# che recupera i record restituiti dalla query (in base al nome del prodotto, in questo caso). La funzione viene attivata da una richiesta HTTP che usa i dati di route per specificare il valore di un parametro di query. Tale parametro viene usato per filtrare i Product record nella query specificata.

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

Altri esempi per Java Azure Esplora dati binding di input sono disponibili nel repository GitHub.

Questa sezione contiene gli esempi seguenti:

Gli esempi fanno riferimento a una Product classe (in un file Product.javaseparato ) e a una tabella di database corrispondente.

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, ottenere più righe

Nell'esempio viene usato un parametro di route per specificare il nome dell'ID dei prodotti. Tutti i prodotti corrispondenti vengono recuperati dalla tabella prodotti.

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, ottenere riga per ID dalla stringa di query

Nell'esempio seguente viene illustrata una query per la tabella products in base al nome del prodotto. La funzione viene attivata da una richiesta HTTP che usa una stringa di query per specificare il valore di un parametro di query. Tale parametro viene usato per filtrare i Product record nella query specificata.

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

Altri esempi per l'associazione di input di Azure Esplora dati sono disponibili nel repository GitHub.

Questa sezione contiene gli esempi seguenti:

Gli esempi fanno riferimento a una tabella di database:

Trigger HTTP, ottenere più righe

L'esempio seguente illustra un'associazione di input Esplora dati di Azure in un file function.json e una funzione JavaScript che legge da una query e restituisce i risultati nella risposta HTTP.

I dati di associazione seguenti si trovano nel file 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
}

Queste proprietà sono descritte nella sezione configuration.

Il frammento di codice JavaScript seguente è di esempio:

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

Trigger HTTP, ottenere riga per nome dalla stringa di query

Nell'esempio seguente viene illustrata una query per la tabella products in base al nome del prodotto. La funzione viene attivata da una richiesta HTTP che usa una stringa di query per specificare il valore di un parametro di query. Tale parametro viene usato per filtrare i Product record nella query specificata.

I dati di associazione seguenti si trovano nel file 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
}

Queste proprietà sono descritte nella sezione configuration.

Il frammento di codice JavaScript seguente è di esempio:

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

Altri esempi per l'associazione di input di Azure Esplora dati sono disponibili nel repository GitHub.

Questa sezione contiene gli esempi seguenti:

Trigger HTTP, ottenere più righe

L'esempio seguente illustra un'associazione di input Esplora dati di Azure in un file function.json e una funzione Python che legge da una query e restituisce i risultati nella risposta HTTP.

I dati di associazione seguenti si trovano nel file 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"
    }
  ]
}

Queste proprietà sono descritte nella sezione configuration.

Il frammento di codice Python seguente è di esempio:

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, ottenere riga per ID dalla stringa di query

Nell'esempio seguente viene illustrata una query per la tabella products in base al nome del prodotto. La funzione viene attivata da una richiesta HTTP che usa una stringa di query per specificare il valore di un parametro di query. Tale parametro viene usato per filtrare i Product record nella query specificata.

I dati di associazione seguenti si trovano nel file 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
}

Queste proprietà sono descritte nella sezione configuration.

Il frammento di codice Python seguente è di esempio:

import azure.functions as func

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

Attributi

La libreria C# usa l'attributo KustoAttribute per dichiarare le associazioni di Esplora dati di Azure nella funzione, con le proprietà seguenti.

Proprietà dell'attributo Descrizione
Database Obbligatorio. Database su cui deve essere eseguita la query.
Connessione Obbligatorio. Nome della variabile che contiene il stringa di connessione, risolto tramite variabili di ambiente o tramite le impostazioni dell'app per le funzioni. Per impostazione predefinita, cercare la variabile KustoConnectionString. In fase di esecuzione, questa variabile viene cercata nell'ambiente. La documentazione sul stringa di connessione è disponibile in Stringa di connessione Kusto. Ad esempio:"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 Obbligatorio. Parametro KqlQuery che deve essere eseguito. Può essere una query KQL o una chiamata di funzione KQL.
KqlParameters Facoltativo. Parametri che fungono da variabili di predicato per KqlCommand. Ad esempio, "@name={name},",@Id={id} dove {name} e {id} vengono sostituiti in fase di esecuzione con valori effettivi che fungono da predicati. Il nome del parametro e il valore del parametro non possono contenere una virgola (,) o un segno di uguale (=).
ManagedServiceIdentity Facoltativo. È possibile usare un'identità gestita per connettersi ad Azure Esplora dati. Per usare un'identità gestita dal sistema, usare "system". Qualsiasi altro nome di identità viene interpretato come identità gestita dall'utente.

Annotazioni

La libreria di runtime delle funzioni Java usa l'annotazione @KustoInput (com.microsoft.azure.functions.kusto.annotation.KustoInput).

Elemento Descrizione
name Obbligatorio. Nome della variabile che rappresenta i risultati della query nel codice della funzione.
database Obbligatorio. Database su cui deve essere eseguita la query.
connection Obbligatorio. Nome della variabile che contiene il stringa di connessione, risolto tramite variabili di ambiente o tramite le impostazioni dell'app per le funzioni. Per impostazione predefinita, cercare la variabile KustoConnectionString. In fase di esecuzione, questa variabile viene cercata nell'ambiente. La documentazione sul stringa di connessione è disponibile in Stringa di connessione Kusto. Ad esempio:"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 Obbligatorio. Parametro KqlQuery che deve essere eseguito. Può essere una query KQL o una chiamata di funzione KQL.
kqlParameters Facoltativo. Parametri che fungono da variabili di predicato per KqlCommand. Ad esempio, "@name={name},",@Id={id} dove {name} e {id} vengono sostituiti in fase di esecuzione con valori effettivi che fungono da predicati. Il nome del parametro e il valore del parametro non possono contenere una virgola (,) o un segno di uguale (=).
managedServiceIdentity È possibile usare un'identità gestita per connettersi ad Azure Esplora dati. Per usare un'identità gestita dal sistema, usare "system". Qualsiasi altro nome di identità viene interpretato come identità gestita dall'utente.

Impostazione

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json.

Proprietà di function.json Descrizione
type Obbligatorio. Deve essere impostato su kusto.
direction Obbligatorio. Deve essere impostato su in.
name Obbligatorio. Nome della variabile che rappresenta i risultati della query nel codice della funzione.
database Obbligatorio. Database su cui deve essere eseguita la query.
connection Obbligatorio. Nome della variabile che contiene il stringa di connessione, risolto tramite variabili di ambiente o tramite le impostazioni dell'app per le funzioni. Per impostazione predefinita, cercare la variabile KustoConnectionString. In fase di esecuzione, questa variabile viene cercata nell'ambiente. La documentazione sul stringa di connessione è disponibile in Stringa di connessione Kusto. Ad esempio:"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 Obbligatorio. Parametro KqlQuery che deve essere eseguito. Può essere una query KQL o una chiamata di funzione KQL.
kqlParameters Facoltativo. Parametri che fungono da variabili di predicato per KqlCommand. Ad esempio, "@name={name},",@Id={id} dove {name} e {id} vengono sostituiti in fase di esecuzione con valori effettivi che fungono da predicati. Il nome del parametro e il valore del parametro non possono contenere una virgola (,) o un segno di uguale (=).
managedServiceIdentity È possibile usare un'identità gestita per connettersi ad Azure Esplora dati. Per usare un'identità gestita dal sistema, usare "system". Qualsiasi altro nome di identità viene interpretato come identità gestita dall'utente.

Quando si sviluppa in locale, aggiungere le impostazioni dell'applicazione nel file local.settings.json nella Values raccolta.

Utilizzo

Il costruttore dell'attributo accetta il database e gli attributi KQLCommand e KQLParameters il nome dell'impostazione di connessione. Il comando KQL può essere un'istruzione KQL o una funzione KQL. Il nome dell'impostazione stringa di connessione corrisponde all'impostazione dell'applicazione (in local.settings.json per lo sviluppo locale) che contiene i stringa di connessione Kusto. Ad esempio: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId. Le query eseguite dall'associazione di input vengono parametrizzate. I valori specificati nei parametri KQL vengono usati in fase di esecuzione.

Passaggi successivi

Salvare i dati in una tabella (associazione di output)