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à.
È possibile utilizzare i seguenti frammenti di codice per creare un'interrogazione pianificata con mappatura multipisura.
public static String DATABASE_NAME = "devops_sample_application";
public static String TABLE_NAME = "host_metrics_sample_application";
public static String HOSTNAME = "host-24Gju";
public static String SQ_NAME = "daily-sample";
public static String SCHEDULE_EXPRESSION = "cron(0/2 * * * ? *)";
// Find the average, p90, p95, and p99 CPU utilization for a specific EC2 host over the past 2 hours.
public static String QUERY = "SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp, " +
"ROUND(AVG(cpu_utilization), 2) AS avg_cpu_utilization, " +
"ROUND(APPROX_PERCENTILE(cpu_utilization, 0.9), 2) AS p90_cpu_utilization, " +
"ROUND(APPROX_PERCENTILE(cpu_utilization, 0.95), 2) AS p95_cpu_utilization, " +
"ROUND(APPROX_PERCENTILE(cpu_utilization, 0.99), 2) AS p99_cpu_utilization " +
"FROM " + DATABASE_NAME + "." + TABLE_NAME + " " +
"WHERE measure_name = 'metrics' " +
"AND hostname = '" + HOSTNAME + "' " +
"AND time > ago(2h) " +
"GROUP BY region, hostname, az, BIN(time, 15s) " +
"ORDER BY binned_timestamp ASC " +
"LIMIT 5";
public String createScheduledQuery(String topic_arn,
String role_arn,
String database_name,
String table_name) {
System.out.println("Creating Scheduled Query");
List<Pair<String, MeasureValueType>> sourceColToMeasureValueTypes = Arrays.asList(
Pair.of("avg_cpu_utilization", DOUBLE),
Pair.of("p90_cpu_utilization", DOUBLE),
Pair.of("p95_cpu_utilization", DOUBLE),
Pair.of("p99_cpu_utilization", DOUBLE));
CreateScheduledQueryRequest createScheduledQueryRequest = new CreateScheduledQueryRequest()
.withName(SQ_NAME)
.withQueryString(QUERY)
.withScheduleConfiguration(new ScheduleConfiguration()
.withScheduleExpression(SCHEDULE_EXPRESSION))
.withNotificationConfiguration(new NotificationConfiguration()
.withSnsConfiguration(new SnsConfiguration()
.withTopicArn(topic_arn)))
.withTargetConfiguration(new TargetConfiguration().withTimestreamConfiguration(new TimestreamConfiguration()
.withDatabaseName(database_name)
.withTableName(table_name)
.withTimeColumn("binned_timestamp")
.withDimensionMappings(Arrays.asList(
new DimensionMapping()
.withName("region")
.withDimensionValueType("VARCHAR"),
new DimensionMapping()
.withName("az")
.withDimensionValueType("VARCHAR"),
new DimensionMapping()
.withName("hostname")
.withDimensionValueType("VARCHAR")
))
.withMultiMeasureMappings(new MultiMeasureMappings()
.withTargetMultiMeasureName("multi-metrics")
.withMultiMeasureAttributeMappings(
sourceColToMeasureValueTypes.stream()
.map(pair -> new MultiMeasureAttributeMapping()
.withMeasureValueType(pair.getValue().name())
.withSourceColumn(pair.getKey()))
.collect(Collectors.toList())))))
.withErrorReportConfiguration(new ErrorReportConfiguration()
.withS3Configuration(new S3Configuration()
.withBucketName(timestreamDependencyHelper.getS3ErrorReportBucketName())))
.withScheduledQueryExecutionRoleArn(role_arn);
try {
final CreateScheduledQueryResult createScheduledQueryResult = queryClient.createScheduledQuery(createScheduledQueryRequest);
final String scheduledQueryArn = createScheduledQueryResult.getArn();
System.out.println("Successfully created scheduled query : " + scheduledQueryArn);
return scheduledQueryArn;
}
catch (Exception e) {
System.out.println("Scheduled Query creation failed: " + e);
throw e;
}
}