6
6
* Side Public License, v 1.
7
7
*/
8
8
9
+ import { METRIC_TYPES } from '@kbn/data-plugin/public' ;
9
10
import { Column , ColumnWithMeta } from '@kbn/visualizations-plugin/common' ;
10
11
import {
11
12
convertToLensModule ,
@@ -27,6 +28,13 @@ export interface Layer {
27
28
collapseFn ?: string ;
28
29
}
29
30
31
+ const SIBBLING_PIPELINE_AGGS : string [ ] = [
32
+ METRIC_TYPES . AVG_BUCKET ,
33
+ METRIC_TYPES . SUM_BUCKET ,
34
+ METRIC_TYPES . MAX_BUCKET ,
35
+ METRIC_TYPES . MIN_BUCKET ,
36
+ ] ;
37
+
30
38
export const isColumnWithMeta = ( column : Column ) : column is ColumnWithMeta => {
31
39
if ( ( column as ColumnWithMeta ) . meta ) {
32
40
return true ;
@@ -98,7 +106,14 @@ export const convertToLens: ConvertXYToLensVisualization = async (vis, timefilte
98
106
visibleSeries
99
107
. reduce < Array < { metrics : string [ ] ; type : string ; mode : string } > > ( ( acc , s ) => {
100
108
const series = acc . find ( ( { type, mode } ) => type === s . type && mode === s . mode ) ;
101
- if ( series ) {
109
+ // sibling pipeline agg always generate new layer because of custom bucket
110
+ if (
111
+ series &&
112
+ visSchemas . metric . some (
113
+ ( m ) =>
114
+ m . aggId ?. split ( '.' ) [ 0 ] === s . data . id && ! SIBBLING_PIPELINE_AGGS . includes ( m . aggType )
115
+ )
116
+ ) {
102
117
series . metrics . push ( s . data . id ) ;
103
118
} else {
104
119
acc . push ( { metrics : [ s . data . id ] , type : s . type , mode : s . mode } ) ;
0 commit comments