Skip to content

Commit

Permalink
[8.12] [Lens] stop gap solution for invalid formula and math columns (#…
Browse files Browse the repository at this point in the history
…175644) (#175658)

# Backport

This will backport the following commits from `main` to `8.12`:
- [[Lens] stop gap solution for invalid formula and math columns
(#175644)](#175644)

<!--- Backport version: 9.4.3 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)

<!--BACKPORT [{"author":{"name":"Drew
Tate","email":"[email protected]"},"sourceCommit":{"committedDate":"2024-01-26T06:09:57Z","message":"[Lens]
stop gap solution for invalid formula and math columns (#175644)\n\n##
Summary\r\n\r\nA stop-gap solution for
https://github.com/elastic/kibana/issues/168561\r\n\r\nThis
visualization can be used to
test.\r\n\r\n```\r\n{\"attributes\":{\"fieldFormatMap\":\"{\\\"hour_of_day\\\":{}}\",\"name\":\"Kibana
Sample Data
Logs\",\"runtimeFieldMap\":\"{\\\"hour_of_day\\\":{\\\"type\\\":\\\"long\\\",\\\"script\\\":{\\\"source\\\":\\\"emit(doc['timestamp'].value.getHour());\\\"}}}\",\"timeFieldName\":\"timestamp\",\"title\":\"kibana_sample_data_logs\"},\"coreMigrationVersion\":\"8.8.0\",\"created_at\":\"2024-01-24T19:57:34.193Z\",\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"managed\":false,\"references\":[],\"type\":\"index-pattern\",\"typeMigrationVersion\":\"8.0.0\",\"updated_at\":\"2024-01-24T19:57:34.193Z\",\"version\":\"WzM1LDFd\"}\r\n{\"attributes\":{\"description\":\"\",\"state\":{\"adHocDataViews\":{},\"datasourceStates\":{\"formBased\":{\"layers\":{\"7945fa55-b9ea-4b10-a498-e265ef192d7d\":{\"columnOrder\":[\"207508ea-7433-494f-9925-70d55831c74c\",\"36d445ea-dd2a-4b13-96e2-d51d07d98f70\",\"36d445ea-dd2a-4b13-96e2-d51d07d98f70X0\"],\"columns\":{\"207508ea-7433-494f-9925-70d55831c74c\":{\"dataType\":\"date\",\"isBucketed\":true,\"label\":\"timestamp\",\"operationType\":\"date_histogram\",\"params\":{\"dropPartials\":false,\"includeEmptyRows\":true,\"interval\":\"auto\"},\"scale\":\"interval\",\"sourceField\":\"timestamp\"},\"36d445ea-dd2a-4b13-96e2-d51d07d98f70\":{\"dataType\":\"number\",\"isBucketed\":false,\"label\":\"median(bytes)\",\"operationType\":\"formula\",\"sourceField\":\"___records___\",\"params\":{\"formula\":\"median(bytes)\",\"isFormulaBroken\":false},\"references\":[\"36d445ea-dd2a-4b13-96e2-d51d07d98f70X0\"],\"scale\":\"ratio\"},\"36d445ea-dd2a-4b13-96e2-d51d07d98f70X0\":{\"customLabel\":true,\"dataType\":\"number\",\"isBucketed\":false,\"label\":\"Part
of
median(bytes)\",\"operationType\":\"median\",\"params\":{\"emptyAsNull\":false},\"scale\":\"ratio\",\"sourceField\":\"bytes\"}},\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"filters\":[],\"internalReferences\":[],\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"visualization\":{\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"fittingFunction\":\"None\",\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"layers\":[{\"accessors\":[\"36d445ea-dd2a-4b13-96e2-d51d07d98f70\"],\"layerId\":\"7945fa55-b9ea-4b10-a498-e265ef192d7d\",\"layerType\":\"data\",\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"207508ea-7433-494f-9925-70d55831c74c\"}],\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"preferredSeriesType\":\"bar_stacked\",\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"valueLabels\":\"hide\"}},\"title\":\"Vis
with
formula\",\"visualizationType\":\"lnsXY\"},\"coreMigrationVersion\":\"8.8.0\",\"created_at\":\"2024-01-25T21:12:58.923Z\",\"id\":\"2139b4e8-ee7c-41dc-9564-74b7c1e54216\",\"managed\":false,\"references\":[{\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"name\":\"indexpattern-datasource-layer-7945fa55-b9ea-4b10-a498-e265ef192d7d\",\"type\":\"index-pattern\"}],\"type\":\"lens\",\"typeMigrationVersion\":\"8.9.0\",\"updated_at\":\"2024-01-25T21:12:58.923Z\",\"version\":\"WzgwLDFd\"}\r\n{\"excludedObjects\":[],\"excludedObjectsCount\":0,\"exportedCount\":2,\"missingRefCount\":0,\"missingReferences\":[]}\r\n```\r\n\r\n###
Checklist\r\n\r\nDelete any items that are not applicable to this
PR.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [ ] [Unit
or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common scenarios\r\n- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] Any UI touched in this PR is
usable by keyboard only (learn more\r\nabout [keyboard
accessibility](https://webaim.org/techniques/keyboard/))\r\n- [ ] Any UI
touched in this PR does not create any new axe failures\r\n(run axe in
browser:\r\n[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),\r\n[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))\r\n-
[ ] If a plugin configuration key changed, check if it needs to
be\r\nallowlisted in the cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This renders correctly on smaller devices using a
responsive\r\nlayout. (You can test this [in
your\r\nbrowser](https://www.browserstack.com/guide/responsive-testing-on-local-server))\r\n-
[ ] This was checked for
[cross-browser\r\ncompatibility](https://www.elastic.co/support/matrix#matrix_browsers)","sha":"0dfff4c208d4c4c78c14c8b46dff841689623ee4","branchLabelMapping":{"^v8.13.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:fix","Team:Visualizations","Feature:Lens","backport:prev-minor","v8.12.1","v8.13.0"],"title":"[Lens]
stop gap solution for invalid formula and math
columns","number":175644,"url":"https://github.com/elastic/kibana/pull/175644","mergeCommit":{"message":"[Lens]
stop gap solution for invalid formula and math columns (#175644)\n\n##
Summary\r\n\r\nA stop-gap solution for
https://github.com/elastic/kibana/issues/168561\r\n\r\nThis
visualization can be used to
test.\r\n\r\n```\r\n{\"attributes\":{\"fieldFormatMap\":\"{\\\"hour_of_day\\\":{}}\",\"name\":\"Kibana
Sample Data
Logs\",\"runtimeFieldMap\":\"{\\\"hour_of_day\\\":{\\\"type\\\":\\\"long\\\",\\\"script\\\":{\\\"source\\\":\\\"emit(doc['timestamp'].value.getHour());\\\"}}}\",\"timeFieldName\":\"timestamp\",\"title\":\"kibana_sample_data_logs\"},\"coreMigrationVersion\":\"8.8.0\",\"created_at\":\"2024-01-24T19:57:34.193Z\",\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"managed\":false,\"references\":[],\"type\":\"index-pattern\",\"typeMigrationVersion\":\"8.0.0\",\"updated_at\":\"2024-01-24T19:57:34.193Z\",\"version\":\"WzM1LDFd\"}\r\n{\"attributes\":{\"description\":\"\",\"state\":{\"adHocDataViews\":{},\"datasourceStates\":{\"formBased\":{\"layers\":{\"7945fa55-b9ea-4b10-a498-e265ef192d7d\":{\"columnOrder\":[\"207508ea-7433-494f-9925-70d55831c74c\",\"36d445ea-dd2a-4b13-96e2-d51d07d98f70\",\"36d445ea-dd2a-4b13-96e2-d51d07d98f70X0\"],\"columns\":{\"207508ea-7433-494f-9925-70d55831c74c\":{\"dataType\":\"date\",\"isBucketed\":true,\"label\":\"timestamp\",\"operationType\":\"date_histogram\",\"params\":{\"dropPartials\":false,\"includeEmptyRows\":true,\"interval\":\"auto\"},\"scale\":\"interval\",\"sourceField\":\"timestamp\"},\"36d445ea-dd2a-4b13-96e2-d51d07d98f70\":{\"dataType\":\"number\",\"isBucketed\":false,\"label\":\"median(bytes)\",\"operationType\":\"formula\",\"sourceField\":\"___records___\",\"params\":{\"formula\":\"median(bytes)\",\"isFormulaBroken\":false},\"references\":[\"36d445ea-dd2a-4b13-96e2-d51d07d98f70X0\"],\"scale\":\"ratio\"},\"36d445ea-dd2a-4b13-96e2-d51d07d98f70X0\":{\"customLabel\":true,\"dataType\":\"number\",\"isBucketed\":false,\"label\":\"Part
of
median(bytes)\",\"operationType\":\"median\",\"params\":{\"emptyAsNull\":false},\"scale\":\"ratio\",\"sourceField\":\"bytes\"}},\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"filters\":[],\"internalReferences\":[],\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"visualization\":{\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"fittingFunction\":\"None\",\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"layers\":[{\"accessors\":[\"36d445ea-dd2a-4b13-96e2-d51d07d98f70\"],\"layerId\":\"7945fa55-b9ea-4b10-a498-e265ef192d7d\",\"layerType\":\"data\",\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"207508ea-7433-494f-9925-70d55831c74c\"}],\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"preferredSeriesType\":\"bar_stacked\",\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"valueLabels\":\"hide\"}},\"title\":\"Vis
with
formula\",\"visualizationType\":\"lnsXY\"},\"coreMigrationVersion\":\"8.8.0\",\"created_at\":\"2024-01-25T21:12:58.923Z\",\"id\":\"2139b4e8-ee7c-41dc-9564-74b7c1e54216\",\"managed\":false,\"references\":[{\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"name\":\"indexpattern-datasource-layer-7945fa55-b9ea-4b10-a498-e265ef192d7d\",\"type\":\"index-pattern\"}],\"type\":\"lens\",\"typeMigrationVersion\":\"8.9.0\",\"updated_at\":\"2024-01-25T21:12:58.923Z\",\"version\":\"WzgwLDFd\"}\r\n{\"excludedObjects\":[],\"excludedObjectsCount\":0,\"exportedCount\":2,\"missingRefCount\":0,\"missingReferences\":[]}\r\n```\r\n\r\n###
Checklist\r\n\r\nDelete any items that are not applicable to this
PR.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [ ] [Unit
or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common scenarios\r\n- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] Any UI touched in this PR is
usable by keyboard only (learn more\r\nabout [keyboard
accessibility](https://webaim.org/techniques/keyboard/))\r\n- [ ] Any UI
touched in this PR does not create any new axe failures\r\n(run axe in
browser:\r\n[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),\r\n[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))\r\n-
[ ] If a plugin configuration key changed, check if it needs to
be\r\nallowlisted in the cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This renders correctly on smaller devices using a
responsive\r\nlayout. (You can test this [in
your\r\nbrowser](https://www.browserstack.com/guide/responsive-testing-on-local-server))\r\n-
[ ] This was checked for
[cross-browser\r\ncompatibility](https://www.elastic.co/support/matrix#matrix_browsers)","sha":"0dfff4c208d4c4c78c14c8b46dff841689623ee4"}},"sourceBranch":"main","suggestedTargetBranches":["8.12"],"targetPullRequestStates":[{"branch":"8.12","label":"v8.12.1","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.13.0","branchLabelMappingKey":"^v8.13.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/175644","number":175644,"mergeCommit":{"message":"[Lens]
stop gap solution for invalid formula and math columns (#175644)\n\n##
Summary\r\n\r\nA stop-gap solution for
https://github.com/elastic/kibana/issues/168561\r\n\r\nThis
visualization can be used to
test.\r\n\r\n```\r\n{\"attributes\":{\"fieldFormatMap\":\"{\\\"hour_of_day\\\":{}}\",\"name\":\"Kibana
Sample Data
Logs\",\"runtimeFieldMap\":\"{\\\"hour_of_day\\\":{\\\"type\\\":\\\"long\\\",\\\"script\\\":{\\\"source\\\":\\\"emit(doc['timestamp'].value.getHour());\\\"}}}\",\"timeFieldName\":\"timestamp\",\"title\":\"kibana_sample_data_logs\"},\"coreMigrationVersion\":\"8.8.0\",\"created_at\":\"2024-01-24T19:57:34.193Z\",\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"managed\":false,\"references\":[],\"type\":\"index-pattern\",\"typeMigrationVersion\":\"8.0.0\",\"updated_at\":\"2024-01-24T19:57:34.193Z\",\"version\":\"WzM1LDFd\"}\r\n{\"attributes\":{\"description\":\"\",\"state\":{\"adHocDataViews\":{},\"datasourceStates\":{\"formBased\":{\"layers\":{\"7945fa55-b9ea-4b10-a498-e265ef192d7d\":{\"columnOrder\":[\"207508ea-7433-494f-9925-70d55831c74c\",\"36d445ea-dd2a-4b13-96e2-d51d07d98f70\",\"36d445ea-dd2a-4b13-96e2-d51d07d98f70X0\"],\"columns\":{\"207508ea-7433-494f-9925-70d55831c74c\":{\"dataType\":\"date\",\"isBucketed\":true,\"label\":\"timestamp\",\"operationType\":\"date_histogram\",\"params\":{\"dropPartials\":false,\"includeEmptyRows\":true,\"interval\":\"auto\"},\"scale\":\"interval\",\"sourceField\":\"timestamp\"},\"36d445ea-dd2a-4b13-96e2-d51d07d98f70\":{\"dataType\":\"number\",\"isBucketed\":false,\"label\":\"median(bytes)\",\"operationType\":\"formula\",\"sourceField\":\"___records___\",\"params\":{\"formula\":\"median(bytes)\",\"isFormulaBroken\":false},\"references\":[\"36d445ea-dd2a-4b13-96e2-d51d07d98f70X0\"],\"scale\":\"ratio\"},\"36d445ea-dd2a-4b13-96e2-d51d07d98f70X0\":{\"customLabel\":true,\"dataType\":\"number\",\"isBucketed\":false,\"label\":\"Part
of
median(bytes)\",\"operationType\":\"median\",\"params\":{\"emptyAsNull\":false},\"scale\":\"ratio\",\"sourceField\":\"bytes\"}},\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"filters\":[],\"internalReferences\":[],\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"visualization\":{\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"fittingFunction\":\"None\",\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"layers\":[{\"accessors\":[\"36d445ea-dd2a-4b13-96e2-d51d07d98f70\"],\"layerId\":\"7945fa55-b9ea-4b10-a498-e265ef192d7d\",\"layerType\":\"data\",\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"207508ea-7433-494f-9925-70d55831c74c\"}],\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"preferredSeriesType\":\"bar_stacked\",\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"valueLabels\":\"hide\"}},\"title\":\"Vis
with
formula\",\"visualizationType\":\"lnsXY\"},\"coreMigrationVersion\":\"8.8.0\",\"created_at\":\"2024-01-25T21:12:58.923Z\",\"id\":\"2139b4e8-ee7c-41dc-9564-74b7c1e54216\",\"managed\":false,\"references\":[{\"id\":\"90943e30-9a47-11e8-b64d-95841ca0b247\",\"name\":\"indexpattern-datasource-layer-7945fa55-b9ea-4b10-a498-e265ef192d7d\",\"type\":\"index-pattern\"}],\"type\":\"lens\",\"typeMigrationVersion\":\"8.9.0\",\"updated_at\":\"2024-01-25T21:12:58.923Z\",\"version\":\"WzgwLDFd\"}\r\n{\"excludedObjects\":[],\"excludedObjectsCount\":0,\"exportedCount\":2,\"missingRefCount\":0,\"missingReferences\":[]}\r\n```\r\n\r\n###
Checklist\r\n\r\nDelete any items that are not applicable to this
PR.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [ ] [Unit
or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common scenarios\r\n- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] Any UI touched in this PR is
usable by keyboard only (learn more\r\nabout [keyboard
accessibility](https://webaim.org/techniques/keyboard/))\r\n- [ ] Any UI
touched in this PR does not create any new axe failures\r\n(run axe in
browser:\r\n[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),\r\n[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))\r\n-
[ ] If a plugin configuration key changed, check if it needs to
be\r\nallowlisted in the cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This renders correctly on smaller devices using a
responsive\r\nlayout. (You can test this [in
your\r\nbrowser](https://www.browserstack.com/guide/responsive-testing-on-local-server))\r\n-
[ ] This was checked for
[cross-browser\r\ncompatibility](https://www.elastic.co/support/matrix#matrix_browsers)","sha":"0dfff4c208d4c4c78c14c8b46dff841689623ee4"}}]}]
BACKPORT-->

Co-authored-by: Drew Tate <[email protected]>
  • Loading branch information
kibanamachine and drewdaemon authored Jan 26, 2024
1 parent e4d53bd commit 1f1f85f
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 7 deletions.
63 changes: 63 additions & 0 deletions x-pack/plugins/lens/public/datasources/form_based/utils.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -435,5 +435,68 @@ describe('indexpattern_datasource utils', () => {
);
expect(warnings).toHaveLength(2);
});

// formula columns should never have a source field
// but it has been observed in the wild (https://github.com/elastic/kibana/issues/168561)
it('should ignore formula column with source field', () => {
const state = {
layers: {
'08ae29be-2717-4320-a908-a50ca73ee558': {
indexPatternId: '0',
columnOrder: [
'62f73507-09c4-4bf9-9e6f-a9692e348d94',
'1a027207-98b3-4a57-a97f-4c67e95eebc1',
],
columns: {
'1a027207-98b3-4a57-a97f-4c67e95eebc1': {
customLabel: true,
dataType: 'number',
filter: {
language: 'kuery',
query: 'my:field',
},
isBucketed: false,
label: 'Failures',
operationType: 'count',
params: {
emptyAsNull: true,
},
scale: 'ratio',
sourceField: '___records___',
},
'62f73507-09c4-4bf9-9e6f-a9692e348d94': {
customLabel: true,
dataType: 'number',
filter: {
language: 'kuery',
query: 'my:field',
},
isBucketed: false,
label: 'Success',
operationType: 'formula',
params: {
emptyAsNull: true,
formula: 'count(kql=\'message:"some message" AND message:"SUCCESS"\')',
isFormulaBroken: false,
},
references: ['62f73507-09c4-4bf9-9e6f-a9692e348d94X0'],
scale: 'ratio',
// here's the issue - this should not be here
sourceField: '___records___',
},
},
incompleteColumns: {},
},
},
} as unknown as FormBasedPrivateState;

expect(() => {
getUnsupportedOperationsWarningMessage(
state,
createFramePublic(createMockedIndexPatternWithAdditionalFields([])),
docLinks
);
}).not.toThrow();
});
});
});
18 changes: 11 additions & 7 deletions x-pack/plugins/lens/public/datasources/form_based/utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -338,20 +338,24 @@ export function getUnsupportedOperationsWarningMessage(
const columnsEntries = Object.entries(layer.columns);
return columnsEntries
.filter(([_, column]) => {
if (!hasField(column)) {
const operation = operationDefinitionMap[column.operationType] as Extract<
GenericOperationDefinition,
{ input: 'field' }
>;

// this check for getPossibleOperationForField is needed as long as
// https://github.com/elastic/kibana/issues/168561 is unresolved
if (!operation.getPossibleOperationForField || !hasField(column)) {
return false;
}

const field = dataView.getFieldByName(column.sourceField);
if (!field) {
return false;
}
return (
!(
operationDefinitionMap[column.operationType] as Extract<
GenericOperationDefinition,
{ input: 'field' }
>
).getPossibleOperationForField(field) && field?.timeSeriesMetric === 'counter'
!operation.getPossibleOperationForField?.(field) &&
field?.timeSeriesMetric === 'counter'
);
})
.map(
Expand Down

0 comments on commit 1f1f85f

Please sign in to comment.