Todos os produtos
Search
Central de documentação

Simple Log Service:Cláusula UNNEST

Última atualização: Jul 03, 2026

Campos de log podem conter valores do tipo array ou map. Use a cláusula UNNEST para expandir esses valores em várias linhas e facilitar consultas e análises.

Sintaxe

  • Expanda um array em várias linhas em uma única coluna chamada column_name.

    UNNEST(x) AS table_alias(column_name)
  • Expanda um map em várias linhas com colunas chamadas key_name e value_name.

    UNNEST(y) AS table(key_name,value_name)
Importante

Se seus dados forem strings, converta-os em um objeto JSON e faça o cast para o tipo array ou map desejado. Por exemplo, use try_cast(json_parse(array_column) as array(bigint)). Para mais detalhes, consulte funções de conversão de tipos.

Parâmetros

Parâmetro

Descrição

x

Expressão que resulta em um array.

column_name

Nome da coluna de saída que contém os elementos do array.

y

Expressão que resulta em um map.

key_name

Nome da coluna de saída que contém as chaves do map.

value_name

Nome da coluna de saída que contém os valores do map.

Exemplos

Exemplo 1

Expanda o valor de array do campo number em várias linhas.

  • Campo de amostra

    number:[49, 50, 45, 47, 50]
  • Instrução de consulta e análise

    * |
    SELECT
      a
    FROM  log,
      UNNEST(cast(json_parse(number) AS array(bigint))) AS t(a)
  • A consulta retorna a coluna a com os elementos expandidos: 49, 50, 45, 47 e 50.

Exemplo 2

Expanda o valor de array do campo number em várias linhas e calcule a soma.

  • Campo de amostra

    Este exemplo mostra um único log. A soma agrega os valores de number de todos os logs correspondentes.

    number:[49, 50, 45, 47, 50]
  • Instrução de consulta e análise

    * |
    SELECT
      sum(a) AS sum
    FROM  log,
      UNNEST(cast(json_parse(number) as array(bigint))) AS t(a)
  • A consulta retorna a coluna sum com o valor 368248, que representa o total de todos os elementos number nos logs correspondentes.

Exemplo 3

Expanda o valor de array do campo number em várias linhas e agrupe os elementos.

  • Campo de amostra

    number:[49, 50, 45, 47, 50]
  • Instrução de consulta e análise

    * |
    SELECT
      a, count(*) AS count
    FROM  log,
      UNNEST(cast(json_parse(number) as array(bigint))) AS t(a) GROUP BY a
  • O resultado exibe cada elemento e sua contagem. Por exemplo, o elemento 50 aparece 1194 vezes, enquanto os elementos 47, 49 e 45 aparecem 597 vezes cada.

Exemplo 4

Expanda o valor map do campo result em várias linhas e colunas.

  • Campo de amostra

    result:{
      anomaly_type:"OverThreshold"
      dim_name:"request_time"
      is_anomaly:true
      score:1
      value:"3.000000"}
  • Instrução de consulta e análise

    * |
    select
      key,
      value
    FROM  log,
      UNNEST(
        try_cast(json_parse(result) as map(varchar, varchar))
      ) AS t(key, value)

Exemplo 5

Expanda o valor map do campo result e agrupe por chave.

  • Campo de amostra

    result:{
      anomaly_type:"OverThreshold"
      dim_name:"request_time"
      is_anomaly:true
      score:1
      value:"3.000000"}
  • Instrução de consulta e análise

    * |
    select
      key,
      count(*) AS count
    FROM  log,
      UNNEST(
        try_cast(json_parse(result) as map(varchar, varchar))
      ) AS t(key, value)
    GROUP BY
      key
  • O resultado mostra uma count de 5422 para cada uma das cinco chaves (anomaly_type, dim_name, is_anomaly, score e value), o que confirma que cada log contém o mesmo conjunto de pares chave-valor.

Exemplo 6

Use a função histogram para contar requisições por método e expanda o map resultante com UNNEST para exibir os dados em um gráfico de colunas.

  • Instrução de consulta e análise

    * |
    SELECT
      key,
      value
    FROM(
        SELECT
          histogram(request_method) AS result
        FROM      log
      ),
      UNNEST(result) AS t(key, value)
  • Resultado da consulta e análise unnest