Aracılığıyla paylaş


Sorgu parametreleri bildirim deyimi

Kusto'ya gönderilen sorgular bir dizi ad veya değer çifti içerebilir. Çiftler, sorgu metninin kendisiyle birlikte sorgu parametreleri olarak adlandırılır. Sorgu, bir sorgu parametreleri bildirim deyiminde adları ve türü belirterek bir veya daha fazla değere başvurabilir.

Sorgu parametrelerinin iki ana kullanım alanı vardır:

  • Enjeksiyon saldırılarına karşı koruma mekanizması olarak.
  • Sorguları parametreleştirmenin bir yolu olarak.

Özellikle, daha sonra Kusto'ya gönderdikleri sorgularda kullanıcı tarafından sağlanan girişleri birleştiren istemci uygulamaları, SQL Ekleme saldırılarının Kusto eşdeğerine karşı koruma sağlamak için mekanizmayı kullanmalıdır.

Sorgu parametrelerini bildirme

Sorgu parametrelerine başvurmak için, sorgu metninin veya kullandığı işlevlerin önce hangi sorgu parametresini kullandığını bildirmesi gerekir. Her parametre için bildirim adı ve skaler türünü sağlar. İsteğe bağlı olarak, parametre varsayılan bir değere de sahip olabilir. İstek parametre için somut bir değer sağlamazsa varsayılan değer kullanılır. Ardından Kusto, sorgu parametresinin değerini bu tür için normal ayrıştırma kurallarına göre ayrıştırıyor.

Sözdizimi

declarequery_parameters ( Ad1 : Tür1 [= DefaultValue1] [,...]);

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Zorunlu Açıklama
Ad1 string ✔️ Sorguda kullanılan sorgu parametresinin adı.
Tür1 string ✔️ veya gibi string datetimeilgili tür. Kullanıcı tarafından sağlanan değerler dize olarak kodlanır. Kesin olarak türü belirlenmiş bir değer almak için sorgu parametresine uygun ayrıştırma yöntemi uygulanır.
DefaultValue1 string Parametresi için varsayılan değer. Bu değer, uygun skaler türün değişmez değeri olmalıdır.

Not

  • Kullanıcı tanımlı işlevler gibi, türünde dynamic sorgu parametreleri de varsayılan değerlere sahip olamaz.
  • Let, set ve tabular deyimleri birlikte/noktalı virgülle ayrılır, aksi takdirde aynı sorgunun parçası olarak kabul edilmezler.

Örnek

declare query_parameters(maxInjured:long = 90);
StormEvents 
| where InjuriesDirect + InjuriesIndirect > maxInjured
| project EpisodeId, EventType, totalInjuries = InjuriesDirect + InjuriesIndirect

Çıktı

EpisodeId EventType totalInjuries
12459 Kış Hava Durumu 137
10477 Aşırı Isı 200
10391 Veri sıcaklığı 187
10217 Aşırı Isı 422
10217 Aşırı Isı 519

İstemci uygulamasında sorgu parametrelerini belirtme

Sorgu parametrelerinin adları ve değerleri, sorguyu yapan uygulama tarafından değer olarak string sağlanır. Hiçbir ad yinelenemeyebilir.

Değerlerin yorumlanması sorgu parametreleri bildirim deyimine göre yapılır. Her değer, sorgu gövdesinde değişmez değermiş gibi ayrıştırılır. Ayrıştırma, sorgu parametreleri bildirim deyimi tarafından belirtilen türe göre yapılır.

REST API

Sorgu parametreleri, istemci uygulamaları tarafından istek gövdesinin properties JSON nesnesinin yuvası aracılığıyla adlı Parametersiç içe bir özellik paketinde sağlanır. Örneğin, kusto'ya yapılan ve muhtemelen uygulamanın kullanıcının doğum gününü istemesini sağlayarak bir kullanıcının yaşını hesaplayan REST API çağrısının gövdesi aşağıda verilmiştir.

{
    "ns": null,
    "db": "myDB",
    "csl": "declare query_parameters(birthday:datetime); print strcat(\"Your age is: \", tostring(now() - birthday))",
    "properties": "{\"Options\":{},\"Parameters\":{\"birthday\":\"datetime(1970-05-11)\",\"courses\":\"dynamic(['Java', 'C++'])\"}}"
}

Kusto SDK'ları

Kusto istemci kitaplıklarını kullanırken sorgu parametrelerinin adlarını ve değerlerini sağlamayı öğrenmek için bkz . Kullanıcı girişini korumak için sorgu parametrelerini kullanma.

Kusto.Explorer

Hizmete istekte bulunurken gönderilen sorgu parametrelerini ayarlamak için Sorgu parametreleri "wrench" simgesini (ALTP + ) kullanın.

Bu özellik Azure İzleyici'de desteklenmez