روابط إدخال Azure Data Explorer لوظائف Azure (معاينة)

يسترد ربط إدخال Azure Data Explorer البيانات من قاعدة بيانات.

الأمثلة

يمكن إنشاء دالة C# باستخدام أحد أوضاع C# التالية:

  • نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. عملية العامل المعزولة مطلوبة لدعم وظائف C# التي تعمل على إصدارات LTS وغير LTS .NET و.NET Framework.
  • نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل الوظائف.
  • البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Microsoft Azure.

هام

سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.

تتوفر المزيد من العينات لربط إدخال Azure Data Explorer (خارج العملية) في مستودع GitHub.

يحتوي هذا القسم على الأمثلة التالية:

تشير الأمثلة Product إلى فئة وجدول المنتجات، وكلاهما معرف في الأقسام السابقة.

مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام

يُظهر المثال التالي دالة C#‎ التي تسترد سجلًا واحدًا. تُشغّل الوظيفة بواسطة طلب HTTP يستخدم سلسلة استعلام لتحديد المعرّف. يُستخدم هذا المعرّف لاسترداد سجل Product باستخدام الاستعلام المحدد.

إشعار

معلمة سلسلة استعلام HTTP حساسة لحالة الأحرف.

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

مشغِّل HTTP، الحصول على سجلات متعددة من معلمة المسار

يظهر المثال التالي دالة C# التي تسترد السجلات التي تم إرجاعها بواسطة الاستعلام (استنادا إلى اسم المنتج، في هذه الحالة). تُشغّل الدالة بواسطة طلب HTTP يستخدم بيانات المسار لتحديد قيمة معلمة المسار. يتم استخدام هذه المعلمة لتصفية السجلات Product في الاستعلام المحدد.

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

تتوفر المزيد من العينات لربط إدخال Java Azure Data Explorer في مستودع GitHub.

يحتوي هذا القسم على الأمثلة التالية:

تشير الأمثلة Product إلى فئة (في ملف Product.javaمنفصل) وجدول قاعدة بيانات مطابق.

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

مُشغل HTTP، الحصول علي سجلات متعددة

يستخدم المثال معلمة مسار لتحديد اسم معرف المنتجات. يتم استرداد جميع المنتجات المطابقة من جدول المنتجات.

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

مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام

يوضح المثال التالي استعلاما لجدول المنتجات حسب اسم المنتج. يتم تشغيل الدالة بواسطة طلب HTTP يستخدم سلسلة استعلام لتحديد قيمة معلمة استعلام. يتم استخدام هذه المعلمة لتصفية السجلات Product في الاستعلام المحدد.

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

تتوفر المزيد من العينات لربط إدخال Azure Data Explorer في مستودع GitHub.

يحتوي هذا القسم على الأمثلة التالية:

تُشير الأمثلة إلى جدول قاعدة البيانات:

مُشغل HTTP، الحصول علي سجلات متعددة

يوضح المثال التالي ربط إدخال Azure Data Explorer في ملف function.json ودالة JavaScript التي تقرأ من استعلام وترجع النتائج في استجابة HTTP.

توجد بيانات الربط التالية في ملف 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
}

قسم التكوين يشرح هذه الخصائص.

القصاصة البرمجية التالية هي نموذج التعليمات البرمجية JavaScript:

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

مشغل HTTP، الحصول على صف حسب الاسم من سلسلة الاستعلام

يوضح المثال التالي استعلاما لجدول المنتجات حسب اسم المنتج. يتم تشغيل الدالة بواسطة طلب HTTP يستخدم سلسلة استعلام لتحديد قيمة معلمة استعلام. يتم استخدام هذه المعلمة لتصفية السجلات Product في الاستعلام المحدد.

توجد بيانات الربط التالية في ملف 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
}

قسم التكوين يشرح هذه الخصائص.

القصاصة البرمجية التالية هي نموذج التعليمات البرمجية JavaScript:

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

تتوفر المزيد من العينات لربط إدخال Azure Data Explorer في مستودع GitHub.

يحتوي هذا القسم على الأمثلة التالية:

مُشغل HTTP، الحصول علي سجلات متعددة

يوضح المثال التالي ربط إدخال Azure Data Explorer في ملف function.json ودالة Python التي تقرأ من استعلام وترجع النتائج في استجابة HTTP.

توجد بيانات الربط التالية في ملف 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"
    }
  ]
}

قسم التكوين يشرح هذه الخصائص.

القصاصة البرمجية التالية هي نموذج التعليمات البرمجية ل Python:

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"
    )

مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام

يوضح المثال التالي استعلاما لجدول المنتجات حسب اسم المنتج. يتم تشغيل الدالة بواسطة طلب HTTP يستخدم سلسلة استعلام لتحديد قيمة معلمة استعلام. يتم استخدام هذه المعلمة لتصفية السجلات Product في الاستعلام المحدد.

توجد بيانات الربط التالية في ملف 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
}

قسم التكوين يشرح هذه الخصائص.

القصاصة البرمجية التالية هي نموذج التعليمات البرمجية ل Python:

import azure.functions as func

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

السمات

تستخدم مكتبة C# السمة KustoAttribute للإعلان عن روابط Azure Data Explorer على الوظيفة، والتي تحتوي على الخصائص التالية.

خاصية السمة ‏‏الوصف
قاعدة البيانات مطلوب. قاعدة البيانات التي يجب تنفيذ الاستعلام عليها.
الاتصال مطلوب. اسم المتغير الذي يحتوي على سلسلة الاتصال، الذي تم حله من خلال متغيرات البيئة أو من خلال إعدادات تطبيق الوظائف. الإعدادات الافتراضية للبحث عن المتغير KustoConnectionString. في وقت التشغيل، يتم البحث عن هذا المتغير مقابل البيئة. الوثائق حول سلسلة الاتصال في Kusto سلسلة الاتصال. على سبيل المثال:"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 مطلوب. المعلمة KqlQuery التي يجب تنفيذها. يمكن أن يكون استعلام KQL أو استدعاء دالة KQL.
KqlParameters اختياري. المعلمات التي تعمل كمتغيرات دالة تقييم ل KqlCommand. على سبيل المثال، "@name={name}"@Id={id}، حيث يتم استبدال {name} و {id} في وقت التشغيل بقيم فعلية تعمل كقيم دالة تقييم. لا يمكن أن يحتوي اسم المعلمة وقيمة المعلمة على فاصلة (,) أو علامة التساوي (=).
معرف الخدمة المدارة اختياري. يمكنك استخدام هوية مدارة للاتصال ب Azure Data Explorer. لاستخدام هوية مدارة من قبل النظام، استخدم "النظام". يتم تفسير أي أسماء هوية أخرى على أنها هوية مدارة من قبل المستخدم.

تعليقات توضيحية

تستخدم مكتبة وقت تشغيل وظائف Java التعليق التوضيحي @KustoInput (com.microsoft.azure.functions.kusto.annotation.KustoInput).

العنصر ‏‏الوصف‬
الاسم مطلوب. اسم المتغير الذي يُمثل قائمة الانتظار في التعليمة البرمجية للدالة.
قاعدة بيانات مطلوب. قاعدة البيانات التي يجب تنفيذ الاستعلام عليها.
الاتصال مطلوب. اسم المتغير الذي يحتوي على سلسلة الاتصال، الذي تم حله من خلال متغيرات البيئة أو من خلال إعدادات تطبيق الوظائف. الإعدادات الافتراضية للبحث عن المتغير KustoConnectionString. في وقت التشغيل، يتم البحث عن هذا المتغير مقابل البيئة. الوثائق حول سلسلة الاتصال في Kusto سلسلة الاتصال. على سبيل المثال:"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 مطلوب. المعلمة KqlQuery التي يجب تنفيذها. يمكن أن يكون استعلام KQL أو استدعاء دالة KQL.
kqlParameters اختياري. المعلمات التي تعمل كمتغيرات دالة تقييم ل KqlCommand. على سبيل المثال، "@name={name}"@Id={id}، حيث يتم استبدال {name} و {id} في وقت التشغيل بقيم فعلية تعمل كقيم دالة تقييم. لا يمكن أن يحتوي اسم المعلمة وقيمة المعلمة على فاصلة (,) أو علامة التساوي (=).
معرف الخدمة المدارة يمكن استخدام هوية مدارة للاتصال ب Azure Data Explorer. لاستخدام هوية مدارة من قبل النظام، استخدم "النظام". يتم تفسير أي أسماء هوية أخرى على أنها هوية مدارة من قبل المستخدم.

التكوين

يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.

خاصية function.json ‏‏الوصف
النوع مطلوب. يجب تعيينه إلى kusto.
اتجاه مطلوب. يجب تعيينه إلى in.
الاسم مطلوب. اسم المتغير الذي يُمثل قائمة الانتظار في التعليمة البرمجية للدالة.
قاعدة بيانات مطلوب. قاعدة البيانات التي يجب تنفيذ الاستعلام عليها.
الاتصال مطلوب. اسم المتغير الذي يحتوي على سلسلة الاتصال، الذي تم حله من خلال متغيرات البيئة أو من خلال إعدادات تطبيق الوظائف. الإعدادات الافتراضية للبحث عن المتغير KustoConnectionString. في وقت التشغيل، يتم البحث عن هذا المتغير مقابل البيئة. الوثائق حول سلسلة الاتصال في Kusto سلسلة الاتصال. على سبيل المثال:"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 مطلوب. المعلمة KqlQuery التي يجب تنفيذها. يمكن أن يكون استعلام KQL أو استدعاء دالة KQL.
kqlParameters اختياري. المعلمات التي تعمل كمتغيرات دالة تقييم ل KqlCommand. على سبيل المثال، "@name={name}"@Id={id}، حيث يتم استبدال {name} و {id} في وقت التشغيل بقيم فعلية تعمل كقيم دالة تقييم. لا يمكن أن يحتوي اسم المعلمة وقيمة المعلمة على فاصلة (,) أو علامة التساوي (=).
معرف الخدمة المدارة يمكن استخدام هوية مدارة للاتصال ب Azure Data Explorer. لاستخدام هوية مدارة من قبل النظام، استخدم "النظام". يتم تفسير أي أسماء هوية أخرى على أنها هوية مدارة من قبل المستخدم.

عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values.

الاستخدام

تأخذ الدالة الإنشائية للسمة قاعدة البيانات والسمات KQLCommand KQLParameters واسم إعداد الاتصال. يمكن أن يكون أمر KQL عبارة KQL أو دالة KQL. يتوافق اسم إعداد سلسلة الاتصال مع إعداد التطبيق (في local.settings.json للتطوير المحلي) الذي يحتوي على سلسلة الاتصال Kusto. على سبيل المثال: "KustoConnectionString": "Data Source=https://your_cluster.kusto.windows.net;Database=your_Database;Fed=True;AppClientId=your_AppId;AppKey=your_AppKey;Authority Id=your_TenantId. يتم تحديد معلمات الاستعلامات التي يتم تنفيذها بواسطة ربط الإدخال. يتم استخدام القيم المتوفرة في معلمات KQL في وقت التشغيل.

الخطوات التالية

حفظ البيانات في جدول (ربط الإخراج)