Valores de dimensão exclusivos - Amazon Timestream

Para recursos semelhantes aos do Amazon Timestream para, considere o Amazon Timestream LiveAnalytics para InfluxDB. Ele oferece ingestão de dados simplificada e tempos de resposta de consulta de um dígito em milissegundos para análises em tempo real. Saiba mais aqui.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Valores de dimensão exclusivos

É possível ter um caso de uso em que tenha painéis nos quais deseja usar os valores exclusivos das dimensões como variáveis para detalhar as métricas correspondentes a uma fatia específica dos dados. O exemplo a seguir mostra um caso em que o painel preenche automaticamente os valores exclusivos de diversas dimensões, como região, célula, silo, microsserviço e zona de disponibilidade. Aqui, mostramos um exemplo de como usar consultas agendadas para acelerar significativamente o cálculo desses valores distintos dessas variáveis a partir das métricas que você está monitorando.

Sobre dados brutos de dados

É possível usar o SELECT DISTINCT para calcular os valores distintos vistos em seus dados. Por exemplo, se você quiser obter os valores distintos da região, use a consulta deste formulário.

SELECT DISTINCT region FROM "raw_data"."devops" WHERE time > ago(1h) ORDER BY 1

Você pode estar monitorando milhões de dispositivos e bilhões de séries temporais. No entanto, na maioria dos casos, essas variáveis interessantes são para dimensões de cardinalidade mais baixas, nas quais você tem de alguns a dezenas de valores. A computação de DISTINCT a partir de dados brutos pode exigir a digitalização de grandes volumes de dados.

Pré-calcule valores de dimensão exclusivos

Você quer que essas variáveis sejam carregadas rapidamente para que seus painéis sejam interativos. Além disso, essas variáveis geralmente são calculadas em cada carga do painel, então você quer que elas também sejam econômicas. É possível otimizar a localização dessas variáveis por meio de consultas agendadas e armazená-las em uma tabela derivada.

Primeiro, você precisa identificar as dimensões para as quais você precisa calcular os valores ou colunas DISTINCT que você usará nos predicados ao calcular o valor DISTINCT.

Neste exemplo, observa-se que o painel está atribuindo valores diferentes para as dimensões de região, célula, silo, zona de disponibilidade e microsserviço. Assim, a consulta a seguir pode ser utilizada para pré-calcular esses valores distintos.

SELECT region, cell, silo, availability_zone, microservice_name, min(@scheduled_runtime) AS time, COUNT(*) as numDataPoints FROM raw_data.devops WHERE time BETWEEN @scheduled_runtime - 15m AND @scheduled_runtime GROUP BY region, cell, silo, availability_zone, microservice_name

Há algumas coisas importantes a serem observadas aqui.

  • É possível utilizar um cálculo programado para pré-computar valores para diversas consultas distintas. Por exemplo, você está usando a consulta anterior para pré-computar valores para cinco variáveis diferentes. Portanto, você não precisa de um para cada variável. Esse mesmo padrão pode ser utilizado para identificar a computação compartilhada em diversos painéis a fim de otimizar a quantidade de consultas agendadas que você precisa manter.

  • Os valores exclusivos das dimensões não são inerentemente dados de séries temporais. Então, você converte isso em séries temporais usando @scheduled_runtime. Ao associar esses dados ao parâmetro @scheduled_runtime, também é possível rastrear quais valores exclusivos apareceram em um determinado momento, criando dados de séries temporais a partir deles.

  • No exemplo anterior, você verá um valor métrico sendo rastreado. Este exemplo usa COUNT (*). Se desejar monitorá-los em seus painéis, é possível calcular outros agregados relevantes.

Veja abaixo uma configuração para um cálculo programado usando a consulta anterior. Neste exemplo, ele é configurado para ser atualizado uma vez a cada 15 minutos usando a expressão de agendamento cron (0/15 * * *? *).

{ "Name": "PT15mHighCardPerUniqueDimensions", "QueryString": "SELECT region, cell, silo, availability_zone, microservice_name, min(@scheduled_runtime) AS time, COUNT(*) as numDataPoints FROM raw_data.devops WHERE time BETWEEN @scheduled_runtime - 15m AND @scheduled_runtime GROUP BY region, cell, silo, availability_zone, microservice_name", "ScheduleConfiguration": { "ScheduleExpression": "cron(0/15 * * * ? *)" }, "NotificationConfiguration": { "SnsConfiguration": { "TopicArn": "******" } }, "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName": "derived", "TableName": "hc_unique_dimensions_pt15m", "TimeColumn": "time", "DimensionMappings": [ { "Name": "region", "DimensionValueType": "VARCHAR" }, { "Name": "cell", "DimensionValueType": "VARCHAR" }, { "Name": "silo", "DimensionValueType": "VARCHAR" }, { "Name": "availability_zone", "DimensionValueType": "VARCHAR" }, { "Name": "microservice_name", "DimensionValueType": "VARCHAR" } ], "MultiMeasureMappings": { "TargetMultiMeasureName": "count_multi", "MultiMeasureAttributeMappings": [ { "SourceColumn": "numDataPoints", "MeasureValueType": "BIGINT" } ] } } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } }, "ScheduledQueryExecutionRoleArn": "******" }

Cálculo das variáveis da tabela derivada

Depois que o cálculo programado pré-materializa os valores exclusivos na tabela derivada hc_unique_dimensions_pt15m, você pode usá-la para calcular com eficiência os valores exclusivos das dimensões. Veja abaixo os exemplos de consultas sobre como calcular os valores exclusivos e como você pode usar outras variáveis como predicados nessas consultas de valores exclusivos.

Região

SELECT DISTINCT region FROM "derived"."hc_unique_dimensions_pt15m" WHERE time > ago(1h) ORDER BY 1

Célula

SELECT DISTINCT cell FROM "derived"."hc_unique_dimensions_pt15m" WHERE time > ago(1h) AND region = '${region}' ORDER BY 1

Silo

SELECT DISTINCT silo FROM "derived"."hc_unique_dimensions_pt15m" WHERE time > ago(1h) AND region = '${region}' AND cell = '${cell}' ORDER BY 1

Microsserviço

SELECT DISTINCT microservice_name FROM "derived"."hc_unique_dimensions_pt15m" WHERE time > ago(1h) AND region = '${region}' AND cell = '${cell}' ORDER BY 1

Zona de disponibilidade

SELECT DISTINCT availability_zone FROM "derived"."hc_unique_dimensions_pt15m" WHERE time > ago(1h) AND region = '${region}' AND cell = '${cell}' AND silo = '${silo}' ORDER BY 1