Conozca la sintaxis y el uso de las funciones y operadores de map en SLS.
SLS admite las siguientes funciones y operadores de map.
Si desea usar cadenas en instrucciones analíticas, debe encerrarlas entre comillas simples (''). Las cadenas sin comillas o encerradas entre comillas dobles ("") indican nombres de campo o de columna. Por ejemplo,
'status'
indica la cadena status, mientras que
status
o
"status"
indican el campo de registro status.
|
Nombre de la función |
Sintaxis |
Descripción |
SQL |
SPL |
|
[x] |
Devuelve el valor de una clave especificada dentro de un map. |
√ |
× |
|
|
cardinality(x) |
Devuelve la cardinalidad (tamaño) de un map. |
√ |
× |
|
|
element_at(x, key) |
Devuelve el valor de una clave especificada dentro de un map. |
√ |
√ |
|
|
histogram(x) |
Agrupa los resultados de consulta y análisis en un map. |
√ |
× |
|
|
histogram_u(x) |
Agrupa los resultados en un formato de varias filas y columnas. |
√ |
× |
|
|
map() |
Devuelve un map vacío. |
√ |
√ |
|
|
map(x, y) |
Crea un map a partir de dos arreglos. |
√ |
√ |
|
|
map_agg(x, y) |
Crea un map con x como clave y y como valor. Si y tiene varios valores, se selecciona uno al azar. |
√ |
× |
|
|
map_concat(x, y...) |
Combina varios mapas en un solo map. |
√ |
√ |
|
|
map_filter(x, lambda_expression) |
Filtra las entradas de un map según una expresión lambda. |
√ |
√ |
|
|
map_keys(x) |
Extrae todas las claves de un map y las devuelve como un arreglo. |
√ |
√ |
|
|
map_values(x) |
Extrae todos los valores de un map y los devuelve como un arreglo. |
√ |
√ |
|
|
multimap_agg(x, y) |
Crea un map con x como clave y y como arreglo de valores. Si y tiene varios valores, se recopilan todos. |
√ |
× |
Operador de subíndice
El operador de subíndice devuelve el valor de una clave especificada dentro de un map.
Syntax
[x]
Parameters
|
Parámetro |
Descripción |
|
x |
La clave a la que se accederá. Debe ser de tipo varchar. |
Return value type
El tipo de dato del resultado es el mismo que el tipo de valor del map.
Examples
En los registros de transformación de datos de SLS, el campo etl_context es de tipo map. Utilice el operador de subíndice para obtener el valor de project desde etl_context.
-
Campo de ejemplo
etl_context: { project:"datalab-148****6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83****4d1965" consumer:"etl-b2d40ed****c8d6-291294" shard_id:"0" } -
Instrucción de consulta y análisis
* | SELECT try_cast(json_parse(etl_context) AS map(varchar, varchar))['project'] La columna
_col0devuelvedatalab-148****6461-cn-chengdu, que es el valor de project extraído de etl_context.
Función cardinality
La función cardinality devuelve la cardinalidad (tamaño) de un map.
Syntax
cardinality(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El map de entrada. |
Return value type
bigint
Examples
Cuente las solicitudes por método con histogram y luego cuente los métodos únicos con cardinality.
-
Instrucción de consulta y análisis
* | SELECT histogram(request_method) AS request_method, cardinality(histogram(request_method)) AS "kinds" Resultados de la consulta y el análisis: La columna
request_methoddevuelve{"DELETE":5,"POST":7,"GET":41,"PUT":4}, y la columnakindsdevuelve4, lo que indica cuatro métodos de solicitud.
Función element_at
La función element_at devuelve el valor de una clave especificada dentro de un map.
Syntax
element_at(x, key)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro debe ser un map. |
|
key |
Una clave dentro del map. |
Return value type
El tipo de dato del resultado es el mismo que el tipo de valor del map.
Examples
Cuente las solicitudes por método con histogram y luego obtenga el recuento de DELETE con element_at.
-
Instrucción de consulta y análisis
* | SELECT histogram(request_method) AS request_method, element_at(histogram(request_method),'DELETE') AS "count" Resultados de la consulta y el análisis: La columna request_method devuelve
{"HEAD":686,"DELETE":13619,"POST":34365,"GET":138097,"PUT":34056}, y la columna count devuelve13619(el recuento de solicitudes DELETE).
Función histogram
La función histogram agrupa los resultados como un map JSON, similar a * | SELECT count(*) GROUP BY x.
Syntax
histogram(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro puede ser de cualquier tipo de dato. |
Return value type
map
Examples
Cuente las solicitudes por método con histogram.
-
Instrucción de consulta y análisis
* | SELECT histogram(request_method) AS request_method El resultado es
{"HEAD":30,"DELETE":564,"POST":1382,"GET":5420,"PUT":1334}. GET tiene el recuento más alto con 5,420.
Función histogram_u
La función histogram_u agrupa datos y devuelve los resultados en un formato de varias filas y columnas.
Syntax
histogram_u(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro puede ser de cualquier tipo de dato. |
Return value type
bigint
Examples
Cuente las solicitudes por método con histogram_u y muestre los resultados como un gráfico de columnas.
-
Instrucción de consulta y análisis
*|SELECT histogram_u(request_method) as request_method Resultados de la consulta y el análisis

Función map
La función map devuelve un map vacío o crea un map a partir de dos arreglos.
Syntax
-
Devuelve un map vacío.
map() -
Crea un map a partir de dos arreglos.
map(x,y)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro debe ser un arreglo. |
|
y |
El parámetro debe ser un arreglo. |
Return value type
map
Examples
-
Ejemplo 1: Los campos class y number son arreglos. Utilice la función map para crear una asignación de clave-valor entre cada clase y su cantidad de estudiantes.
-
Campos de ejemplo
class:["class01","class02","class03","class04","class05"] number:[49,50,45,47,50] -
Instrucción de consulta y análisis
* | SELECT map(try_cast(json_parse(class) AS array(varchar)) ,try_cast(json_parse(number) AS array(bigint))) Los resultados de la consulta y el análisis son
{"class01":49,"class03":45,"class02":50,"class05":50,"class04":47}.
-
-
Ejemplo 2: Devolver un map vacío.
-
Instrucción de consulta y análisis
*| SELECT map() El resultado es
{}, un map vacío.
-
Función map_agg
La función map_agg asigna x e y en un map, donde x es la clave e y es el valor. Si existen varios valores para y, se selecciona uno al azar.
Syntax
map_agg(x, y)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro puede ser de cualquier tipo de dato. |
|
y |
El parámetro puede ser de cualquier tipo de dato. |
Return value type
map
Examples
Asigne request_method (clave) y request_time (valor) en un map.
-
Campos de ejemplo
request_method:POST request_time:80 -
Instrucción de consulta y análisis
* | SELECT map_agg(request_method,request_time) Los resultados de la consulta y el análisis son
{"HEAD":47.0,"DELETE":26.0,"POST":80.0,"GET":51.0,"PUT":49.0}.
Función map_concat
La función map_concat combina varios mapas en un solo map.
Syntax
map_concat(x, y)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro debe ser un map. |
|
y |
El parámetro debe ser un map. |
Return value type
map
Examples
En los registros de transformación de datos de SLS, tanto etl_context como progress son de tipo map. Utilice map_concat para combinarlos.
-
Campos de ejemplo
etl_context: { project:"datalab-148****6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83****4d1965" consumer:"etl-b2d40ed****c8d6-291294" shard_id:"0" } progress: { accept:3 dropped:0 delivered:3 failed:0 } -
Instrucción de consulta y análisis
* | SELECT map_concat( cast ( json_parse(etl_context) AS map(varchar, varchar) ), cast (json_parse(progress) AS map(varchar, varchar)) ) -
Resultados de la consulta y el análisis
null {"consumer_group":"etl-83d5****071d1911974d1965","shard_id":"1","dropped":"0","project":"atalab-14****66461-cn-chengdu","delivered":"2","failed":"0","logstore":"internal-etl-log","consumer":"etl-b****510a8ee7a9532c8d6-291294","accept":"2"}
Función map_filter
La función map_filter filtra un map según una expresión lambda.
Syntax
map_filter(x, lambda_expression)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro debe ser un map. |
|
lambda_expression |
La expresión lambda. Lambda expressions. |
Return value type
map
Examples
Asigne dos arreglos a un nuevo map y filtre los valores nulos. La expresión (k, v) -> v is not null es una expresión lambda.
-
Instrucción de consulta y análisis
* | SELECT map_filter(map(array[10, 20, 30], array['a', NULL, 'c']), (k, v) -> v is not null) Los resultados de la consulta y el análisis son
{"10":"a","30":"c"}.
Función map_keys
La función map_keys extrae todas las claves de un map y las devuelve como un arreglo.
Syntax
map_keys(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro debe ser un map. |
Return value type
array
Examples
En los registros de transformación de datos de SLS, el campo etl_context es de tipo map. Utilice map_keys para extraer todas las claves de etl_context.
-
Campo de ejemplo
etl_context: { project:"datalab-148****6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83****4d1965" consumer:"etl-b2d40ed****c8d6-291294" shard_id:"0" } -
Instrucción de consulta y análisis
* | SELECT map_keys(try_cast(json_parse(etl_context) AS map(varchar, varchar))) El resultado de la consulta y el análisis es
["consumer","consumer_group","logstore","project","shard_id"].
Función map_values
La función map_values extrae todos los valores de un map y los devuelve como un arreglo.
Syntax
map_values(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro debe ser un map. |
Return value type
array
Examples
En los registros de transformación de datos de SLS, el campo etl_context es de tipo map. Utilice map_values para extraer todos los valores de etl_context.
-
Campo de ejemplo
etl_context: { project:"datalab-148****6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83****4d1965" consumer:"etl-b2d40ed****c8d6-291294" shard_id:"0" } -
Instrucción de consulta y análisis
* | SELECT map_values(try_cast(json_parse(etl_context) AS map(varchar, varchar))) El resultado es un arreglo con todos los valores en
etl_context:["datalab-148****6461-cn-chengdu", "internal-etl-log", "etl-83****4d1965", "etl-b2d40ed****c8d6-291294", "0"].
Función multimap_agg
La función multimap_agg asigna x e y a un map. En este map, x es la clave e y es el valor, que corresponde a un arreglo. Si existen varios valores de y para la misma clave, todos se recopilan en el arreglo.
Syntax
multimap_agg(x, y)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro puede ser de cualquier tipo de dato. |
|
y |
El parámetro puede ser de cualquier tipo de dato. |
Return value type
map
Examples
Asigne request_method (clave) a request_time (arreglo de valores) mediante multimap_agg.
-
Campos de ejemplo
request_method:POST request_time:80 -
Instrucción de consulta y análisis
* | SELECT multimap_agg(request_method,request_time) El resultado asigna cada método HTTP a un arreglo de valores de
request_time. Por ejemplo, DELETE se asigna a [28.0, 80.0, 21.0, 54.0, ...], POST se asigna a [77.0, 27.0, 52.0, 25.0, ...], y así sucesivamente.