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 ad ve tür belirterek bir veya daha fazla değere başvurabilir.

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

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

Özellikle, daha sonra Kusto'ya gönderdikleri sorgularda kullanıcı tarafından sağlanan girişi 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ü sağlar. İsteğe bağlı olarak, parametrenin varsayılan değeri de 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.

Syntax

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

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

Parametreler

Ad Tür Gerekli Açıklama
Ad1 string ✔️ Sorguda kullanılan sorgu parametresinin adı.
Tür1 string ✔️ veya gibi stringdatetimekarşılık gelen tür. Kullanıcı tarafından sağlanan değerler dize olarak kodlanır. Kesin 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ğerdir. 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üne dynamic ait sorgu parametrelerinin de varsayılan değerleri olamaz.
  • Let, set ve tabular deyimleri birlikte uygulanır/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

Çıkış

Bölüm Kimliği Olay türü totalInjuries
12459 Kış Hava Durumu 137
10477 Aşırı Isı 200
10391 Isı 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 yinelenebilir.

Değerlerin yorumu sorgu parametreleri bildirim deyimine göre yapılır. Her değer, bir sorgunun 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ı üzerinden, adlı Parametersiç içe ö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 bulunarak gönderilen sorgu parametrelerini ayarlamak için Sorgu parametreleri "anahtar" simgesini (ALT + P ) kullanın.

Bu özellik Azure İzleyici'de desteklenmez