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.
Mapeos de modelos de datos para consultas programadas
Timestream for LiveAnalytics admite el 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 múltiples medidas o registros de una sola medida, y escribir los resultados de la consulta utilizando registros de medidas múltiples o de una sola medida.
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á:
-
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 múltiples medidas.
-
Cómo se puede definir un modelo para escribir varios registros con diferentes atributos de múltiples medidas.
-
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 o registros de 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 medida objetivo para registros de múltiples medidas
En este ejemplo, verá que la consulta lee datos de una tabla con datos de varias medidas y escribe los resultados en otra tabla mediante registros de varias medidas. El resultado de la consulta programada no tiene una columna de nombre de medida natural. Aquí, se especifica el nombre de la medida en la tabla derivada mediante la TargetMultiMeasureName propiedad de 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 del tipo de atributo LiveAnalytics |
---|---|---|
región |
varchar |
DIMENSION |
measure_name |
varchar |
MEASURE_NAME |
tiempo |
Marca de tiempo |
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 SHOW MEASURES consulta.
measure_name | data_type | Dimensiones |
---|---|---|
métricas del panel |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
Ejemplo: usar el nombre de una medida de una consulta programada en registros de varias medidas
En este ejemplo, verá una consulta que lee una tabla con registros de una sola medida y materializa los resultados en registros de varias medidas. 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 múltiples medidas 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 múltiples medidas de la tabla de destino. Además, tenga en cuenta que los ejemplos anteriores utilizan opcionalmente el subconjunto with de las asignaciones para cambiar el nombre de los atributos. TargetMultiMeasureAttributeName 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 múltiples medidas. Si observa el esquema de medidas, se ingirieron nueve nombres de medidas diferentes que corresponden a los valores que aparecen en los resultados de la consulta.
Columna | Tipo | Secuencia temporal del tipo de atributo LiveAnalytics |
---|---|---|
región |
varchar |
DIMENSION |
measure_name |
varchar |
MEASURE_NAME |
tiempo |
Marca de tiempo |
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 |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
sistema_CPU |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
cpu_usuario |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
disk_free |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
disk_io_writes |
multi |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
disk_used |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
memoria_caché |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
libre de memoria |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
libre de memoria |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
Ejemplo: mapear los resultados a diferentes registros de múltiples medidas con diferentes atributos
El siguiente ejemplo muestra cómo puede asignar diferentes columnas del resultado de la consulta a diferentes registros de múltiples medidas 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 h, 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 múltiples medidas 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 disquete k_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, la columna de resultados avg_mem_cached_1h pasa a llamarse, total_disk_io_writes_1h pasa a llamarse, etc. avgMemCached totalIOWrites
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. LiveAnalytics NULL Como resultado, en el caso de las asignaciones con varios nombres de medidas, si todos los valores de columna de ese grupo del mapeo son para una fila determinada, no se incorporará ningún valor NULL 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 mapean para medir el nombre mem_aggregates. Si para una fila determinada del resultado de la consulta, todos estos valores de columna son iguales, Timestream for no absorberá la medida mem_aggregates de esa fila. NULL LiveAnalytics Si las nueve columnas de una fila determinada lo sonNULL, 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 del tipo de atributo LiveAnalytics |
---|---|---|
región |
varchar |
DIMENSION |
measure_name |
varchar |
MEASURE_NAME |
tiempo |
Marca de tiempo |
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 |
totalIOWrites |
double |
MULTI |
Las siguientes son las medidas correspondientes obtenidas con una consulta. SHOW MEASURES
measure_name | data_type | Dimensiones |
---|---|---|
cpu_aggregates |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
disk_aggregates |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
mem_aggregates |
múltiple |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
Ejemplo: mapear los resultados a registros de una sola medida con el nombre de la 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. El MixedMeasureMappings atributo se utiliza 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 la siguiente definición de ejemplo, se espera que el resultado de la consulta tenga nueve valores de measure_name distintos. Enumera todos estos nombres de medida en el mapeo y especifica qué columna usar como valor de medida única para ese nombre de medida. Por ejemplo, en este mapeo, 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 usarlo TargetMeasureName para proporcionar un nuevo nombre de medida para este valor.
{ "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 del mapeo proporcionado en la especificación.
Columna | Tipo | Secuencia temporal del tipo de atributo LiveAnalytics |
---|---|---|
región |
varchar |
DIMENSION |
measure_name |
varchar |
MEASURE_NAME |
tiempo |
Marca de tiempo |
TIMESTAMP |
measure_value::double |
double |
MEASURE_VALUE |
Las siguientes son las medidas correspondientes obtenidas con una SHOW MEASURES consulta.
measure_name | data_type | Dimensiones |
---|---|---|
AvgMemCached |
double |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
MinMemFree |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
cpu_idle |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
sistema_CPU |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
cpu_usuario |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
disk_free |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
disk_used |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
maxMemUsed |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
total-disk-io-writes |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
Ejemplo: mapear los resultados a registros de una sola medida con columnas de resultados de consultas como nombres de medidas
En este ejemplo, tiene una consulta cuyos resultados no tienen una columna con el nombre de la medida. En su lugar, querrá que el nombre de la columna de resultados de la consulta sea el nombre de la medida al mapear la salida a registros de una sola medida. Anteriormente, había un ejemplo en el que se escribía un resultado similar en un registro de múltiples medidas. En este ejemplo, verá cómo asignarlo a registros de una sola medida si se ajusta al escenario de su aplicación.
De nuevo, este mapeo se especifica mediante la MixedMeasureMappings propiedad in 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 medida única. También puede utilizar TargetMeasureName un nombre de medida diferente en la tabla de destino. Por ejemplo, para los valores de la columna sum_1h, el mapeo especifica usar total_disk_io_writes_1h como nombre de medida en la tabla de destino. Si el valor de alguna columna es, se ignora la medida correspondiente. NULL
{ "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 double. Del mismo modo, el esquema de medidas de la tabla muestra 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 | LiveAnalytics Secuencia temporal del tipo de atributo |
---|---|---|
región |
varchar |
DIMENSION |
measure_name |
varchar |
MEASURE_NAME |
tiempo |
Marca de tiempo |
TIMESTAMP |
measure_value::double |
double |
MEASURE_VALUE |
Las siguientes son las medidas correspondientes obtenidas con una SHOW MEASURES consulta.
measure_name | data_type | Dimensiones |
---|---|---|
avg_disk_free_1h |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
avg_disk_used_1h |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
avg_mem_cached_1h |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
max_cpu_system_1h |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
max_cpu_user_1h |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
max_mem_used_1h |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
min_cpu_idle_1h |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
min_mem_free_1h |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |
total-disk-io-writes |
double |
[{'dimension_name': 'región', 'data_type': 'varchar'}] |