Valores de la dimensión únicos - Amazon Timestream

Para obtener capacidades similares a las de Amazon Timestream, considere Amazon Timestream LiveAnalytics para InfluxDB. Ofrece una ingesta de datos simplificada y tiempos de respuesta a las consultas en milisegundos de un solo dígito para realizar análisis en tiempo real. Obtenga más información aquí.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Valores de la dimensión únicos

Es posible que tenga un caso de uso en el que tenga paneles en los que quiera utilizar los valores únicos de las dimensiones como variables para desglosar las métricas correspondientes a un segmento de datos específico. La siguiente instantánea es un ejemplo en el que el panel completa de manera previa los valores únicos de varias dimensiones, como la región, la celda, el silo, el microservicio y la availability_zone. A continuación, mostramos un ejemplo sobre cómo puede utilizar las consultas programadas para acelerar de manera considerable el cálculo de los valores distintos de estas variables a partir de las métricas a las que hace un seguimiento.

Acerca de los datos sin procesar

Puede utilizar SELECT DISTINCT para calcular los distintos valores que se ven en los datos. Por ejemplo, si desea obtener los valores distintos de la región, puede utilizar la consulta de este formulario.

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

Es posible que esté haciendo el seguimiento de millones de dispositivos y miles de millones de series temporales. Sin embargo, en la mayoría de los casos, estas variables interesantes son para las dimensiones de menor cardinalidad, en los que se dispone de unos pocos valores o decenas de ellos. Para calcular DISTINCT de los datos sin procesar, es posible que sea necesario escanear grandes cantidades de datos.

Calcular previamente los valores de dimensión únicos

Quiere que estas variables se carguen con rapidez para que los paneles sean interactivos. Además, estas variables suelen calcularse cada vez que se carga el panel, por lo que también es recomendable que sean rentables. Puede optimizar la búsqueda de estas variables mediante las consultas programadas y la materialización en una tabla derivada.

En primer lugar, debe identificar las dimensiones para las que necesita calcular los valores o columnas DISTINCT que utilizará en los predicados al calcular el valor DISTINCT.

En este ejemplo, puede ver que el panel completa valores distintos para las dimensiones región, celda, silo, availability_zone y microservice. Por lo tanto, puede utilizar la siguiente consulta para calcular de manera previa estos valores únicos.

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

Existen algunos puntos importantes que se deben tener en cuenta.

  • Puede utilizar un cálculo programado para calcular previamente los valores de muchas consultas diferentes. Por ejemplo, está utilizando la consulta anterior para calcular de manera previa los valores de cinco variables diferentes. Por lo tanto, no necesita uno para cada variable. Puede utilizar este mismo patrón para identificar el cálculo compartido en varios paneles a fin de optimizar la cantidad de consultas programadas que debe mantener.

  • El valor único de las dimensiones no es intrínsecamente datos de serie temporal. Así que convierte esto en series temporales mediante @scheduled_runtime. Al asociar estos datos al parámetro @scheduled_runtime, también puede rastrear qué valores únicos aparecieron en un momento dado, creando así datos de serie temporal a partir de ellos.

  • En el ejemplo anterior, verá que se está realizando un seguimiento de un valor métrico. En este ejemplo se utiliza COUNT(*). Puede calcular otros agregados significativos si quiere realizar un seguimiento de ellos para los paneles.

A continuación, se muestra una configuración para un cálculo programado mediante el uso de la consulta anterior. En este ejemplo, se configura para que se actualice una vez cada 15 minutos mediante la expresión de programación 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": "******" }

Calcular las variables de la tabla derivada

Una vez que el cálculo programado materialice previamente los valores únicos de la tabla derivada hc_unique_dimensions_pt15m, puede utilizar la tabla derivada para calcular de forma eficiente los valores únicos de las dimensiones. A continuación, se muestran ejemplos de consultas sobre cómo calcular los valores únicos y cómo puede utilizar otras variables como predicados en estas consultas de valores únicos.

Región

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

Celda

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

Microservicio

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 disponibilidad

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