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.
Asignaciones de modelos de datos para consultas programadas
Timestream for LiveAnalytics admite un modelado flexible de los datos de sus tablas y esta misma flexibilidad se aplica a los resultados de las consultas programadas que se materializan en otro Timestream for table. LiveAnalytics Con las consultas programadas, puede consultar cualquier tabla, ya sea que tenga datos en registros de medidas múltiples o de una sola medida, y escribir los resultados de la consulta utilizando estos tipos de registros.
Se utiliza TargetConfiguration en la especificación de una consulta programada para asignar los resultados de la consulta a las columnas correspondientes de la tabla derivada de destino. En las siguientes secciones se describen las distintas formas de especificarlo TargetConfiguration para lograr distintos modelos de datos en la tabla derivada. En concreto, verá lo siguiente:
-
Cómo escribir en registros de varias medidas cuando el resultado de la consulta no tiene un nombre de medida y se especifica el nombre de la medida objetivo en el TargetConfiguration.
-
Cómo se usa el nombre de la medida en el resultado de la consulta para escribir registros de medidas múltiples.
-
Cómo se puede definir un modelo para escribir varios registros con diferentes atributos de medidas múltiples.
-
Cómo se puede definir un modelo para escribir en los registros de una sola medida de la tabla derivada.
-
Cómo consultar registros de una sola medida, registros de and/or varias medidas en una consulta programada y hacer que los resultados se materialicen en un registro de una sola medida o en un registro de varias medidas, lo que le permite elegir la flexibilidad de los modelos de datos.
Ejemplo: nombre de la medida objetivo para los registros de medidas múltiples
En este ejemplo, verá que la consulta lee datos de una tabla con datos de múltiples medidas y escribe los resultados en otra tabla mediante registros de medidas múltiples. El resultado de la consulta programada no tiene una columna de nombre de medida natural. Aquí, puede especificar el nombre de la medida en la tabla derivada mediante la propiedad de. TargetMultiMeasureName TargetConfiguration TimestreamConfiguration.
{ "Name" : "CustomMultiMeasureName", "QueryString" : "SELECT region, bin(time, 1h) as hour, AVG(memory_cached) as avg_mem_cached_1h, MIN(memory_free) as min_mem_free_1h, MAX(memory_used) as max_mem_used_1h, SUM(disk_io_writes) as sum_1h, AVG(disk_used) as avg_disk_used_1h, AVG(disk_free) as avg_disk_free_1h, MAX(cpu_user) as max_cpu_user_1h, MIN(cpu_idle) as min_cpu_idle_1h, MAX(cpu_system) as max_cpu_system_1h FROM raw_data.devops_multi WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name = 'metrics' GROUP BY region, bin(time, 1h)", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_1", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MultiMeasureMappings" : { "TargetMultiMeasureName": "dashboard-metrics", "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "avg_mem_cached_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName" : "avgMemCached" }, { "SourceColumn" : "min_mem_free_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_mem_used_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "sum_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName" : "totalDiskWrites" }, { "SourceColumn" : "avg_disk_used_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "avg_disk_free_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_cpu_user_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName" : "CpuUserP100" }, { "SourceColumn" : "min_cpu_idle_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_cpu_system_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName" : "CpuSystemP100" } ] } } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
La asignación de este ejemplo crea un registro de varias medidas con el nombre de la medida dashboard-metrics y los nombres de los atributos: min_mem_free_1h, max_mem_used_1h, avg_disk_used_1h avgMemCached, avg_disk_free_1h, P100, min_cpu_idle_1h, P100. totalDiskWrites CpuUser CpuSystem Observe el uso opcional de TargetMultiMeasureAttributeName cambiar el nombre de las columnas de salida de la consulta por un nombre de atributo diferente utilizado para la materialización de los resultados.
El siguiente es el esquema de la tabla de destino una vez que se materialice la consulta programada. Como puede ver en el flujo temporal del tipo de LiveAnalytics atributo del siguiente resultado, los resultados se materializan en un registro de múltiples medidas con un nombre de medida únicodashboard-metrics, como se muestra en el esquema de medidas.
| Columna | Tipo | Secuencia temporal para el tipo de atributo LiveAnalytics |
|---|---|---|
|
región |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
tiempo |
timestamp |
TIMESTAMP |
|
CpuSystemP100 |
double |
MULTI |
|
avgMemCached |
double |
MULTI |
|
min_cpu_idle_1h |
double |
MULTI |
|
avg_disk_free_1h |
double |
MULTI |
|
avg_disk_used_1h |
double |
MULTI |
|
totalDiskWrites |
double |
MULTI |
|
max_mem_used_1h |
double |
MULTI |
|
min_mem_free_1h |
double |
MULTI |
|
CpuUserP100 |
double |
MULTI |
Las siguientes son las medidas correspondientes obtenidas con una consulta SHOW MEASURES.
| measure_name | data_type | Dimensiones |
|---|---|---|
|
dashboard-metrics |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
Ejemplo: usar el nombre de una medida de una consulta programada en registros de medidas múltiples
En este ejemplo, verá una consulta que lee una tabla con registros de una sola medida y materializa los resultados en registros de medidas múltiples. En este caso, el resultado de la consulta programada tiene una columna cuyos valores se pueden usar como nombres de medidas en la tabla de destino en la que se materializan los resultados de la consulta programada. A continuación, puede especificar el nombre de la medida para el registro de varias medidas de la tabla derivada mediante la MeasureNameColumn propiedad in. TargetConfiguration TimestreamConfiguration.
{ "Name" : "UsingMeasureNameFromQueryResult", "QueryString" : "SELECT region, bin(time, 1h) as hour, measure_name, AVG(CASE WHEN measure_name IN ('memory_cached', 'disk_used', 'disk_free') THEN measure_value::double ELSE NULL END) as avg_1h, MIN(CASE WHEN measure_name IN ('memory_free', 'cpu_idle') THEN measure_value::double ELSE NULL END) as min_1h, SUM(CASE WHEN measure_name IN ('disk_io_writes') THEN measure_value::double ELSE NULL END) as sum_1h, MAX(CASE WHEN measure_name IN ('memory_used', 'cpu_user', 'cpu_system') THEN measure_value::double ELSE NULL END) as max_1h FROM raw_data.devops WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name IN ('memory_free', 'memory_used', 'memory_cached', 'disk_io_writes', 'disk_used', 'disk_free', 'cpu_user', 'cpu_system', 'cpu_idle') GROUP BY region, measure_name, bin(time, 1h)", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_2", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MeasureNameColumn" : "measure_name", "MultiMeasureMappings" : { "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "avg_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "min_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "p0_1h" }, { "SourceColumn" : "sum_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "p100_1h" } ] } } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
La asignación de este ejemplo creará registros de medidas múltiples con los atributos avg_1h, p0_1h, sum_1h, p100_1h y utilizará los valores de la columna measure_name del resultado de la consulta como nombre de medida para los registros de medidas múltiples de la tabla de destino. Además, tenga en cuenta que los ejemplos anteriores utilizan opcionalmente el TargetMultiMeasureAttributeName con un subconjunto de las asignaciones para cambiar el nombre de los atributos. Por ejemplo, se cambió el nombre de min_1h a p0_1h y el de max_1h a p100_1h.
El siguiente es el esquema de la tabla de destino una vez que se materialice la consulta programada. Como puede ver en el flujo temporal del tipo de LiveAnalytics atributo del siguiente resultado, los resultados se materializan en un registro de varias medidas. Si observa el esquema de medidas, se ingirieron nueve nombres de medidas diferentes que corresponden a los valores que se muestran en los resultados de la consulta.
| Columna | Tipo | Secuencia temporal para el tipo de atributo LiveAnalytics |
|---|---|---|
|
región |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
tiempo |
timestamp |
TIMESTAMP |
|
sum_1h |
double |
MULTI |
|
p100_1h |
double |
MULTI |
|
p0_1h |
double |
MULTI |
|
avg_1h |
double |
MULTI |
Las siguientes son las medidas correspondientes obtenidas con una consulta SHOW MEASURES.
| measure_name | data_type | Dimensiones |
|---|---|---|
|
cpu_idle |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
cpu_system |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
cpu_user |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
disk_free |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
disk_io_writes |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
disk_used |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
memory_cached |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
memory_free |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
memory_free |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
Ejemplo: asignar los resultados a diferentes registros de medidas múltiples con diferentes atributos
En el siguiente ejemplo se muestra cómo puede asignar diferentes columnas del resultado de la consulta a diferentes registros de medidas múltiples con diferentes nombres de medidas. Si ve la siguiente definición de consulta programada, el resultado de la consulta tiene las siguientes columnas: region, hour, avg_mem_cached_1h, min_mem_free_1h, max_mem_used_1h, total_disk_io_writes_1h, avg_disk_used_1h, avg_disk_free_1h, max_cpu_user_1h, max_cpu_system_1h, min_cpu_system_1h. region se asigna a la dimensión y hour se asigna a la columna de tiempo.
La MixedMeasureMappings propiedad en. TargetConfiguration TimestreamConfigurationespecifica cómo asignar las medidas a los registros de múltiples medidas de la tabla derivada.
En este ejemplo específico, avg_mem_cached_1h, min_mem_free_1h, max_mem_used_1h se utilizan en un registro de medidas múltiples con el nombre de medida de mem_aggregates; total_disk_io_writes_1h, avg_disk_used_1h, avg_disk_free_1h se utilizan en otro registro de medidas múltiples con el nombre de medida de disk_aggregates; y, finalmente, max_cpu_user_1h, max_cpu_system_1h, min_cpu_system_1h se utilizan en otro registro de medidas múltiples con el nombre de medida cpu_aggregates.
En estas asignaciones, también se puede utilizar opcionalmente TargetMultiMeasureAttributeName para cambiar el nombre de la columna de resultados de la consulta para que tenga un nombre de atributo diferente en la tabla de destino. Por ejemplo, el nombre de la columna de resultados avg_mem_cached_1h pasa a ser, total_disk_io_writes_1h pasa a llamarse total, etc. avgMemCached IOWrites
Al definir las asignaciones para los registros de varias medidas, Timestream for inspecciona todas las filas de los resultados de la consulta e ignora automáticamente los valores de las columnas que tienen valores NULOS. LiveAnalytics Como resultado, en el caso de las asignaciones con nombres de múltiples medidas, si todos los valores de columna de ese grupo de la asignación son NULOS en una fila determinada, no se ingerirá ningún valor para el nombre de esa medida en esa fila.
Por ejemplo, en la siguiente asignación, avg_mem_cached_1h, min_mem_free_1h y max_mem_used_1h se asignan al nombre de medida mem_aggregates. Si para una fila determinada del resultado de la consulta, todos los valores de la columna son NULOS, Timestream for LiveAnalytics no incorporará la medida mem_aggregates de esa fila. Si las nueve columnas de una fila determinada son NULAS, aparecerá un error de usuario en el informe de errores.
{ "Name" : "AggsInDifferentMultiMeasureRecords", "QueryString" : "SELECT region, bin(time, 1h) as hour, AVG(CASE WHEN measure_name = 'memory_cached' THEN measure_value::double ELSE NULL END) as avg_mem_cached_1h, MIN(CASE WHEN measure_name = 'memory_free' THEN measure_value::double ELSE NULL END) as min_mem_free_1h, MAX(CASE WHEN measure_name = 'memory_used' THEN measure_value::double ELSE NULL END) as max_mem_used_1h, SUM(CASE WHEN measure_name = 'disk_io_writes' THEN measure_value::double ELSE NULL END) as total_disk_io_writes_1h, AVG(CASE WHEN measure_name = 'disk_used' THEN measure_value::double ELSE NULL END) as avg_disk_used_1h, AVG(CASE WHEN measure_name = 'disk_free' THEN measure_value::double ELSE NULL END) as avg_disk_free_1h, MAX(CASE WHEN measure_name = 'cpu_user' THEN measure_value::double ELSE NULL END) as max_cpu_user_1h, MAX(CASE WHEN measure_name = 'cpu_system' THEN measure_value::double ELSE NULL END) as max_cpu_system_1h, MIN(CASE WHEN measure_name = 'cpu_idle' THEN measure_value::double ELSE NULL END) as min_cpu_system_1h FROM raw_data.devops WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name IN ('memory_cached', 'memory_free', 'memory_used', 'disk_io_writes', 'disk_used', 'disk_free', 'cpu_user', 'cpu_system', 'cpu_idle') GROUP BY region, bin(time, 1h)", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_3", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MixedMeasureMappings" : [ { "MeasureValueType" : "MULTI", "TargetMeasureName" : "mem_aggregates", "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "avg_mem_cached_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "avgMemCached" }, { "SourceColumn" : "min_mem_free_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_mem_used_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "maxMemUsed" } ] }, { "MeasureValueType" : "MULTI", "TargetMeasureName" : "disk_aggregates", "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "total_disk_io_writes_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "totalIOWrites" }, { "SourceColumn" : "avg_disk_used_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "avg_disk_free_1h", "MeasureValueType" : "DOUBLE" } ] }, { "MeasureValueType" : "MULTI", "TargetMeasureName" : "cpu_aggregates", "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "max_cpu_user_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_cpu_system_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "min_cpu_idle_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "minCpuIdle" } ] } ] } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
El siguiente es el esquema de la tabla de destino una vez que se materialice la consulta programada.
| Columna | Tipo | Secuencia temporal para el tipo de atributo LiveAnalytics |
|---|---|---|
|
región |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
tiempo |
timestamp |
TIMESTAMP |
|
minCpuIdle |
double |
MULTI |
|
max_cpu_system_1h |
double |
MULTI |
|
max_cpu_user_1h |
double |
MULTI |
|
avgMemCached |
double |
MULTI |
|
maxMemUsed |
double |
MULTI |
|
min_mem_free_1h |
double |
MULTI |
|
avg_disk_free_1h |
double |
MULTI |
|
avg_disk_used_1h |
double |
MULTI |
|
total IOWrites |
double |
MULTI |
Las siguientes son las medidas correspondientes obtenidas con una consulta SHOW MEASURES.
| measure_name | data_type | Dimensiones |
|---|---|---|
|
cpu_aggregates |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
disk_aggregates |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
mem_aggregates |
multi |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
Ejemplo: mapear los resultados a registros de una sola medida con el nombre de medida a partir de los resultados de la consulta
El siguiente es un ejemplo de una consulta programada cuyos resultados se materializan en registros de una sola medida. En este ejemplo, el resultado de la consulta tiene la columna measure_name cuyos valores se utilizarán como nombres de medidas en la tabla de destino. Usas el MixedMeasureMappings atributo en TargetConfiguration. TimestreamConfiguration para especificar la asignación de la columna de resultados de la consulta a la medida escalar de la tabla de destino.
En el siguiente ejemplo de definición, se espera que el resultado de la consulta tenga nueve valores de measure_name distintos. Debe enumerar todos estos nombres de medida en la asignación y especificar qué columna usar como valor de medida única para ese nombre de medida. Por ejemplo, en esta asignación, si se ve el nombre de medida memory_cached para una fila de resultados determinada, el valor de la columna avg_1h se usa como valor de la medida cuando los datos se escriben en la tabla de destino. Si lo desea, puede TargetMeasureName utilizar este valor para proporcionar un nuevo nombre de medida.
{ "Name" : "UsingMeasureNameColumnForSingleMeasureMapping", "QueryString" : "SELECT region, bin(time, 1h) as hour, measure_name, AVG(CASE WHEN measure_name IN ('memory_cached', 'disk_used', 'disk_free') THEN measure_value::double ELSE NULL END) as avg_1h, MIN(CASE WHEN measure_name IN ('memory_free', 'cpu_idle') THEN measure_value::double ELSE NULL END) as min_1h, SUM(CASE WHEN measure_name IN ('disk_io_writes') THEN measure_value::double ELSE NULL END) as sum_1h, MAX(CASE WHEN measure_name IN ('memory_used', 'cpu_user', 'cpu_system') THEN measure_value::double ELSE NULL END) as max_1h FROM raw_data.devops WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name IN ('memory_free', 'memory_used', 'memory_cached', 'disk_io_writes', 'disk_used', 'disk_free', 'cpu_user', 'cpu_system', 'cpu_idle') GROUP BY region, bin(time, 1h), measure_name", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_4", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MeasureNameColumn" : "measure_name", "MixedMeasureMappings" : [ { "MeasureName" : "memory_cached", "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_1h", "TargetMeasureName" : "AvgMemCached" }, { "MeasureName" : "disk_used", "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_1h" }, { "MeasureName" : "disk_free", "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_1h" }, { "MeasureName" : "memory_free", "MeasureValueType" : "DOUBLE", "SourceColumn" : "min_1h", "TargetMeasureName" : "MinMemFree" }, { "MeasureName" : "cpu_idle", "MeasureValueType" : "DOUBLE", "SourceColumn" : "min_1h" }, { "MeasureName" : "disk_io_writes", "MeasureValueType" : "DOUBLE", "SourceColumn" : "sum_1h", "TargetMeasureName" : "total-disk-io-writes" }, { "MeasureName" : "memory_used", "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_1h", "TargetMeasureName" : "maxMemUsed" }, { "MeasureName" : "cpu_user", "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_1h" }, { "MeasureName" : "cpu_system", "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_1h" } ] } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
El siguiente es el esquema de la tabla de destino una vez que se materialice la consulta programada. Como puede ver en el esquema, la tabla utiliza registros de una sola medida. Si incluye el esquema de medidas de la tabla, verá las nueve medidas escritas en función de la asignación proporcionada en la especificación.
| Columna | Tipo | Secuencia temporal para el tipo de atributo LiveAnalytics |
|---|---|---|
|
región |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
tiempo |
timestamp |
TIMESTAMP |
|
measure_value::double |
double |
MEASURE_VALUE |
Las siguientes son las medidas correspondientes obtenidas con una consulta SHOW MEASURES.
| measure_name | data_type | Dimensiones |
|---|---|---|
|
AvgMemCached |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
MinMemFree |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
cpu_idle |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
cpu_system |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
cpu_user |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
disk_free |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
disk_used |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
maxMemUsed |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
total-disk-io-writes |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
Ejemplo: asignar los resultados a registros de una sola medida con columnas de resultados de consultas como nombres de medida
En este ejemplo, tiene una consulta cuyos resultados no tienen una columna de nombre de medida. En su lugar, se busca que el nombre de la columna de resultados de la consulta sea el nombre de la medida al asignar la salida a registros de una sola medida. Anteriormente, se mostró un ejemplo en el que se escribía un resultado similar en un registro de medidas múltiples. En este ejemplo, verá cómo asignarlo a registros de una sola medida si se ajusta al caso de su aplicación.
De nuevo, este mapeo se especifica mediante la MixedMeasureMappings propiedad en. TargetConfiguration TimestreamConfiguration. En el siguiente ejemplo, verá que el resultado de la consulta tiene nueve columnas. Las columnas de resultados se utilizan como nombres de medida y los valores como valores de medida única.
Por ejemplo, para una fila determinada del resultado de la consulta, el nombre de columna avg_mem_cached_1h se usa como nombre y valor de la columna asociados a la columna, y avg_mem_cached_1h se usa como valor de medida para el registro de una sola medida. También puede TargetMeasureName utilizar un nombre de medida diferente en la tabla de objetivos. Por ejemplo, para los valores de la columna sum_1h, la asignación especifica usar total_disk_io_writes_1h como nombre de la medida en la tabla de destino. Si el valor de alguna columna es NULO, se ignora la medida correspondiente.
{ "Name" : "SingleMeasureMappingWithoutMeasureNameColumnInQueryResult", "QueryString" : "SELECT region, bin(time, 1h) as hour, AVG(CASE WHEN measure_name = 'memory_cached' THEN measure_value::double ELSE NULL END) as avg_mem_cached_1h, AVG(CASE WHEN measure_name = 'disk_used' THEN measure_value::double ELSE NULL END) as avg_disk_used_1h, AVG(CASE WHEN measure_name = 'disk_free' THEN measure_value::double ELSE NULL END) as avg_disk_free_1h, MIN(CASE WHEN measure_name = 'memory_free' THEN measure_value::double ELSE NULL END) as min_mem_free_1h, MIN(CASE WHEN measure_name = 'cpu_idle' THEN measure_value::double ELSE NULL END) as min_cpu_idle_1h, SUM(CASE WHEN measure_name = 'disk_io_writes' THEN measure_value::double ELSE NULL END) as sum_1h, MAX(CASE WHEN measure_name = 'memory_used' THEN measure_value::double ELSE NULL END) as max_mem_used_1h, MAX(CASE WHEN measure_name = 'cpu_user' THEN measure_value::double ELSE NULL END) as max_cpu_user_1h, MAX(CASE WHEN measure_name = 'cpu_system' THEN measure_value::double ELSE NULL END) as max_cpu_system_1h FROM raw_data.devops WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name IN ('memory_free', 'memory_used', 'memory_cached', 'disk_io_writes', 'disk_used', 'disk_free', 'cpu_user', 'cpu_system', 'cpu_idle') GROUP BY region, bin(time, 1h)", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_5", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MixedMeasureMappings" : [ { "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_mem_cached_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_disk_used_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_disk_free_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "min_mem_free_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "min_cpu_idle_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "sum_1h", "TargetMeasureName" : "total_disk_io_writes_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_mem_used_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_cpu_user_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_cpu_system_1h" } ] } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
El siguiente es el esquema de la tabla de destino una vez que se materialice la consulta programada. Como puede ver, la tabla de destino almacena registros con valores de medida única de tipo doble. Del mismo modo, en el esquema de medidas de la tabla se muestran los nombres de las nueve medidas. Observe también que el nombre de medida total_disk_io_writes_1h está presente ya que la asignación cambió el nombre de sum_1h a total_disk_io_writes_1h.
| Columna | Tipo | Secuencia temporal para el tipo de atributo LiveAnalytics |
|---|---|---|
|
región |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
tiempo |
timestamp |
TIMESTAMP |
|
measure_value::double |
double |
MEASURE_VALUE |
Las siguientes son las medidas correspondientes obtenidas con una consulta SHOW MEASURES.
| measure_name | data_type | Dimensiones |
|---|---|---|
|
avg_disk_free_1h |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
avg_disk_used_1h |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
avg_mem_cached_1h |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
max_cpu_system_1h |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
max_cpu_user_1h |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
max_mem_used_1h |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
min_cpu_idle_1h |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
min_mem_free_1h |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
|
total-disk-io-writes |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |