Após criar uma tabela de séries temporais no Tablestore e sua respectiva tabela de mapeamento em SQL, execute instruções SQL no console do Tablestore ou use um SDK do Tablestore para consultar dados de séries temporais na tabela.
Tabelas de mapeamento para uma tabela de séries temporais em SQL
O modelo TimeSeries é classificado em modelo de valor único e modelo de múltiplos valores, com base na geração de um ou mais valores em cada ponto no tempo de uma série temporal. A tabela a seguir descreve os tipos de tabelas de mapeamento 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 |
|
Consultar 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 após a criação da tabela de séries temporais. |
Mesmo nome da tabela de séries temporais. |
|
|
Consultar dados de séries temporais usando uma tabela de mapeamento no modelo de múltiplos valores. |
Após a criação da tabela de séries temporais, crie manualmente uma tabela de mapeamento em SQL. |
O nome da tabela de mapeamento segue o formato |
|
|
Consultar metadados de séries temporais. |
O sistema cria automaticamente uma tabela de mapeamento em SQL para os metadados após a criação da tabela de séries temporais. |
O nome da tabela de mapeamento segue o formato |
Tabelas de mapeamento no modelo de valor único
O sistema gera automaticamente uma tabela de mapeamento no modelo de valor único em SQL após a criação de uma tabela de séries temporais. O nome da tabela de mapeamento em SQL é idêntico ao nome da tabela de séries temporais. Use essa tabela de mapeamento no modelo de valor único para consultar os dados na tabela de séries temporais.
A tabela a seguir descreve o esquema da tabela de mapeamento em SQL.
|
Nome da coluna |
Tipo |
Descrição |
|
_m_name |
VARCHAR |
O nome da métrica. |
|
_data_source |
VARCHAR |
A fonte de dados (source). |
|
_tags |
VARCHAR |
As tags da série temporal. O valor é um array que contém várias tags no formato ["tagKey1=tagValue1","tagKey2=tagValue2"]. Use a função tag_value_at para extrair o valor de uma tag. |
|
_time |
BIGINT |
O timestamp do ponto de dados. Unidade: microssegundo. |
|
_field_name |
VARCHAR |
O nome da coluna de dados. |
|
_long_value |
BIGINT |
O valor de dados do tipo inteiro. Se o tipo de dados da coluna não for inteiro, o valor é NULL. |
|
_double_value |
DOUBLE |
O valor de dados do tipo ponto flutuante. Se o tipo de dados da coluna não for ponto flutuante, o valor é NULL. |
|
_bool_value |
BOOL |
O valor de dados do tipo booleano. Se o tipo de dados da coluna não for booleano, o valor é NULL. |
|
_string_value |
VARCHAR |
O valor de dados do tipo string. Se o tipo de dados da coluna não for string, o valor é NULL. |
|
_binary_value |
MEDIUMBLOB |
O valor de dados do tipo binário. Se o tipo de dados da coluna não for binário, o valor é NULL. |
|
_attributes |
VARCHAR |
As propriedades da série temporal. O formato das propriedades é igual ao formato das tags. |
|
_meta_update_time |
BIGINT |
O momento de atualização dos metadados da série temporal. Ao atualizar as propriedades de uma série temporal, o sistema atualiza automaticamente o tempo de atualização dos metadados. Se a gravação de dados na série temporal continuar, o sistema atualizará esse tempo em intervalos regulares. Use o tempo de atualização dos metadados para determinar se a série temporal está ativa e, se necessário, atualize as propriedades. |
Tabelas de mapeamento no modelo de múltiplos valores
Para consultar dados de séries temporais usando uma tabela de mapeamento no modelo de múltiplos valores, execute a instrução CREATE TABLE para criar a tabela. O nome da tabela de mapeamento em SQL segue o formato Name of the time series table::Suffix. Ao criar a tabela de mapeamento em SQL para a tabela de séries temporais, especifique o Suffix. É possível criar várias tabelas de mapeamento no modelo de múltiplos valores em SQL para uma única tabela de séries temporais.
Ao criar uma tabela de mapeamento no modelo de múltiplos valores para uma tabela de séries temporais, especifique o nome da tabela de mapeamento e os nomes e tipos das colunas de dados. Para mais informações, consulte a seção Create mapping tables in the multi-value model for time series tables deste tópico.
A tabela a seguir descreve o esquema da tabela de mapeamento em SQL.
Para ler a coluna de propriedades (_attributes) dos metadados da série temporal ou a coluna de tempo de atualização dos metadados (_meta_update_time) usando uma tabela de mapeamento no modelo de múltiplos valores, adicione essas duas colunas à tabela de mapeamento. O sistema preenche automaticamente o conteúdo nessas duas colunas de metadados.
|
Nome da coluna |
Tipo |
Descrição |
|
_m_name |
VARCHAR |
O nome da métrica. |
|
_data_source |
VARCHAR |
A fonte de dados (source). |
|
_tags |
VARCHAR |
As tags da série temporal. O valor é um array que contém várias tags no formato ["tagKey1=tagValue1","tagKey2=tagValue2"]. Use a função tag_value_at para extrair o valor de uma tag. |
|
_time |
BIGINT |
O timestamp do ponto de dados. Unidade: microssegundo. |
|
O nome da coluna de dados personalizada. |
Adicione várias colunas de dados personalizadas à tabela de mapeamento em SQL. Se o nome ou o tipo da coluna especificada na tabela de mapeamento em SQL não corresponder ao nome ou tipo da coluna na tabela de séries temporais, os valores dessa coluna na tabela de mapeamento serão nulos. |
|
|
_attributes (opcional) |
MEDIUMTEXT |
As propriedades da série temporal. O formato das propriedades é igual ao formato das tags. |
|
_meta_update_time (opcional) |
BIGINT |
O momento de atualização dos metadados da série temporal. Ao atualizar as propriedades de uma série temporal, o sistema atualiza automaticamente o tempo de atualização dos metadados. Se a gravação de dados na série temporal continuar, o sistema atualizará esse tempo em intervalos regulares. Use o tempo de atualização dos metadados para determinar se a série temporal está ativa e, se necessário, atualize as propriedades. |
Tabelas de mapeamento para metadados de séries temporais
O sistema gera automaticamente uma tabela de mapeamento para os metadados após a criação de uma tabela de séries temporais. O nome dessa tabela de mapeamento em SQL segue o formato Name of the time series table::meta. Use essa tabela para consultar metadados de séries temporais. Por exemplo, se o nome da tabela de séries temporais for timeseries_table, o nome da tabela de mapeamento para metadados será timeseries_table::meta.
A tabela a seguir descreve o esquema da tabela de mapeamento em SQL.
|
Nome da coluna |
Tipo |
Descrição |
|
_m_name |
VARCHAR |
O nome da métrica. |
|
_data_source |
VARCHAR |
A fonte de dados (source). |
|
_tags |
VARCHAR |
As tags da série temporal. |
|
_attributes |
VARCHAR |
As propriedades da série temporal. |
|
_meta_update_time |
BIGINT |
O momento de atualização dos metadados da série temporal. Ao atualizar as propriedades de uma série temporal, o sistema atualiza automaticamente o tempo de atualização dos metadados. Se a gravação de dados na série temporal continuar, o sistema atualizará esse tempo em intervalos regulares. Use o tempo de atualização dos metadados para determinar se a série temporal está ativa e, se necessário, atualize as propriedades. |
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 para 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 mais informações sobre os parâmetros na sintaxe SQL, consulte o esquema da tabela na seção Mapping tables in the multi-value model deste tópico.
-
Exemplo de SQL
O código de exemplo a seguir mostra como criar uma tabela de mapeamento no modelo de múltiplos valores chamada
timeseries_table::muti_modelpara a tabela de séries temporais. As métricas na tabela de mapeamento são CPU, memory e disktop. Exemplo de código SQL: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 e selecione os dados de séries temporais. Para mais informações, consulte Query data.
O Tablestore fornece a função de extensão tag_value_at para extrair o valor de uma tag nas tags (_tags) de uma série temporal. Use também essa função para extrair o valor de uma propriedade nas propriedades (_attributes) de uma série temporal.
Se o valor de _tags for ["host=abc","region=hangzhou"], use tag_value_at(_tags, "host") para extrair o valor abc da tag host. O exemplo a seguir mostra uma instrução SQL:
SELECT tag_value_at(_tags, "host") as host FROM timeseries_table LIMIT 1;
Exemplos de SQL
Consultar séries temporais
O sistema cria automaticamente uma tabela de mapeamento para os metadados após a criação de uma tabela de séries temporais. Use essa tabela de mapeamento para consultar séries temporais.
Este exemplo usa uma tabela de séries temporais chamada timeseries_table e uma tabela de mapeamento para metadados chamada timeseries_table::meta. A métrica na tabela de mapeamento é basic_metric.
-
Consulte as séries temporais cujo nome de métrica é basic_metric na tabela de mapeamento para metadados.
SELECT * FROM `timeseries_table::meta` WHERE _m_name = "basic_metric" LIMIT 100; -
Consulte as séries temporais que atendem a várias condições de tag (host=host001 e region=hangzhou) na tabela de mapeamento para 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; -
Consulte as séries temporais que atendem a várias condições de tag (host=host001 e region=hangzhou) e a uma condição de propriedade específica de status (status=online), e que permanecem ativas após um determinado ponto no tempo, na tabela de mapeamento para 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" 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 gera automaticamente uma tabela de mapeamento no modelo de valor único após a criação de uma tabela de séries temporais. Use essa tabela de mapeamento para consultar dados de séries temporais.
Este exemplo usa uma tabela de séries temporais chamada timeseries_table e uma tabela de mapeamento no modelo de valor único chamada timeseries_table. A métrica na tabela de mapeamento é basic_metric.
-
Consulte os dados cujo tipo de métrica é basic_metric na tabela de dados de séries temporais.
SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" LIMIT 10; -
Consulte os dados cujo tipo de métrica é basic_metric e a fonte de dados é device001 após um determinado ponto no tempo na tabela de dados 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; -
Consulte os dados na série temporal que atendem a uma única condição de tag (host=host001) na tabela de dados de séries temporais.
SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001" AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10; -
Consulte os dados na série temporal que atendem a várias condições de tag (host=host001 e region=hangzhou) na tabela de dados de séries temporais.
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; -
Agregue (avg e max) os dados de cpu_usr em uma série temporal que atenda a uma condição de tag específica (host=host001) com base em uma janela de tempo de 600 segundos na tabela de dados de séries temporais.
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
Crie uma tabela de mapeamento no modelo de múltiplos valores após a criação de uma tabela de séries temporais. Use essa tabela de mapeamento para consultar dados de séries temporais. Para mais informações, consulte a seção Create mapping tables in the multi-value model for time series tables deste tópico.
Este exemplo usa uma tabela de séries temporais chamada timeseries_table e uma tabela de mapeamento no modelo de múltiplos valores chamada timeseries_table::muti_model. As métricas na tabela de mapeamento são CPU, memory e disktop.
-
Consulte os dados cuja fonte de dados é host_01 usando a tabela de mapeamento no modelo de múltiplos valores. Neste exemplo, host_id é armazenado em _data_source.
SELECT * FROM `timeseries_table::muti_model` WHERE _data_source = "host_01" LIMIT 10; -
Consulte informações sobre as métricas na série temporal cujo valor de cpu é maior que 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 os valores máximos de disktop dos hosts que atendem a uma condição de tag específica (region=hangzhou) em 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
Use SQL para consultar dados de séries temporais usando um dos seguintes métodos. Ao consultar dados de séries temporais, execute operações nas tabelas de mapeamento de acordo com os requisitos de negócio.
Consulte dados de séries temporais com SQL no console do Tablestore. Para mais informações, consulte Use SQL queries in the Tablestore console.
Utilize SQL para consultar dados de séries temporais por meio de SDKs do Tablestore. Para mais informações, consulte Use Tablestore SDKs.
-
Execute consultas SQL a dados de séries temporais usando o Java Database Connectivity (JDBC).
Acesse o Tablestore usando JDBC. Para mais informações, consulte Use SQL queries with a direct JDBC connection.
Use o Hibernate com o driver JDBC do Tablestore. Para mais informações, consulte Use Hibernate to query data with SQL.
Utilize o MyBatis com o driver JDBC do Tablestore. Para mais informações, consulte Use MyBatis to query data with SQL.
Acesse o Tablestore com o driver do Tablestore para Go. Para mais informações, consulte Query data with the Go driver.
Consulte dados de séries temporais com SQL na CLI do Tablestore. Para mais informações, consulte SQL query.