Skip to content

Commit d3b155f

Browse files
authored
[ML] Add job timing stats to anomaly jobs (#65696)
* [ML] Add anomaly job timing stats to Counts & JSON * [ML] Remove roundTo3DecimalPlace and clean up * [ML] Fix format_values to round decimals for time values * [ML] Remove timing_stats and forecast_stats from cloneJob * [ML] Remove timing_stats & forecasts in job_service instead of utils
1 parent 97561d6 commit d3b155f

File tree

5 files changed

+22
-5
lines changed

5 files changed

+22
-5
lines changed

x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/extract_job_details.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,15 @@ export function extractJobDetails(job) {
165165
items: filterObjects(job.model_size_stats).map(formatValues),
166166
};
167167

168+
const jobTimingStats = {
169+
id: 'jobTimingStats',
170+
title: i18n.translate('xpack.ml.jobsList.jobDetails.jobTimingStatsTitle', {
171+
defaultMessage: 'Job timing stats',
172+
}),
173+
position: 'left',
174+
items: filterObjects(job.timing_stats).map(formatValues),
175+
};
176+
168177
const datafeedTimingStats = {
169178
id: 'datafeedTimingStats',
170179
title: i18n.translate('xpack.ml.jobsList.jobDetails.datafeedTimingStatsTitle', {
@@ -192,6 +201,7 @@ export function extractJobDetails(job) {
192201
datafeed,
193202
counts,
194203
modelSizeStats,
204+
jobTimingStats,
195205
datafeedTimingStats,
196206
};
197207
}

x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/format_values.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ export function formatValues([key, value]) {
6363
// numbers rounded to 3 decimal places
6464
case 'average_search_time_per_bucket_ms':
6565
case 'exponential_average_search_time_per_hour_ms':
66+
case 'total_bucket_processing_time_ms':
67+
case 'minimum_bucket_processing_time_ms':
68+
case 'maximum_bucket_processing_time_ms':
69+
case 'average_bucket_processing_time_ms':
70+
case 'exponential_average_bucket_processing_time_ms':
71+
case 'exponential_average_bucket_processing_time_per_hour_ms':
6672
value = typeof value === 'number' ? roundToDecimalPlace(value, 3).toLocaleString() : value;
6773
break;
6874

x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/job_details.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export class JobDetails extends Component {
6060
datafeed,
6161
counts,
6262
modelSizeStats,
63+
jobTimingStats,
6364
datafeedTimingStats,
6465
} = extractJobDetails(job);
6566

@@ -102,7 +103,7 @@ export class JobDetails extends Component {
102103
content: (
103104
<JobDetailsPane
104105
data-test-subj="mlJobDetails-counts"
105-
sections={[counts, modelSizeStats]}
106+
sections={[counts, modelSizeStats, jobTimingStats]}
106107
/>
107108
),
108109
},

x-pack/plugins/ml/public/application/services/job_service.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,8 @@ class JobService {
369369
delete tempJob.open_time;
370370
delete tempJob.established_model_memory;
371371
delete tempJob.calendars;
372+
delete tempJob.timing_stats;
373+
delete tempJob.forecasts_stats;
372374

373375
delete tempJob.analysis_config.use_per_partition_normalization;
374376

x-pack/plugins/ml/server/models/job_service/jobs.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ export function jobsProvider(callAsCurrentUser: APICaller) {
328328
// create jobs objects containing job stats, datafeeds, datafeed stats and calendars
329329
if (jobResults && jobResults.jobs) {
330330
jobResults.jobs.forEach(job => {
331-
const tempJob = job as CombinedJobWithStats;
331+
let tempJob = job as CombinedJobWithStats;
332332

333333
const calendars: string[] = [
334334
...(calendarsByJobId[tempJob.job_id] || []),
@@ -341,9 +341,7 @@ export function jobsProvider(callAsCurrentUser: APICaller) {
341341
if (jobStatsResults && jobStatsResults.jobs) {
342342
const jobStats = jobStatsResults.jobs.find(js => js.job_id === tempJob.job_id);
343343
if (jobStats !== undefined) {
344-
tempJob.state = jobStats.state;
345-
tempJob.data_counts = jobStats.data_counts;
346-
tempJob.model_size_stats = jobStats.model_size_stats;
344+
tempJob = { ...tempJob, ...jobStats };
347345
if (jobStats.node) {
348346
tempJob.node = jobStats.node;
349347
}

0 commit comments

Comments
 (0)