Mappature dei modelli di dati per le interrogazioni pianificate - Amazon Timestream

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Mappature dei modelli di dati per le interrogazioni pianificate

Timestream for LiveAnalytics supporta la modellazione flessibile dei dati nelle sue tabelle e questa stessa flessibilità si applica ai risultati delle query pianificate che vengono materializzate in un altro Timestream per tabella. LiveAnalytics Con le interrogazioni pianificate, è possibile eseguire query su qualsiasi tabella, indipendentemente dal fatto che contenga dati in record a più misure o record di singola misura, e scrivere i risultati della query utilizzando record a più o a misura singola.

È possibile utilizzare il TargetConfiguration nella specifica di un'interrogazione pianificata per mappare i risultati della query alle colonne appropriate nella tabella derivata di destinazione. Le sezioni seguenti descrivono i diversi modi di TargetConfiguration specificarlo per ottenere modelli di dati diversi nella tabella derivata. In particolare, vedrai:

  • Come scrivere su record multimisura quando il risultato della query non ha un nome di misura e si specifica il nome della TargetConfiguration misura di destinazione in.

  • Come si utilizza il nome della misura nei risultati della query per scrivere record con più misure.

  • Come definire un modello per scrivere più record con diversi attributi multimisura.

  • Come definire un modello per scrivere su record di singola misura nella tabella derivata.

  • In che modo è possibile interrogare record di singola misura e/o record multimisura in un'interrogazione pianificata e far sì che i risultati vengano materializzati in un record a misura singola o in un record a più misure, il che consente di scegliere la flessibilità dei modelli di dati.

Esempio: nome della misura di destinazione per i record multimisura

In questo esempio, si vedrà che la query sta leggendo i dati da una tabella con dati a più misure e sta scrivendo i risultati in un'altra tabella utilizzando record multimisura. Il risultato della query pianificata non ha una colonna con il nome della misura naturale. Qui, si specifica il nome della misura nella tabella derivata utilizzando la TargetMultiMeasureName proprietà in 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 mappatura in questo esempio crea un record multimisura con il nome della misura dashboard-metrics e i nomi degli attributi, 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 Si noti l'uso opzionale di TargetMultiMeasureAttributeName per rinominare le colonne di output della query con un nome di attributo diverso utilizzato per la materializzazione dei risultati.

Di seguito è riportato lo schema per la tabella di destinazione una volta materializzata questa query pianificata. Come si può vedere dal Timestream per il tipo di LiveAnalytics attributo nel risultato seguente, i risultati vengono materializzati in un record multimisura con un nome a misura singoladashboard-metrics, come mostrato nello schema di misura.

Colonna Tipo Timestream per il tipo di attributo LiveAnalytics

Regione

varchar

DIMENSIONE

measure_name

varchar

MEASURE_NAME

time

timestamp

TIMESTAMP

CpuSystemP100

double

MULTIPLO

avgMemCached

double

MULTI

min_cpu_idle_1h

double

MULTI

avg_disk_free_1h

double

MULTIPLO

avg_disk_used_1h

double

MULTI

totalDiskWrites

double

MULTI

max_mem_used_1 h

double

MULTIPLO

min_mem_free_1 h

double

MULTIPLO

CpuUserP100

double

MULTIPLO

Di seguito sono riportate le misure corrispondenti ottenute con una query SHOW MEASURES.

measure_name data_type Dimensioni

metriche del pannello di controllo

multi

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

Esempio: utilizzo del nome della misura da una query pianificata in record multimisura

In questo esempio, vedrete una query che legge da una tabella con record a misura singola e materializza i risultati in record a più misure. In questo caso, il risultato della query pianificata ha una colonna i cui valori possono essere utilizzati come nomi di misure nella tabella di destinazione in cui vengono materializzati i risultati dell'interrogazione pianificata. È quindi possibile specificare il nome della misura per il record multimisura nella tabella derivata utilizzando la MeasureNameColumn proprietà 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 mappatura in questo esempio creerà record multimisura con gli attributi avg_1h, p0_1h, sum_1h, p100_1h e utilizzerà i valori della colonna measure_name nel risultato della query come nome della misura per i record multimisura nella tabella di destinazione. Si noti inoltre che gli esempi precedenti utilizzano facoltativamente il con un sottoinsieme delle mappature per rinominare gli attributi. TargetMultiMeasureAttributeName Ad esempio, min_1h è stato rinominato in p0_1h e max_1h è stato rinominato in p100_1h.

Di seguito è riportato lo schema per la tabella di destinazione una volta materializzata questa query pianificata. Come si può vedere dal Timestream per il tipo di LiveAnalytics attributo nel risultato seguente, i risultati vengono materializzati in un record multimisura. Se si esamina lo schema di misura, sono stati inseriti nove diversi nomi di misure che corrispondono ai valori visualizzati nei risultati della query.

Colonna Tipo Timestream per il tipo di attributo LiveAnalytics

Regione

varchar

DIMENSIONE

measure_name

varchar

MEASURE_NAME

time

timestamp

TIMESTAMP

sum_1h

double

MULTI

p100_1h

double

MULTI

p0_1h

double

MULTI

avg_1h

double

MULTI

Di seguito sono riportate le misure corrispondenti ottenute con una query SHOW MEASURES.

measure_name data_type Dimensioni

cpu_idle

multi

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

sistema_cpu

multiplo

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

cpu_user

multiplo

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

disk_free

multi

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

disk_io_write

multi

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

disk_used

multi

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

memoria_memorizzata nella cache

multi

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

senza memoria

multiplo

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

senza memoria

multiplo

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

Esempio: mappatura dei risultati su diversi record multimisura con attributi diversi

L'esempio seguente mostra come è possibile mappare diverse colonne del risultato della query in diversi record multimisura con nomi di misure diversi. Se viene visualizzata la seguente definizione di query pianificata, il risultato della query ha le seguenti colonne: 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_utente_1h, sistema_cpu_max_1h, min_cpu_sistema_1h. regionè mappato alla dimensione e hour mappato alla colonna del tempo.

La MixedMeasureMappings proprietà in. TargetConfiguration TimestreamConfigurationspecifica come mappare le misure su record multimisura nella tabella derivata.

In questo esempio specifico, avg_mem_cached_1h, min_mem_free_1h, max_mem_used_1h vengono utilizzati in un record multimisura con nome di misura mem_aggregates, total_disk_io_writes_1h, avg_disk_used_1h, avg_disk_free_1h vengono utilizzati in un altro record multimisura con misura name of disk_aggregates e infine max_cpu_user_1h, max_cpu_system_1h, min_cpu_system_1h vengono utilizzati in un altro record multimisura con nome di misura cpu_aggregates.

In queste mappature, è anche possibile utilizzare facoltativamente TargetMultiMeasureAttributeName per rinominare la colonna dei risultati della query in modo che abbia un nome di attributo diverso nella tabella di destinazione. Ad esempio, la colonna dei risultati avg_mem_cached_1h viene rinominata in, total_disk_io_writes_1h viene rinominata total, ecc. avgMemCached IOWrites

Quando definisci le mappature per i record multimisura, Timestream for ispeziona ogni riga dei risultati della query e ignora automaticamente i valori delle colonne con valori NULL. LiveAnalytics Di conseguenza, nel caso di mappature con più nomi di misure, se tutti i valori di colonna per quel gruppo nella mappatura sono NULL per una determinata riga, per quella riga non viene inserito alcun valore per il nome di quella misura.

Ad esempio, nella mappatura seguente, avg_mem_cached_1h, min_mem_free_1h e max_mem_used_1h vengono mappati per misurare il nome mem_aggregates. Se per una determinata riga del risultato della query, tutti questi valori della colonna sono NULL, Timestream for non inserirà la misura mem_aggregates per quella riga. LiveAnalytics Se tutte e nove le colonne di una determinata riga sono NULL, nel rapporto di errore verrà riportato un errore utente.

{ "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" } } }

Di seguito è riportato lo schema per la tabella di destinazione una volta materializzata questa query pianificata.

Colonna Tipo Timestream per il tipo di attributo LiveAnalytics

Regione

varchar

DIMENSIONE

measure_name

varchar

MEASURE_NAME

time

timestamp

TIMESTAMP

minCpuIdle

double

MULTIPLO

max_cpu_system_1h

double

MULTIPLO

max_cpu_user_1h

double

MULTIPLO

avgMemCached

double

MULTI

maxMemUsed

double

MULTI

min_mem_free_1 h

double

MULTIPLO

avg_disk_free_1h

double

MULTIPLO

avg_disk_used_1h

double

MULTI

totale IOWrites

double

MULTIPLO

Di seguito sono riportate le misure corrispondenti ottenute con una query SHOW MEASURES.

measure_name data_type Dimensioni

cpu_aggregates

multi

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

disk_aggregates

multi

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

mem_aggregates

multi

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

Esempio: mappatura dei risultati su record a misura singola con il nome della misura dai risultati della query

Di seguito è riportato un esempio di interrogazione pianificata i cui risultati vengono materializzati in record a misura singola. In questo esempio, il risultato della query contiene la colonna measure_name i cui valori verranno utilizzati come nomi delle misure nella tabella di destinazione. Si utilizza l' MixedMeasureMappings attributo in. TargetConfiguration TimestreamConfiguration per specificare la mappatura della colonna dei risultati della query alla misura scalare nella tabella di destinazione.

Nella definizione dell'esempio seguente, il risultato della query è previsto in nove valori distinti di measure_name. Si elencano tutti i nomi di queste misure nella mappatura e si specifica quale colonna utilizzare per il valore di misura singola per quel nome di misura. Ad esempio, in questa mappatura, se il nome della misura di memory_cached viene visualizzato per una determinata riga di risultati, il valore nella colonna avg_1h viene utilizzato come valore per la misura quando i dati vengono scritti nella tabella di destinazione. È possibile utilizzare facoltativamente per fornire un nuovo nome di misura per TargetMeasureName questo valore.

{ "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" } } }

Di seguito è riportato lo schema per la tabella di destinazione una volta materializzata questa query pianificata. Come si può vedere dallo schema, la tabella utilizza record a misura singola. Se si elenca lo schema di misure per la tabella, verranno visualizzate le nove misure scritte in base alla mappatura fornita nelle specifiche.

Colonna Tipo Timestream per il tipo di attributo LiveAnalytics

Regione

varchar

DIMENSIONE

measure_name

varchar

MEASURE_NAME

time

timestamp

TIMESTAMP

measure_value::double

double

MISURA_VALORE

Di seguito sono riportate le misure corrispondenti ottenute con una query SHOW MEASURES.

measure_name data_type Dimensioni

AvgMemCached

double

[{'dimension_name': 'region', 'data_type': 'varchar'}]

MinMemFree

double

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

cpu_idle

double

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

sistema_cpu

double

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

cpu_user

double

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

disk_free

double

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

disk_used

double

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

maxMemUsed

double

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

total-disk-io-writes

double

[{'dimension_name': 'regione', 'data_type': 'varchar'}]

Esempio: mappatura dei risultati su record a misura singola con colonne di risultati di query come nomi di misure

In questo esempio, si dispone di una query i cui risultati non hanno una colonna con il nome della misura. Al contrario, si desidera utilizzare il nome della colonna dei risultati della query come nome della misura quando si esegue la mappatura dell'output su record a misura singola. In precedenza c'era un esempio in cui un risultato simile veniva scritto su un record a più misure. In questo esempio, vedrete come mapparlo su record a misura singola, se ciò si adatta allo scenario dell'applicazione.

Ancora una volta, si specifica questa mappatura utilizzando la MixedMeasureMappings proprietà in. TargetConfiguration TimestreamConfiguration. Nell'esempio seguente, si vede che il risultato della query ha nove colonne. Le colonne dei risultati vengono utilizzate come nomi di misure e i valori come valori di singola misura.

Ad esempio, per una determinata riga del risultato della query, il nome di colonna avg_mem_cached_1h viene utilizzato come nome della colonna e valore associato alla colonna e avg_mem_cached_1h viene utilizzato come valore di misura per il record a misura singola. È inoltre possibile utilizzare TargetMeasureName un nome di misura diverso nella tabella di destinazione. Ad esempio, per i valori nella colonna sum_1h, la mappatura specifica di utilizzare total_disk_io_writes_1h come nome della misura nella tabella di destinazione. Se il valore di una colonna è NULL, la misura corrispondente viene ignorata.

{ "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" } } }

Di seguito è riportato lo schema per la tabella di destinazione una volta materializzata questa query pianificata. Come puoi vedere, la tabella di destinazione memorizza record con valori a misura singola di tipo double. Analogamente, lo schema delle misure per la tabella mostra i nomi delle nove misure. Notate inoltre che il nome della misura total_disk_io_writes_1h è presente sin dalla mappatura rinominata sum_1h in total_disk_io_writes_1h.

Colonna Tipo LiveAnalytics Timestream per il tipo di attributo

Regione

varchar

DIMENSIONE

measure_name

varchar

MEASURE_NAME

time

timestamp

TIMESTAMP

measure_value::double

double

MISURA_VALORE

Di seguito sono riportate le misure corrispondenti ottenute con una query SHOW MEASURES.

measure_name data_type Dimensioni

avg_disk_free_1h

double

[{'dimension_name': 'regione', 'tipo_dati': 'varchar'}]

avg_disk_used_1h

double

[{'dimension_name': 'regione', 'tipo_dati': 'varchar'}]

avg_mem_cached_1h

double

[{'dimension_name': 'regione', 'tipo_dati': 'varchar'}]

max_cpu_system_1h

double

[{'dimension_name': 'regione', 'tipo_dati': 'varchar'}]

max_cpu_user_1h

double

[{'dimension_name': 'regione', 'tipo_dati': 'varchar'}]

max_mem_used_1h

double

[{'dimension_name': 'regione', 'tipo_dati': 'varchar'}]

min_cpu_idle_1h

double

[{'dimension_name': 'regione', 'tipo_dati': 'varchar'}]

min_mem_free_1h

double

[{'dimension_name': 'regione', 'tipo_dati': 'varchar'}]

total-disk-io-writes

double

[{'dimension_name': 'regione', 'data_type': 'varchar'}]