Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Applies to: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
A let
statement is used to set a variable name equal to an expression or a function, or to create views.
let
declarações são úteis para:
- Dividir uma expressão complexa em várias partes, cada uma representada por uma variável.
- Definição de constantes fora do corpo da consulta para legibilidade.
- Definir uma variável uma vez e usá-la várias vezes dentro de uma consulta.
Se a variável representava anteriormente outro valor, por exemplo, em instruções aninhadas, aplica-se a instrução let
mais interna.
Para otimizar vários usos da instrução let
em uma única consulta, consulte Otimizar consultas que usam expressões nomeadas.
Note
A instrução let
vincula um nome a um cálculo, não ao valor avaliado desse cálculo. Esse comportamento significa que várias referências ao mesmo nome podem retornar valores diferentes devido ao cálculo ser avaliado várias vezes. If this is not the desired behavior, use toscalar() or materialize().
Sintaxe: Expressões escalares ou tabulares
let
Name=
Expression
Important
As instruções devem ser seguidas de ponto-e-vírgula. Não pode haver linhas em branco entre as instruções let ou entre as instruções let e outras instruções de consulta.
Learn more about syntax conventions.
Parameters
Name | Tipo | Required | Description |
---|---|---|---|
Name | string |
✔️ | O nome da variável. Você pode escapar do nome entre colchetes. Por exemplo, ["Name with spaces"] . |
Expression | string |
✔️ | Uma expressão com um resultado escalar ou tabular. Por exemplo, uma expressão com um resultado escalar seria let one=1; e uma expressão com um resultado tabular seria let RecentLog = Logs | where Timestamp > ago(1h) . |
Sintaxe: Vista ou função
let
Name=
[view
] (
[ Parameters ])
{
FunctionBody}
Important
As instruções devem ser seguidas de ponto-e-vírgula. Não pode haver linhas em branco entre as instruções let ou entre as instruções let e outras instruções de consulta.
Learn more about syntax conventions.
Parameters
Name | Tipo | Required | Description |
---|---|---|---|
FunctionBody | string |
✔️ | Uma expressão que produz uma função definida pelo usuário. |
view |
string |
Apenas relevante para uma declaração let sem parâmetros. Quando usada, a instrução let é incluída em consultas com um operador de union com seleção curinga das tabelas/exibições. Para obter um exemplo, consulte Criar um modo de exibição ou tabela virtual. |
|
Parameters | string |
Zero ou mais parâmetros de função tabular ou escalar separados por vírgula. For each parameter of tabular type, the parameter should be in the format TableName : TableSchema, in which TableSchema is either a comma-separated list of columns in the format ColumnName: ColumnType or a wildcard (* ). Se as colunas forem especificadas, o argumento tabular de entrada deverá conter essas colunas. Se um curinga for especificado, o argumento tabular de entrada poderá ter qualquer esquema. Para referenciar colunas no corpo da função, elas devem ser especificadas. Para obter exemplos, consulte argumento tabular com de esquema e argumento tabular comcuringa.For each parameter of scalar type, provide the parameter name and parameter type in the format Name : Type. The name can appear in the FunctionBody and is bound to a particular value when the user defined function is invoked. Os únicos tipos suportados são bool , string , long , datetime , timespan , real , dynamic e os aliases para esses tipos. |
Note
- Os parâmetros tabulares devem aparecer antes dos parâmetros escalares.
- Quaisquer duas instruções devem ser separadas por ponto-e-vírgula.
Examples
Os exemplos de consulta mostram a sintaxe e o uso de exemplo do operador, instrução ou função.
The examples in this article use publicly available tables in the help cluster, such as the
StormEvents
table in the Samples database.
The examples in this article use publicly available tables, such as the
Weather
table in the Weather analytics sample gallery. Talvez seja necessário modificar o nome da tabela na consulta de exemplo para corresponder à tabela em seu espaço de trabalho.
Definir valores escalares
O exemplo a seguir usa uma instrução de expressão escalar.
let threshold = 50;
let region = "West";
datatable(Name:string, Score:int, Region:string)
[
"Alice", 45, "West",
"Bob", 60, "East",
"Charlie", 55, "West",
"Dana", 70, "North"
]
| where Score > threshold and Region == region
Output
Name | Score | Region |
---|---|---|
Charlie | 55 | West |
Definir expressões tabulares
O exemplo a seguir associa o nome some number
usando a notação ['name']
e, em seguida, usa-o em uma instrução de expressão tabular.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
Output
y |
---|
0 |
5 |
10 |
15 |
20 |
Criar uma função definida pelo usuário com cálculo escalar
Este exemplo usa a instrução let com argumentos para cálculo escalar. A consulta define MultiplyByN
de função para multiplicar dois números.
let MultiplyByN = (val:long, n:long) { val * n };
range x from 1 to 5 step 1
| extend result = MultiplyByN(x, 5)
Output
x | result |
---|---|
1 | 5 |
2 | 10 |
3 | 15 |
4 | 20 |
5 | 25 |
Criar uma função definida pelo usuário que corta a entrada
O exemplo a seguir remove os à esquerda e à direita da entrada.
let TrimOnes = (s:string) { trim("1", s) };
range x from 10 to 15 step 1
| extend result = TrimOnes(tostring(x))
Output
x | result |
---|---|
10 | 0 |
11 | |
12 | 2 |
13 | 3 |
14 | 4 |
15 | 5 |
Usar várias instruções let
Este exemplo define duas instruções let em que uma instrução (foo2
) usa outra (foo1
).
let foo1 = (_start:long, _end:long, _step:long) { range x from _start to _end step _step};
let foo2 = (_step:long) { foo1(1, 100, _step)};
foo2(2) | count
Output
result |
---|
50 |
Criar uma vista ou tabela virtual
Este exemplo mostra como usar uma instrução let para criar uma tabela virtual ou view
.
let Range10 = view () { range MyColumn from 1 to 10 step 1 };
let Range20 = view () { range MyColumn from 1 to 20 step 1 };
search MyColumn == 5
Output
$table | MyColumn |
---|---|
Range10 | 5 |
Range20 | 5 |
Usar uma função de materialização
A função materialize()
permite armazenar em cache os resultados da subconsulta durante o tempo de execução da consulta. Quando você usa a função materialize()
, os dados são armazenados em cache e qualquer invocação subsequente do resultado usa dados armazenados em cache.
let TotalEventsbyLocation = StormEvents
| summarize TotalCount = count() by Location = BeginLocation;
let materializedScope = StormEvents
| summarize by EventType, Location = EndLocation;
let cachedResult = materialize(materializedScope);
cachedResult
| project EventType, Location
| join kind = inner
(
cachedResult
| project EventType, Location
)
on EventType
| where Location != ""
| summarize EventCount = count() by Location
| join kind = inner
TotalEventsbyLocation
on $left.Location == $right.Location
| project Location, EventCount, TotalCount, Percentage = EventCount * 100.0 / TotalCount
Output
Location | EventCount | TotalCount | Percentage |
---|---|---|---|
MELBOURNE BEACH | 112 | 1 | 11,200 |
EUSTIS | 13,854 | 12 | 115,450 |
LOTTS | 6,910 | 1 | 691,000 |
SERVICE | 997 | 1 | 99,700 |
... | ... | ... | ... |
Usando instruções let aninhadas
Instruções let aninhadas são permitidas, inclusive dentro de uma expressão de função definida pelo usuário. Deixe que declarações e argumentos se apliquem tanto no escopo atual quanto no escopo interno do corpo da função.
let start_time = ago(5h);
let end_time = start_time + 2h;
T | where Time > start_time and Time < end_time | ...
Argumento tabular com esquema
O exemplo a seguir especifica que o parâmetro table T
deve ter uma coluna State
do tipo string
. A tabela T
pode incluir outras colunas também, mas elas não podem ser referenciadas na função StateState
porque as não são declaradas.
let StateState=(T: (State: string)) { T | extend s_s=strcat(State, State) };
StormEvents
| invoke StateState()
| project State, s_s
Output
State | s_s |
---|---|
ATLANTIC SOUTH | ATLÂNTICO ATLÂNTICO SUL |
FLORIDA | FLORIDAFLORIDA |
FLORIDA | FLORIDAFLORIDA |
GEORGIA | GEORGIAGEORGIA |
MISSISSIPPI | MISSISSIPPIMISSISSIPPI |
... | ... |
Argumento tabular com curinga
O parâmetro de tabela T
pode ter qualquer esquema e a função CountRecordsInTable
funcionará.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Output
Count |
---|
59,066 |