Todos os produtos
Search
Central de documentação

Tablestore:Usar SQL para consultar dados de séries temporais

Última atualização: Jul 03, 2026

Após criar uma tabela de séries temporais no Tablestore e a respectiva tabela de mapeamento em SQL, execute instruções SQL no console do Tablestore ou por meio de um SDK do Tablestore para consultar os dados armazenados.

Tabelas de mapeamento para uma tabela de séries temporais em SQL

O modelo TimeSeries divide-se em modelo de valor único e modelo de múltiplos valores, conforme a série temporal gere um ou mais valores em cada ponto no tempo. A tabela a seguir descreve os tipos de tabelas de mapeamento que você pode criar em SQL para consultar dados de uma tabela de séries temporais.

Tipo de tabela de mapeamento

Descrição

Método de criação

Nome da tabela de mapeamento em SQL

Tabelas de mapeamento no modelo de valor único

Consulta dados de séries temporais usando uma tabela de mapeamento no modelo de valor único.

O sistema cria automaticamente uma tabela de mapeamento em SQL ao criar a tabela de séries temporais.

Igual ao nome da tabela de séries temporais.

Tabelas de mapeamento no modelo de múltiplos valores

Consulta dados de séries temporais usando uma tabela de mapeamento no modelo de múltiplos valores.

Após criar a tabela de séries temporais, crie manualmente a tabela de mapeamento em SQL.

O nome segue o formato Nome da tabela de séries temporais::Sufixo. Especifique o Sufixo durante a criação da tabela de mapeamento em SQL.

Tabelas de mapeamento para metadados de séries temporais

Consulta metadados das séries temporais.

O sistema gera automaticamente uma tabela de mapeamento em SQL para os metadados após a criação da tabela de séries temporais.

O nome segue o formato Nome da tabela de séries temporais::meta.

Tabelas de mapeamento no modelo de valor único

Ao criar uma tabela de séries temporais, o sistema gera automaticamente uma tabela de mapeamento no modelo de valor único em SQL, com o mesmo nome da tabela original. Use essa tabela de mapeamento para consultar os dados da série temporal.

A tabela abaixo detalha o schema da tabela de mapeamento em SQL.

Nome da coluna

Tipo

Descrição

_m_name

VARCHAR

Nome da métrica.

_data_source

VARCHAR

Fonte dos dados.

_tags

VARCHAR

Tags da série temporal. O valor é um array contendo múltiplas tags no formato ["tagKey1=tagValue1","tagKey2=tagValue2"].

Use a função tag_value_at para extrair o valor de uma tag específica.

_time

BIGINT

Timestamp do ponto de dados. Unidade: microssegundo.

_field_name

VARCHAR

Nome da coluna de dados.

_long_value

BIGINT

Valor dos dados do tipo inteiro. Se o tipo de dados da coluna não for inteiro, o valor será NULL.

_double_value

DOUBLE

Valor dos dados do tipo ponto flutuante. Se o tipo de dados da coluna não for ponto flutuante, o valor será NULL.

_bool_value

BOOL

Valor dos dados do tipo booleano. Se o tipo de dados da coluna não for booleano, o valor será NULL.

_string_value

VARCHAR

Valor dos dados do tipo string. Se o tipo de dados da coluna não for string, o valor será NULL.

_binary_value

MEDIUMBLOB

Valor dos dados do tipo binário. Se o tipo de dados da coluna não for binário, o valor será NULL.

_attributes

VARCHAR

Propriedades da série temporal. O formato das propriedades é idêntico ao das tags.

_meta_update_time

BIGINT

Momento da última atualização dos metadados da série temporal.

O sistema atualiza automaticamente esse timestamp quando você altera as propriedades da série. Além disso, enquanto houver gravação contínua de dados, o sistema renova esse timestamp em intervalos regulares. Use esse campo para verificar se a série temporal está ativa.

Tabelas de mapeamento no modelo de múltiplos valores

Para consultar dados usando o modelo de múltiplos valores, execute a instrução CREATE TABLE e crie a tabela de mapeamento correspondente. O nome da tabela em SQL deve seguir o formato Nome da tabela de séries temporais::Sufixo. Defina o Sufixo no momento da criação. É possível criar várias tabelas de mapeamento no modelo de múltiplos valores para uma mesma tabela de séries temporais.

Durante a criação, especifique o nome da tabela de mapeamento, bem como os nomes e tipos das colunas de dados. Para mais detalhes, consulte a seção Criar tabelas de mapeamento no modelo de múltiplos valores para tabelas de séries temporais deste tópico.

A tabela a seguir apresenta o schema da tabela de mapeamento em SQL.

Nota

Caso precise ler a coluna de propriedades (_attributes) ou a coluna de tempo de atualização de metadados (_meta_update_time) por meio de uma tabela de mapeamento no modelo de múltiplos valores, inclua essas duas colunas na definição da tabela. O sistema preencherá automaticamente o conteúdo desses campos de metadados.

Nome da coluna

Tipo

Descrição

_m_name

VARCHAR

Nome da métrica.

_data_source

VARCHAR

Fonte dos dados.

_tags

VARCHAR

Tags da série temporal. O valor é um array com múltiplas tags no formato ["tagKey1=tagValue1","tagKey2=tagValue2"]. Use a função tag_value_at para extrair o valor de uma tag.

_time

BIGINT

Timestamp do ponto de dados. Unidade: microssegundo.

Nome da coluna de dados personalizada.

Tipos de dados SQL

Adicione quantas colunas personalizadas forem necessárias à tabela de mapeamento em SQL.

Se o nome ou o tipo da coluna especificada na tabela de mapeamento não corresponder exatamente ao da tabela de séries temporais, os valores retornados serão nulos.

_attributes (opcional)

MEDIUMTEXT

Propriedades da série temporal. O formato segue o mesmo padrão das tags.

_meta_update_time (opcional)

BIGINT

Momento da última atualização dos metadados da série temporal.

O sistema atualiza automaticamente esse timestamp quando você altera as propriedades da série. Enquanto houver gravação contínua de dados, o sistema renova esse timestamp periodicamente. Use esse campo para verificar se a série temporal está ativa.

Tabelas de mapeamento para metadados de séries temporais

O sistema cria automaticamente uma tabela de mapeamento para metadados assim que você cria uma tabela de séries temporais. O nome dessa tabela em SQL segue o formato Nome da tabela de séries temporais::meta. Use-a para consultar metadados. Por exemplo, se a tabela de séries temporais se chama timeseries_table, a tabela de mapeamento de metadados será timeseries_table::meta.

A tabela abaixo descreve o schema da tabela de mapeamento em SQL.

Nome da coluna

Tipo

Descrição

_m_name

VARCHAR

Nome da métrica.

_data_source

VARCHAR

Fonte dos dados.

_tags

VARCHAR

Tags da série temporal.

_attributes

VARCHAR

Propriedades da série temporal.

_meta_update_time

BIGINT

Momento da última atualização dos metadados da série temporal.

O sistema atualiza automaticamente esse timestamp quando você altera as propriedades da série. Enquanto houver gravação contínua de dados, o sistema renova esse timestamp periodicamente. Use esse campo para verificar se a série temporal está ativa.

Sintaxe SQL

Criar tabelas de mapeamento no modelo de múltiplos valores para tabelas de séries temporais

Execute a instrução CREATE TABLE para criar uma tabela de mapeamento no modelo de múltiplos valores associada a uma tabela de séries temporais.

  • Sintaxe SQL

    CREATE TABLE `timeseries_table::user_mapping_name` (
      `_m_name` VARCHAR(1024), 
      `_data_source` VARCHAR(1024), 
      `_tags` VARCHAR(1024), 
      `_time` BIGINT(20),
      `user_column_name1` data_type, 
      ......
      `user_column_namen` data_type,
      PRIMARY KEY(`_m_name`,`_data_source`,`_tags`,`_time`)
    );

    Para obter mais informações sobre os parâmetros da sintaxe SQL, consulte o schema da tabela na seção Tabelas de mapeamento no modelo de múltiplos valores deste tópico.

  • Exemplo de SQL

    O código abaixo exemplifica a criação de uma tabela de mapeamento no modelo de múltiplos valores chamada timeseries_table::muti_model para a tabela de séries temporais. As métricas definidas nesta tabela são cpu, memory e disktop. Código SQL de exemplo:

    CREATE TABLE `timeseries_table::muti_model` (
      `_m_name` VARCHAR(1024), 
      `_data_source` VARCHAR(1024), 
      `_tags` VARCHAR(1024),
      `_time` BIGINT(20),
      `cpu` DOUBLE(10),
      `memory` DOUBLE(10),
      `disktop` DOUBLE(10),
      PRIMARY KEY(`_m_name`,`_data_source`,`_tags`,`_time`)
    );

Consultar dados

Execute a instrução SELECT para consultar dados de séries temporais. Para mais detalhes, consulte Consultar dados.

O Tablestore oferece a função de extensão tag_value_at para extrair valores específicos das tags (_tags) de uma série temporal. Essa função também serve para extrair valores das propriedades (_attributes).

Por exemplo, se _tags contiver ["host=abc","region=hangzhou"], use tag_value_at(_tags, "host") para obter o valor abc da tag host. Veja o exemplo de instrução SQL abaixo:

SELECT tag_value_at(_tags, "host") as host FROM timeseries_table LIMIT 1;

Exemplos de SQL

Consultar séries temporais

Após a criação da tabela de séries temporais, o sistema gera automaticamente uma tabela de mapeamento para metadados. Use essa tabela para consultar as séries temporais.

Neste cenário, usamos uma tabela de séries temporais chamada timeseries_table e sua respectiva tabela de mapeamento de metadados timeseries_table::meta. A métrica utilizada é basic_metric.

  • Consulte séries temporais com nome de métrica igual a basic_metric na tabela de mapeamento de metadados.

    SELECT * FROM  `timeseries_table::meta` WHERE _m_name = "basic_metric" LIMIT 100;
  • Filtre séries temporais que atendam a múltiplas condições de tag (host=host001 e region=hangzhou) na tabela de mapeamento de metadados.

    SELECT * FROM `timeseries_table::meta` WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001"
     AND tag_value_at(_tags, "region") = "hangzhou" LIMIT 100;
  • Busque séries temporais na tabela de metadados que cumpram condições específicas de tag (host=host001 e region=hangzhou), possuam uma propriedade definida (status=online) e permaneçam ativas após determinado momento.

    SELECT * FROM `timeseries_table::meta` WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001" AND tag_value_at(_tags, "region") = "hangzhou"
     AND tag_value_at(_attributes, "status") = "online" AND _meta_update_time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 100;

Consultar dados de séries temporais usando a tabela de mapeamento no modelo de valor único

O sistema cria automaticamente uma tabela de mapeamento no modelo de valor único logo após a criação da tabela de séries temporais. Use essa estrutura para consultar os dados.

Este exemplo utiliza a tabela de séries temporais timeseries_table e a tabela de mapeamento no modelo de valor único timeseries_table. A métrica considerada é basic_metric.

  • Recupere registros cujo tipo de métrica seja basic_metric na tabela de dados de séries temporais.

    SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" LIMIT 10;
  • Obtenha dados com métrica basic_metric e fonte device001 posteriores a um timestamp específico na tabela de séries temporais.

    SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND _data_source = "device001" AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10;
  • Filtre dados na tabela de séries temporais que satisfaçam uma única condição de tag (host=host001).

    SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001"
     AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10;
  • Selecione registros na tabela de dados que atendam a múltiplas condições de tag (host=host001 e region=hangzhou).

    SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001" AND tag_value_at(_tags, "region") = "hangzhou"
     AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10;
  • Agrupe (avg e max) os dados cpu_usr de uma série temporal filtrada pela tag host=host001, usando janelas de tempo de 600 segundos.

    SELECT tag_value_at(_tags, "host") as host,_time DIV 600000000 * 600 as time_sec,avg(_double_value) as cpu_avg,max(_double_value) as cpu_max FROM
     timeseries_table WHERE _m_name = "basic_metric" AND _time > (UNIX_TIMESTAMP() - 21600) * 1000000 AND tag_value_at(_tags, "host") = "host001"
     AND _field_name = "cpu_summary_usr" GROUP BY host,time_sec ORDER BY time_sec LIMIT 100;

Consultar dados de séries temporais usando uma tabela de mapeamento no modelo de múltiplos valores

Após criar a tabela de séries temporais, crie uma tabela de mapeamento no modelo de múltiplos valores para consultar os dados. Para instruções detalhadas, veja a seção Criar tabelas de mapeamento no modelo de múltiplos valores para tabelas de séries temporais deste tópico.

Neste exemplo, utilizamos a tabela timeseries_table e a tabela de mapeamento no modelo de múltiplos valores timeseries_table::muti_model. As métricas envolvidas são cpu, memory e disktop.

  • Consulte registros cuja fonte de dados seja host_01 usando a tabela de mapeamento no modelo de múltiplos valores. Neste caso, host_id encontra-se em _data_source.

    SELECT * FROM `timeseries_table::muti_model` WHERE _data_source = "host_01" LIMIT 10;
  • Liste informações das métricas de séries temporais em que o valor de cpu excede 20,0, usando a tabela de mapeamento no modelo de múltiplos valores.

    SELECT cpu,memory,disktop FROM `timeseries_table::muti_model` WHERE cpu > 20.0 LIMIT 10;
  • Calcule a média dos valores de cpu e o máximo de disktop para hosts que atendem à condição de tag region=hangzhou no dia 1º de janeiro de 2022, usando a tabela de mapeamento no modelo de múltiplos valores.

    SELECT avg(cpu) as avg_cpu,max(disktop) as max_disktop FROM `timeseries_table::muti_mode` WHERE tag_value_at(_tags,"region") = "hangzhou"
     AND _time > 1640966400000000 AND _time < 1641052799000000 GROUP BY _data_source;

Métodos de uso

Você pode usar SQL para consultar dados de séries temporais pelos métodos a seguir. Durante a consulta, realize operações nas tabelas de mapeamento conforme suas necessidades de negócio.