Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Las instrucciones let son útiles para:
- Dividir una expresión compleja en varias partes, cada una representada por una variable.
- Definir constantes fuera del cuerpo de la consulta para mejorar la legibilidad.
- Definir una variable una vez y usarla varias veces dentro de una consulta.
Si la variable anteriormente representaba otro valor, por ejemplo, en instrucciones anidadas, se aplicará la instrucción let más interna.
Para optimizar varios usos de la instrucción let en una sola consulta, vea Optimización de consultas que usan expresiones con nombre.
Note
La let instrucción enlaza un nombre a un cálculo, no al valor evaluado de ese cálculo. Este comportamiento significa que varias referencias al mismo nombre pueden devolver valores diferentes debido a que el cálculo se evalúa varias veces. If this is not the desired behavior, use toscalar() or materialize().
Sintaxis: expresiones escalares o tabulares
let
Name=Expression
Important
Las instrucciones Let deben ir seguidas de punto y coma. No puede haber líneas en blanco entre instrucciones let o entre instrucciones let y otras instrucciones de consulta.
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Name | string |
✔️ | El nombre de la variable. Puede omitir el nombre entre corchetes. Por ejemplo, ["Name with spaces"]. |
| Expression | string |
✔️ | Una expresión con un resultado escalar o tabular. Por ejemplo, una expresión con un resultado escalar sería let one=1;, y una expresión con un resultado tabular sería let RecentLog = Logs | where Timestamp > ago(1h). |
Sintaxis: vista o función
let
Name= [view] ([ Parameters ]){FunctionBody}
Important
Las instrucciones Let deben ir seguidas de punto y coma. No puede haber líneas en blanco entre instrucciones let o entre instrucciones let y otras instrucciones de consulta.
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| FunctionBody | string |
✔️ | Una expresión que representa una función definida por el usuario. |
view |
string |
Solo es relevante para una instrucción let sin parámetros. Cuando se usa, la instrucción let se incluye en las consultas con un operador union y una selección de caracteres comodín de las tablas y vistas. Para obtener un ejemplo, consulte Creación de una vista o una tabla virtual. |
|
| Parameters | string |
Cero o más parámetros de función tabular o escalar separados por comas. 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 (*). Si se especifican columnas, el argumento tabular de entrada debe contener estas columnas. Si se especifica un carácter comodín, el argumento tabular de entrada puede tener cualquier esquema. Para hacer referencia a columnas en el cuerpo de la función, estas deben especificarse. Para obtener ejemplos, consulte Argumento tabular con esquema y Argumento tabular con caracteres comodín.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. Los únicos tipos admitidos son bool, string, long, datetime, timespan, real, dynamic y su correspondientes alias. |
Note
- Los parámetros tabulares deben aparecer antes de los parámetros escalares.
- Las instrucciones deben estar separadas por un punto y coma.
Examples
Los ejemplos de consulta muestran la sintaxis y el uso de ejemplo del operador, la instrucción o la función.
The examples in this article use publicly available tables in the help cluster, such as the
StormEventstable in the Samples database.
The examples in this article use publicly available tables, such as the
Weathertable in the Weather analytics sample gallery. Es posible que tenga que modificar el nombre de la tabla en la consulta de ejemplo para que coincida con la tabla del área de trabajo.
Definición de valores escalares
En el ejemplo siguiente se usa una instrucción de expresión 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 |
Definición de expresiones tabulares
En el ejemplo siguiente se enlaza el nombre some number mediante la notación ['name'] y, a continuación, se usa en una instrucción de expresión tabular.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
Output
| y |
|---|
| 0 |
| 5 |
| 10 |
| 15 |
| 20 |
Creación de una función definida por el usuario mediante cálculo escalar
En este ejemplo se usa la instrucción Let con argumentos para el cálculo escalar. La consulta define la función MultiplyByN para multiplicar dos 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 |
Creación de una función definida por el usuario que recorta la entrada
En el siguiente ejemplo se quitan los valores iniciales y finales de la 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 |
Uso de varias instrucciones Let
En este ejemplo se definen dos instrucciones Let de manera que una instrucción (foo2) usa a la otra (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 |
Creación de una vista o una tabla virtual
En este ejemplo se muestra cómo usar una instrucción let para crear una view o tabla virtual.
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 |
Uso de la función materialize
La función materialize() permite almacenar en caché los resultados de la subconsulta durante la ejecución de la consulta. Cuando se usa la función materialize(), los datos se almacenan en caché y cualquier invocación posterior del resultado usa datos almacenados en caché.
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 |
| ... | ... | ... | ... |
Uso de instrucciones let anidadas
Se permite el uso de instrucciones let anidadas, incluida una expresión de función definida por el usuario. Las instrucciones y argumentos Let se aplican en el ámbito actual e interno del cuerpo de la función.
let start_time = ago(5h);
let end_time = start_time + 2h;
T | where Time > start_time and Time < end_time | ...
Argumento tabular con esquema
En el ejemplo siguiente se especifica que el parámetro T de tabla debe tener una columna State de tipo string. La tabla T también puede incluir otras columnas, pero no se puede hacer referencia a ellas en la función StateState porque no se declaran.
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 | SUR ATLÁNTICO SURATLANTICO |
| FLORIDA | FLORIDAFLORIDA |
| FLORIDA | FLORIDAFLORIDA |
| GEORGIA | GEORGIAGEORGIA |
| MISSISSIPPI | MISSISSIPPIMISSISSIPPI |
| ... | ... |
Argumento tabular con carácter comodín
El parámetro T de tabla puede tener cualquier esquema y la función CountRecordsInTable funcionará.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Output
| Count |
|---|
| 59,066 |