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
declare
query_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 datetime ilgili tür. Kullanıcı tarafından sağlanan değerler dize olarak kodlanır. Kesin olarak 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
Bu bölümdeki örneklerde, kullanmaya başlamanıza yardımcı olması için söz diziminin nasıl kullanılacağı gösterilmektedir.
Bu makaledeki örneklerde, Örnekleri veritabanındaki
StormEvents
tablosu gibi yardım kümesiiçindeki genel kullanıma açık tablolar kullanılır.
Bu makaledeki örneklerde, Weather analytics
StormEvents
içindeki tablosu gibi genel kullanıma açık tablolar kullanılır.
Sorgu parametrelerini bildirme
Bu sorgu, storm olaylarını StormEvents tablosundan alır ve toplam doğrudan ve dolaylı yaralanma sayısı belirtilen eşiği aşıyor (varsayılan değer 90'dır). Ardından EpisodeId, EventTypeve bu olayların her biri için toplam yaralanma sayısını hesaplar.
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ı Parameters
iç 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