Todos os produtos
Search
Central de documentação

Simple Log Service:Funções e operadores de map

Última atualização: Jul 03, 2026

Conheça a sintaxe e o uso das funções e operadores de map no SLS.

O SLS oferece suporte às seguintes funções e operadores de map.

Importante

Para usar strings em instruções analíticas, coloque-as entre aspas simples (''). Strings sem aspas ou entre aspas duplas ("") indicam nomes de campos ou colunas. Por exemplo:

'status'

indica a string status, enquanto

status

ou

"status"

indica o campo de log status.

Nome da função

Sintaxe

Descrição

SQL

SPL

operador de subscrito

[x]

Retorna o valor de uma chave específica em um map.

×

função cardinality

cardinality(x)

Retorna a cardinalidade (tamanho) de um map.

×

função element_at

element_at(x, key)

Retorna o valor de uma chave específica em um map.

função histogram

histogram(x)

Agrupa resultados de consulta e análise em um map.

×

função histogram_u

histogram_u(x)

Agrupa resultados em formato de múltiplas linhas e colunas.

×

função map

map()

Retorna um map vazio.

map(x, y)

Crie um map a partir de dois arrays.

função map_agg

map_agg(x, y)

Crie um map com x como chave e y como valor. Se y tiver múltiplos valores, um será selecionado aleatoriamente.

×

função map_concat

map_concat(x, y...)

Mescla vários maps em um único map.

função map_filter

map_filter(x, lambda_expression)

Filtra entradas de um map com base em uma expressão lambda.

função map_keys

map_keys(x)

Extrai todas as chaves de um map e as retorna como um array.

função map_values

map_values(x)

Extrai todos os valores de um map e os retorna como um array.

função multimap_agg

multimap_agg(x, y)

Crie um map com x como chave e y como array de valores. Se y tiver múltiplos valores, todos serão coletados.

×

Operador de subscrito

O operador de subscrito retorna o valor de uma chave específica em um map.

Syntax

[x]

Parameters

Parâmetro

Descrição

x

A chave a ser acessada. Deve ser do tipo varchar.

Return value type

O tipo de dados do resultado corresponde ao tipo de valor do map.

Examples

Nos logs de transformação de dados do SLS, o campo etl_context é do tipo map. Use o operador de subscrito para obter o valor de project em etl_context.

  • Campo de exemplo

    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" }
  • Instrução de consulta e análise

    * | SELECT try_cast(json_parse(etl_context) AS map(varchar, varchar))['project']
  • A coluna _col0 retorna datalab-148****6461-cn-chengdu, que é o valor de project extraído de etl_context.

Função cardinality

A função cardinality retorna a cardinalidade (tamanho) de um map.

Syntax

cardinality(x)

Parameters

Parâmetro

Descrição

x

O map de entrada.

Return value type

bigint

Examples

Conte solicitações por método com histogram e, em seguida, conte os métodos únicos com cardinality.

  • Instrução de consulta e análise

    * |
    SELECT
      histogram(request_method) AS request_method,
      cardinality(histogram(request_method)) AS "kinds"
  • Resultados da consulta e análise: A coluna request_method retorna {"DELETE":5,"POST":7,"GET":41,"PUT":4}, e a coluna kinds retorna 4, indicando quatro métodos de solicitação.

Função element_at

A função element_at retorna o valor de uma chave específica em um map.

Syntax

element_at(x, key)

Parameters

Parâmetro

Descrição

x

O parâmetro deve ser um map.

key

Uma chave no map.

Return value type

O tipo de dados do resultado corresponde ao tipo de valor do map.

Examples

Conte solicitações por método com histogram e obtenha a contagem de DELETE com element_at.

  • Instrução de consulta e análise

    * |
    SELECT
      histogram(request_method) AS request_method,
      element_at(histogram(request_method),'DELETE') AS "count"
  • Resultados da consulta e análise: A coluna request_method retorna {"HEAD":686,"DELETE":13619,"POST":34365,"GET":138097,"PUT":34056}, e a coluna count retorna 13619 (a contagem de solicitações DELETE).

Função histogram

A função histogram agrupa resultados como um map JSON, semelhante a * | SELECT count(*) GROUP BY x.

Syntax

histogram(x)

Parameters

Parâmetro

Descrição

x

O parâmetro pode ser de qualquer tipo de dados.

Return value type

map

Examples

Conte solicitações por método com histogram.

  • Instrução de consulta e análise

    * | SELECT histogram(request_method) AS request_method
  • O resultado é {"HEAD":30,"DELETE":564,"POST":1382,"GET":5420,"PUT":1334}. GET apresenta a maior contagem, com 5.420.

Função histogram_u

A função histogram_u agrupa dados e retorna os resultados em formato de múltiplas linhas e colunas.

Syntax

histogram_u(x)

Parameters

Parâmetro

Descrição

x

O parâmetro pode ser de qualquer tipo de dados.

Return value type

bigint

Examples

Conte solicitações por método com histogram_u e exiba os resultados como um gráfico de colunas.

  • Instrução de consulta e análise

    *|SELECT  histogram_u(request_method) as request_method
  • Resultados da consulta e análise histogram_u

Função map

A função map retorna um map vazio ou cria um map a partir de dois arrays.

Syntax

  • Retorna um map vazio.

    map()
  • Crie um map a partir de dois arrays.

    map(x,y) 

Parameters

Parâmetro

Descrição

x

O parâmetro deve ser um array.

y

O parâmetro deve ser um array.

Return value type

map

Examples

  • Exemplo 1: Os campos class e number são arrays. Use a função map para criar um mapeamento chave-valor entre cada turma e sua quantidade de alunos.

    • Campos de exemplo

      class:["class01","class02","class03","class04","class05"]
      number:[49,50,45,47,50]
    • Instrução de consulta e análise

      * | SELECT map(try_cast(json_parse(class) AS array(varchar)) ,try_cast(json_parse(number) AS array(bigint)))
    • Os resultados da consulta e análise são {"class01":49,"class03":45,"class02":50,"class05":50,"class04":47}.

  • Exemplo 2: Retorne um map vazio.

    • Instrução de consulta e análise

      *| SELECT map()
    • O resultado é {}, um map vazio.

Função map_agg

A função map_agg mapeia x e y em um map, onde x é a chave e y é o valor. Se existirem múltiplos valores para y, um valor será selecionado aleatoriamente.

Syntax

map_agg(x, y)

Parameters

Parâmetro

Descrição

x

O parâmetro pode ser de qualquer tipo de dados.

y

O parâmetro pode ser de qualquer tipo de dados.

Return value type

map

Examples

Mapeie request_method (chave) e request_time (valor) em um map.

  • Campos de exemplo

    request_method:POST
    request_time:80
  • Instrução de consulta e análise

    * | SELECT map_agg(request_method,request_time)
  • Os resultados da consulta e análise são {"HEAD":47.0,"DELETE":26.0,"POST":80.0,"GET":51.0,"PUT":49.0}.

Função map_concat

A função map_concat mescla vários maps em um único map.

Syntax

map_concat(x, y)

Parameters

Parâmetro

Descrição

x

O parâmetro deve ser um map.

y

O parâmetro deve ser um map.

Return value type

map

Examples

Nos logs de transformação de dados do SLS, tanto etl_context quanto progress são do tipo map. Use map_concat para mesclá-los.

  • Campos de exemplo

    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 }
  • Instrução de consulta e análise

    * |
    SELECT
      map_concat(
        cast (
          json_parse(etl_context) AS map(varchar, varchar)
        ),
        cast (json_parse(progress) AS map(varchar, varchar))
      )
  • Resultados da consulta e análise

    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"}

Função map_filter

A função map_filter filtra um map com base em uma expressão lambda.

Syntax

map_filter(x, lambda_expression)

Parameters

Parâmetro

Descrição

x

O parâmetro deve ser um map.

lambda_expression

A expressão lambda. Expressões lambda.

Return value type

map

Examples

Mapeie dois arrays em um novo map, filtrando valores nulos. A expressão (k, v) -> v is not null é uma expressão lambda.

  • Instrução de consulta e análise

    * | SELECT map_filter(map(array[10, 20, 30], array['a', NULL, 'c']), (k, v) -> v is not null)
  • Os resultados da consulta e análise são {"10":"a","30":"c"}.

Função map_keys

A função map_keys extrai todas as chaves de um map e as retorna como um array.

Syntax

map_keys(x)

Parameters

Parâmetro

Descrição

x

O parâmetro deve ser um map.

Return value type

array

Examples

Nos logs de transformação de dados do SLS, o campo etl_context é do tipo map. Use map_keys para extrair todas as chaves de etl_context.

  • Campo de exemplo

    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" }
  • Instrução de consulta e análise

    * | SELECT map_keys(try_cast(json_parse(etl_context) AS map(varchar, varchar)))
  • O resultado da consulta e análise é ["consumer","consumer_group","logstore","project","shard_id"].

Função map_values

A função map_values extrai todos os valores de um map e os retorna como um array.

Syntax

map_values(x)

Parameters

Parâmetro

Descrição

x

O parâmetro deve ser um map.

Return value type

array

Examples

Nos logs de transformação de dados do SLS, o campo etl_context é do tipo map. Use map_values para extrair todos os valores de etl_context.

  • Campo de exemplo

    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" }
  • Instrução de consulta e análise

    * | SELECT map_values(try_cast(json_parse(etl_context) AS map(varchar, varchar)))
  • O resultado é um array com todos os valores em etl_context: ["datalab-148****6461-cn-chengdu", "internal-etl-log", "etl-83****4d1965", "etl-b2d40ed****c8d6-291294", "0"].

Função multimap_agg

A função multimap_agg mapeia x e y em um map. Nesse map, x é a chave e y é o valor, representado como um array. Se existirem múltiplos valores de y para a mesma chave, todos serão coletados no array.

Syntax

multimap_agg(x, y)

Parameters

Parâmetro

Descrição

x

O parâmetro pode ser de qualquer tipo de dados.

y

O parâmetro pode ser de qualquer tipo de dados.

Return value type

map

Examples

Mapeie request_method (chave) para request_time (array de valores) usando multimap_agg.

  • Campos de exemplo

    request_method:POST
    request_time:80
  • Instrução de consulta e análise

    * | SELECT multimap_agg(request_method,request_time)
  • O resultado mapeia cada método HTTP para um array de valores de request_time. Por exemplo, DELETE mapeia para [28.0, 80.0, 21.0, 54.0, ...], POST mapeia para [77.0, 27.0, 52.0, 25.0, ...], e assim por diante.