Mapeos de modelos de datos para consultas programadas - Amazon Timestream

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. regionse 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'}]