Instrução de declaração de parâmetros de consulta
As consultas enviadas ao Kusto podem incluir um conjunto de pares de nome ou valor. Os pares são chamados de parâmetros de consulta, juntamente com o próprio texto de consulta. A consulta pode referenciar um ou mais valores, especificando nomes e tipo, em uma instrução de declaração de parâmetros de consulta.
Os parâmetros de consulta têm dois main usos:
- Como um mecanismo de proteção contra ataques de injeção.
- Como uma forma de parametrizar consultas.
Em particular, os aplicativos cliente que combinam a entrada fornecida pelo usuário em consultas que eles enviam para o Kusto devem usar o mecanismo para proteger contra o equivalente kusto de ataques de injeção de SQL .
Declarando parâmetros de consulta
Para referenciar parâmetros de consulta, o texto da consulta ou as funções que ele usa devem primeiro declarar qual parâmetro de consulta ele usa. Para cada parâmetro, a declaração fornece o nome e o tipo escalar. Opcionalmente, o parâmetro também pode ter um valor padrão. O padrão será usado se a solicitação não fornecer um valor concreto para o parâmetro . Em seguida, o Kusto analisa o valor do parâmetro de consulta, de acordo com suas regras normais de análise para esse tipo.
Syntax
declare
query_parameters
(
Name1:
Type1 [=
DefaultValue1] [,
...] );
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Obrigatório | Descrição |
---|---|---|---|
Name1 | string |
✔️ | O nome de um parâmetro de consulta usado na consulta. |
Type1 | string |
✔️ | O tipo correspondente, como string ou datetime . Os valores fornecidos pelo usuário são codificados como cadeias de caracteres. O método de análise apropriado é aplicado ao parâmetro de consulta para obter um valor fortemente tipado. |
DefaultValue1 | string |
Um valor padrão para o parâmetro . Esse valor deve ser um literal do tipo escalar apropriado. |
Observação
- Assim como as funções definidas pelo usuário, os parâmetros de consulta do tipo
dynamic
não podem ter valores padrão. - As instruções let, set e tabulares são penduradas juntas/separadas por um ponto e vírgula, caso contrário, elas não serão consideradas parte da mesma consulta.
Exemplo
declare query_parameters(maxInjured:long = 90);
StormEvents
| where InjuriesDirect + InjuriesIndirect > maxInjured
| project EpisodeId, EventType, totalInjuries = InjuriesDirect + InjuriesIndirect
Saída
EpisodeId | EventType | totalInjuries |
---|---|---|
12459 | Clima de Inverno | 137 |
10477 | Calor excessivo | 200 |
10391 | Calor | 187 |
10217 | Calor excessivo | 422 |
10217 | Calor excessivo | 519 |
Especificar parâmetros de consulta em um aplicativo cliente
Os nomes e valores dos parâmetros de consulta são fornecidos como string
valores pelo aplicativo que está fazendo a consulta. Nenhum nome pode se repetir.
A interpretação dos valores é feita de acordo com a instrução de declaração de parâmetros de consulta. Cada valor é analisado como se fosse um literal no corpo de uma consulta. A análise é feita de acordo com o tipo especificado pela instrução de declaração de parâmetros de consulta.
API REST
Os parâmetros de consulta são fornecidos por aplicativos cliente por meio do properties
slot do objeto JSON do corpo da solicitação, em um recipiente de propriedades aninhado chamado Parameters
. Por exemplo, aqui está o corpo de uma chamada à API REST para o Kusto que calcula a idade de algum usuário, presumivelmente fazendo com que o aplicativo solicite o aniversário do usuário.
{
"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 SDKs
Para saber como fornecer os nomes e valores dos parâmetros de consulta ao usar bibliotecas de cliente Kusto, consulte Usar parâmetros de consulta para proteger a entrada do usuário.
Kusto.Explorer
Para definir os parâmetros de consulta enviados ao fazer uma solicitação para o serviço, use o ícone "wrench" dos parâmetros de consulta (ALT
+ P
).
Essa funcionalidade não é compatível com o Azure Monitor
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de