Příkaz deklarace parametrů dotazu
Dotazy odeslané do Kusto můžou obsahovat sadu dvojic názvů a hodnot. Dvojice se nazývají parametry dotazu společně se samotným textem dotazu. Dotaz může odkazovat na jednu nebo více hodnot zadáním názvů a typů v příkazu deklarace parametrů dotazu.
Parametry dotazu mají dvě hlavní použití:
- Jako ochranný mechanismus proti útokům prostřednictvím injektáže.
- Jako způsob parametrizace dotazů.
Konkrétně klientské aplikace, které kombinují vstupy poskytnuté uživatelem v dotazech, které pak odešlou do Kusto, by měly používat mechanismus ochrany před útoky pomocí injektáže SQL kusto.
Deklarování parametrů dotazu
Pokud chcete odkazovat na parametry dotazu, musí text dotazu nebo funkce, které používá, nejprve deklarovat, který parametr dotazu používá. Pro každý parametr deklarace obsahuje název a skalární typ. Volitelně může mít parametr také výchozí hodnotu. Výchozí hodnota se použije, pokud požadavek neposkytuje konkrétní hodnotu parametru. Kusto pak parsuje hodnotu parametru dotazu podle jeho normálních pravidel parsování pro daný typ.
Syntax
declare
query_parameters
(
Název1:
Type1 [=
DefaultValue1] [,
...] );
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
Název1 | string |
✔️ | Název parametru dotazu použitého v dotazu. |
Typ1 | string |
✔️ | Odpovídající typ, například string nebo datetime . Hodnoty zadané uživatelem jsou zakódovány jako řetězce. Na parametr dotazu se použije příslušná metoda analýzy, aby se získala hodnota silného typu. |
Výchozí hodnota1 | string |
Výchozí hodnota parametru. Tato hodnota musí být literálem příslušného skalárního typu. |
Poznámka
- Podobně jako uživatelem definované funkce nemohou mít parametry dotazu typu
dynamic
výchozí hodnoty. - Příkazy Let, set a tabulkové příkazy jsou spojeny dohromady nebo oddělené středníkem, jinak nebudou považovány za součást stejného dotazu.
Příklad
declare query_parameters(maxInjured:long = 90);
StormEvents
| where InjuriesDirect + InjuriesIndirect > maxInjured
| project EpisodeId, EventType, totalInjuries = InjuriesDirect + InjuriesIndirect
Výstup
Id epizody | Typ události | totalInjuries |
---|---|---|
12459 | Zimní počasí | 137 |
10477 | Nadměrné teplo | 200 |
10391 | Tepla | 187 |
10217 | Nadměrné teplo | 422 |
10217 | Nadměrné teplo | 519 |
Určení parametrů dotazu v klientské aplikaci
Názvy a hodnoty parametrů dotazu jsou poskytovány jako string
hodnoty aplikací, která dotaz provádí. Nesmí se opakovat žádné jméno.
Interpretace hodnot se provádí podle příkazu deklarace parametrů dotazu. Každá hodnota se analyzuje, jako by se jednalo o literál v textu dotazu. Analýza se provádí podle typu určeného příkazem deklarace parametrů dotazu.
REST API
Parametry dotazu poskytují klientské aplikace prostřednictvím slotu properties
objektu JSON v těle požadavku ve vnořeném sáčku vlastností s názvem Parameters
. Tady je například tělo volání rozhraní REST API kusto, které vypočítá věk některého uživatele, pravděpodobně tak, že aplikace požádá o narozeniny uživatele.
{
"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++'])\"}}"
}
Sady SDK Kusto
Informace o tom, jak zadat názvy a hodnoty parametrů dotazu při používání klientských knihoven Kusto, najdete v tématu Ochrana vstupu uživatele pomocí parametrů dotazu.
Kusto.Explorer
Pokud chcete nastavit parametry dotazu odesílané při vytváření požadavku na službu, použijte ikonu "klíč" parametrů dotazu (ALT
+ P
).
Tato funkce není ve službě Azure Monitor podporovaná.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro