Browse Source

feat(discover): Use split query decision to populate dataset slector (#73323)

Use the split query decision from the events endpoint to populate
the dataset selector
Shruthi 8 months ago
parent
commit
893baede20

+ 1 - 0
static/app/actionCreators/events.tsx

@@ -164,6 +164,7 @@ export type EventQuery = {
   query: string;
   cursor?: string;
   dataset?: DiscoverDatasets;
+  discoverSavedQueryId?: string;
   environment?: string[];
   equation?: string[];
   noPagination?: boolean;

+ 2 - 2
static/app/utils/discover/eventView.tsx

@@ -38,7 +38,7 @@ import {
   DISPLAY_MODE_FALLBACK_OPTIONS,
   DISPLAY_MODE_OPTIONS,
   DisplayModes,
-  type SavedQueryDatasets,
+  SavedQueryDatasets,
   TOP_N,
 } from 'sentry/utils/discover/types';
 import {statsPeriodToDays} from 'sentry/utils/duration/statsPeriodToDays';
@@ -546,7 +546,7 @@ class EventView {
       display: DisplayModes.DEFAULT,
       topEvents: '5',
       dataset: DiscoverDatasets.DISCOVER,
-      queryDataset: undefined,
+      queryDataset: SavedQueryDatasets.DISCOVER,
     };
     const keys = Object.keys(defaults).filter(key => !omitList.includes(key));
     for (const key of keys) {

+ 7 - 0
static/app/views/discover/data.tsx

@@ -11,6 +11,7 @@ export const DEFAULT_EVENT_VIEW: Readonly<NewQuery> = {
   orderby: '-timestamp',
   version: 2,
   range: '24h',
+  queryDataset: SavedQueryDatasets.DISCOVER,
 };
 
 const DEFAULT_TRANSACTION_VIEW: Readonly<NewQuery> = {
@@ -22,6 +23,7 @@ const DEFAULT_TRANSACTION_VIEW: Readonly<NewQuery> = {
   orderby: '-timestamp',
   version: 2,
   range: '24h',
+  queryDataset: SavedQueryDatasets.TRANSACTIONS,
 };
 
 const DEFAULT_ERROR_VIEW: Readonly<NewQuery> = {
@@ -33,6 +35,7 @@ const DEFAULT_ERROR_VIEW: Readonly<NewQuery> = {
   orderby: '-timestamp',
   version: 2,
   range: '24h',
+  queryDataset: SavedQueryDatasets.ERRORS,
 };
 
 export const DEFAULT_EVENT_VIEW_MAP: Record<SavedQueryDatasets, Readonly<NewQuery>> = {
@@ -58,6 +61,7 @@ export const TRANSACTION_VIEWS: Readonly<Array<NewQuery>> = [
     projects: [],
     version: 2,
     range: '24h',
+    queryDataset: SavedQueryDatasets.DISCOVER,
   },
 ];
 
@@ -80,6 +84,7 @@ export const WEB_VITALS_VIEWS: Readonly<Array<NewQuery>> = [
     version: 2,
     range: '24h',
     yAxis: ['epm()'],
+    queryDataset: SavedQueryDatasets.DISCOVER,
   },
 ];
 
@@ -95,6 +100,7 @@ export const ALL_VIEWS: Readonly<Array<NewQuery>> = [
     version: 2,
     range: '24h',
     display: 'top5',
+    queryDataset: SavedQueryDatasets.DISCOVER,
   },
   {
     id: undefined,
@@ -106,5 +112,6 @@ export const ALL_VIEWS: Readonly<Array<NewQuery>> = [
     version: 2,
     range: '24h',
     display: 'top5',
+    queryDataset: SavedQueryDatasets.DISCOVER,
   },
 ];

+ 9 - 9
static/app/views/discover/eventDetails/index.spec.tsx

@@ -212,19 +212,19 @@ describe('Discover > EventDetails', function () {
     expect(await screen.findByText('Firefox')).toBeInTheDocument();
     expect(screen.getByRole('link', {name: 'Firefox'})).toHaveAttribute(
       'href',
-      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=browser%3AFirefox%20title%3A%22Oh%20no%20something%20bad%22&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
+      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=browser%3AFirefox%20title%3A%22Oh%20no%20something%20bad%22&queryDataset=discover&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
     );
 
     // Get the second link
     expect(screen.getByRole('link', {name: 'test-uuid'})).toHaveAttribute(
       'href',
-      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=tags%5Bdevice.uuid%5D%3Atest-uuid%20title%3A%22Oh%20no%20something%20bad%22&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
+      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=tags%5Bdevice.uuid%5D%3Atest-uuid%20title%3A%22Oh%20no%20something%20bad%22&queryDataset=discover&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
     );
 
     // Get the third link
     expect(screen.getByRole('link', {name: '82ebf297206a'})).toHaveAttribute(
       'href',
-      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=release%3A82ebf297206a%20title%3A%22Oh%20no%20something%20bad%22&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
+      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=release%3A82ebf297206a%20title%3A%22Oh%20no%20something%20bad%22&queryDataset=discover&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
     );
   });
 
@@ -252,19 +252,19 @@ describe('Discover > EventDetails', function () {
     expect(await screen.findByText('Firefox')).toBeInTheDocument();
     expect(screen.getByRole('link', {name: 'Firefox'})).toHaveAttribute(
       'href',
-      '/organizations/org-slug/discover/homepage/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=browser%3AFirefox%20title%3A%22Oh%20no%20something%20bad%22&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
+      '/organizations/org-slug/discover/homepage/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=browser%3AFirefox%20title%3A%22Oh%20no%20something%20bad%22&queryDataset=discover&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
     );
 
     // Get the second link
     expect(screen.getByRole('link', {name: 'test-uuid'})).toHaveAttribute(
       'href',
-      '/organizations/org-slug/discover/homepage/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=tags%5Bdevice.uuid%5D%3Atest-uuid%20title%3A%22Oh%20no%20something%20bad%22&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
+      '/organizations/org-slug/discover/homepage/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=tags%5Bdevice.uuid%5D%3Atest-uuid%20title%3A%22Oh%20no%20something%20bad%22&queryDataset=discover&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
     );
 
     // Get the third link
     expect(screen.getByRole('link', {name: '82ebf297206a'})).toHaveAttribute(
       'href',
-      '/organizations/org-slug/discover/homepage/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=release%3A82ebf297206a%20title%3A%22Oh%20no%20something%20bad%22&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
+      '/organizations/org-slug/discover/homepage/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=release%3A82ebf297206a%20title%3A%22Oh%20no%20something%20bad%22&queryDataset=discover&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
     );
   });
 
@@ -295,18 +295,18 @@ describe('Discover > EventDetails', function () {
     expect(await screen.findByText('Firefox')).toBeInTheDocument();
     expect(screen.getByRole('link', {name: 'Firefox'})).toHaveAttribute(
       'href',
-      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=Dumpster%20browser%3AFirefox%20title%3A%22Oh%20no%20something%20bad%22&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
+      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=Dumpster%20browser%3AFirefox%20title%3A%22Oh%20no%20something%20bad%22&queryDataset=discover&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
     );
 
     // Get the second link
     expect(screen.getByRole('link', {name: 'test-uuid'})).toHaveAttribute(
       'href',
-      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=Dumpster%20tags%5Bdevice.uuid%5D%3Atest-uuid%20title%3A%22Oh%20no%20something%20bad%22&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
+      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=Dumpster%20tags%5Bdevice.uuid%5D%3Atest-uuid%20title%3A%22Oh%20no%20something%20bad%22&queryDataset=discover&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
     );
     // Get the third link
     expect(screen.getByRole('link', {name: '82ebf297206a'})).toHaveAttribute(
       'href',
-      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=Dumpster%20release%3A82ebf297206a%20title%3A%22Oh%20no%20something%20bad%22&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
+      '/organizations/org-slug/discover/results/?field=title&field=event.type&field=project&field=user.display&field=timestamp&name=All%20Events&query=Dumpster%20release%3A82ebf297206a%20title%3A%22Oh%20no%20something%20bad%22&queryDataset=discover&sort=-timestamp&statsPeriod=24h&yAxis=count%28%29'
     );
   });
 

+ 53 - 5
static/app/views/discover/results.spec.tsx

@@ -89,6 +89,7 @@ function renderMockRequests() {
           timestamp: 'date',
           'user.id': 'string',
         },
+        discoverSplitDecision: 'transaction-like',
       },
       data: [
         {
@@ -181,6 +182,7 @@ function renderMockRequests() {
       widths: ['-1', '-1', '-1', '-1', '-1'],
       range: '24h',
       orderby: '-user.display',
+      queryDataset: 'discover',
     },
   });
 
@@ -204,6 +206,7 @@ function renderMockRequests() {
       widths: ['-1', '-1', '-1', '-1', '-1'],
       range: '24h',
       orderby: '-user.display',
+      queryDataset: 'discover',
     },
   });
 
@@ -645,12 +648,12 @@ describe('Results', function () {
 
       expect(screen.getByRole('link', {name: 'timestamp'})).toHaveAttribute(
         'href',
-        'undefined?field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&query=&sort=-timestamp&statsPeriod=24h&topEvents=5'
+        'undefined?field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&query=&queryDataset=discover&sort=-timestamp&statsPeriod=24h&topEvents=5'
       );
 
       expect(screen.getByRole('link', {name: 'project'})).toHaveAttribute(
         'href',
-        'undefined?field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&query=&sort=-project&statsPeriod=24h&topEvents=5'
+        'undefined?field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&query=&queryDataset=discover&sort=-project&statsPeriod=24h&topEvents=5'
       );
 
       // NOTE: This uses a legacy redirect for project event to the issue group event link
@@ -661,12 +664,12 @@ describe('Results', function () {
 
       expect(screen.getByRole('link', {name: 'user.display'})).toHaveAttribute(
         'href',
-        'undefined?field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&query=&sort=user.display&statsPeriod=24h&topEvents=5'
+        'undefined?field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&query=&queryDataset=discover&sort=user.display&statsPeriod=24h&topEvents=5'
       );
 
       expect(screen.getByRole('link', {name: 'title'})).toHaveAttribute(
         'href',
-        'undefined?field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&query=&sort=-title&statsPeriod=24h&topEvents=5'
+        'undefined?field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&query=&queryDataset=discover&sort=-title&statsPeriod=24h&topEvents=5'
       );
     });
 
@@ -711,7 +714,7 @@ describe('Results', function () {
 
       expect(screen.getByRole('link', {name: 'timestamp'})).toHaveAttribute(
         'href',
-        'undefined?environment=production&field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&project=2&query=&sort=-timestamp&statsPeriod=7d&topEvents=5'
+        'undefined?environment=production&field=title&field=event.type&field=project&field=user.display&field=timestamp&id=1&name=new&project=2&query=&queryDataset=discover&sort=-timestamp&statsPeriod=7d&topEvents=5'
       );
     });
 
@@ -1230,6 +1233,7 @@ describe('Results', function () {
           widths: ['-1', '-1', '-1', '-1', '-1'],
           range: '24h',
           orderby: '-user.display',
+          queryDataset: 'discover',
         },
       });
       const organization = OrganizationFixture({
@@ -1500,5 +1504,49 @@ describe('Results', function () {
 
       expect(screen.queryByText(/Based on your search criteria/)).not.toBeInTheDocument();
     });
+
+    it('uses split decision to populate dataset selector', async function () {
+      const organization = OrganizationFixture({
+        features: [
+          'discover-basic',
+          'discover-query',
+          'performance-discover-dataset-selector',
+        ],
+      });
+
+      const {router} = initializeOrg({
+        organization,
+        router: {
+          location: {query: {id: '1'}},
+        },
+      });
+
+      ProjectsStore.loadInitialData([ProjectFixture()]);
+
+      const mockRequests = renderMockRequests();
+
+      render(
+        <Results
+          organization={organization}
+          location={router.location}
+          router={router}
+          loading={false}
+          setSavedQuery={jest.fn()}
+        />,
+        {
+          router: router,
+          organization,
+        }
+      );
+
+      await waitFor(() => {
+        expect(mockRequests.measurementsMetaMock).toHaveBeenCalled();
+      });
+      expect(mockRequests.eventsResultsMock).toHaveBeenCalledTimes(1);
+
+      expect(
+        screen.getByRole('button', {name: 'Dataset Transactions'})
+      ).toBeInTheDocument();
+    });
   });
 });

+ 9 - 5
static/app/views/discover/results.tsx

@@ -53,7 +53,7 @@ import withApi from 'sentry/utils/withApi';
 import {normalizeUrl} from 'sentry/utils/withDomainRequired';
 import withOrganization from 'sentry/utils/withOrganization';
 import withPageFilters from 'sentry/utils/withPageFilters';
-import {DATASET_PARAM} from 'sentry/views/discover/savedQuery/datasetSelector';
+import {getDataset} from 'sentry/views/discover/savedQuery/utils';
 
 import {addRoutePerformanceContext} from '../performance/utils';
 
@@ -89,6 +89,7 @@ type State = {
   savedQuery?: SavedQuery;
   showMetricsAlert?: boolean;
   showUnparameterizedBanner?: boolean;
+  splitDecision?: SavedQueryDatasets;
 };
 const SHOW_TAGS_STORAGE_KEY = 'discover2:show-tags';
 const SHOW_UNPARAM_BANNER = 'showUnparameterizedBanner';
@@ -293,7 +294,7 @@ export class Results extends Component<Props, State> {
   }
 
   checkEventView() {
-    const {eventView} = this.state;
+    const {eventView, splitDecision} = this.state;
     const {loading} = this.props;
     if (eventView.isValid() || loading) {
       return;
@@ -305,9 +306,7 @@ export class Results extends Component<Props, State> {
     const hasDatasetSelector = organization.features.includes(
       'performance-discover-dataset-selector'
     );
-    const value = (decodeScalar(location.query[DATASET_PARAM]) ??
-      savedQuery?.queryDataset ??
-      'error-events') as SavedQueryDatasets;
+    const value = getDataset(location, savedQuery, splitDecision);
     const defaultEventView = hasDatasetSelector
       ? DEFAULT_EVENT_VIEW_MAP[value]
       : DEFAULT_EVENT_VIEW;
@@ -587,6 +586,7 @@ export class Results extends Component<Props, State> {
       showTags,
       confirmedQuery,
       savedQuery,
+      splitDecision,
     } = this.state;
     const fields = eventView.hasAggregateField()
       ? generateAggregateFields(organization, eventView.fields)
@@ -612,6 +612,7 @@ export class Results extends Component<Props, State> {
             yAxis={yAxisArray}
             router={router}
             isHomepage={isHomepage}
+            splitDecision={splitDecision}
           />
           <Layout.Body>
             <CustomMeasurementsProvider organization={organization} selection={selection}>
@@ -672,6 +673,9 @@ export class Results extends Component<Props, State> {
                   onCursor={this.handleCursor}
                   isHomepage={isHomepage}
                   setTips={this.setTips}
+                  setSplitDecision={(value?: string) => {
+                    this.setState({splitDecision: value as SavedQueryDatasets});
+                  }}
                 />
               </Layout.Main>
               {showTags ? this.renderTagsTable() : null}

+ 4 - 0
static/app/views/discover/resultsHeader.tsx

@@ -16,6 +16,7 @@ import {t} from 'sentry/locale';
 import {space} from 'sentry/styles/space';
 import type {Organization, SavedQuery} from 'sentry/types';
 import EventView from 'sentry/utils/discover/eventView';
+import type {SavedQueryDatasets} from 'sentry/utils/discover/types';
 import withApi from 'sentry/utils/withApi';
 
 import Banner from './banner';
@@ -34,6 +35,7 @@ type Props = {
   setSavedQuery: (savedQuery?: SavedQuery) => void;
   yAxis: string[];
   isHomepage?: boolean;
+  splitDecision?: SavedQueryDatasets;
 };
 
 type State = {
@@ -138,6 +140,7 @@ class ResultsHeader extends Component<Props, State> {
       router,
       setSavedQuery,
       isHomepage,
+      splitDecision,
     } = this.props;
     const {savedQuery, loading, homepageQuery} = this.state;
 
@@ -189,6 +192,7 @@ class ResultsHeader extends Component<Props, State> {
             yAxis={yAxis}
             router={router}
             isHomepage={isHomepage}
+            splitDecision={splitDecision}
             setHomepageQuery={updatedHomepageQuery => {
               this.setState({homepageQuery: updatedHomepageQuery});
               if (isHomepage) {

+ 6 - 6
static/app/views/discover/savedQuery/datasetSelector.tsx

@@ -4,28 +4,28 @@ import {CompactSelect} from 'sentry/components/compactSelect';
 import {t} from 'sentry/locale';
 import type {SavedQuery} from 'sentry/types';
 import EventView from 'sentry/utils/discover/eventView';
-import {decodeScalar} from 'sentry/utils/queryString';
+import type {SavedQueryDatasets} from 'sentry/utils/discover/types';
 import {useLocation} from 'sentry/utils/useLocation';
 import {useNavigate} from 'sentry/utils/useNavigate';
 import useOrganization from 'sentry/utils/useOrganization';
 import {DEFAULT_EVENT_VIEW_MAP} from 'sentry/views/discover/data';
+import {getDataset} from 'sentry/views/discover/savedQuery/utils';
 
 export const DATASET_PARAM = 'queryDataset';
 
 type Props = {
   isHomepage: boolean | undefined;
   savedQuery: SavedQuery | undefined;
+  splitDecision?: SavedQueryDatasets;
 };
 
 export function DatasetSelector(props: Props) {
-  const {savedQuery, isHomepage} = props;
+  const {savedQuery, isHomepage, splitDecision} = props;
   const location = useLocation();
   const organization = useOrganization();
   const navigate = useNavigate();
-  const value =
-    decodeScalar(location.query[DATASET_PARAM]) ??
-    savedQuery?.queryDataset ??
-    'error-events';
+
+  const value = getDataset(location, savedQuery, splitDecision);
 
   const options = [
     {value: 'error-events', label: t('Errors')},

+ 17 - 3
static/app/views/discover/savedQuery/index.tsx

@@ -27,6 +27,7 @@ import type {Organization, Project, SavedQuery} from 'sentry/types';
 import {trackAnalytics} from 'sentry/utils/analytics';
 import {browserHistory} from 'sentry/utils/browserHistory';
 import EventView from 'sentry/utils/discover/eventView';
+import type {SavedQueryDatasets} from 'sentry/utils/discover/types';
 import {getDiscoverQueriesUrl} from 'sentry/utils/discover/urls';
 import useOverlay from 'sentry/utils/useOverlay';
 import withApi from 'sentry/utils/withApi';
@@ -143,6 +144,7 @@ type Props = DefaultProps & {
   yAxis: string[];
   homepageQuery?: SavedQuery;
   isHomepage?: boolean;
+  splitDecision?: SavedQueryDatasets;
 };
 
 type State = {
@@ -522,8 +524,16 @@ class SavedQueryButtonGroup extends PureComponent<Props, State> {
   }
 
   render() {
-    const {organization, eventView, savedQuery, yAxis, router, location, isHomepage} =
-      this.props;
+    const {
+      organization,
+      eventView,
+      savedQuery,
+      yAxis,
+      router,
+      location,
+      isHomepage,
+      splitDecision,
+    } = this.props;
 
     const contextMenuItems: MenuItemProps[] = [];
 
@@ -582,7 +592,11 @@ class SavedQueryButtonGroup extends PureComponent<Props, State> {
         >
           {({hasFeature}) =>
             hasFeature && (
-              <DatasetSelector isHomepage={isHomepage} savedQuery={savedQuery} />
+              <DatasetSelector
+                isHomepage={isHomepage}
+                savedQuery={savedQuery}
+                splitDecision={splitDecision}
+              />
             )
           }
         </Feature>

+ 20 - 1
static/app/views/discover/savedQuery/utils.tsx

@@ -1,3 +1,5 @@
+import type {Location} from 'history';
+
 import {
   deleteHomepageQuery,
   updateHomepageQuery,
@@ -14,8 +16,10 @@ import type {NewQuery, Organization, SavedQuery} from 'sentry/types';
 import {trackAnalytics} from 'sentry/utils/analytics';
 import type {SaveQueryEventParameters} from 'sentry/utils/analytics/discoverAnalyticsEvents';
 import type EventView from 'sentry/utils/discover/eventView';
-import {DisplayModes} from 'sentry/utils/discover/types';
+import {DisplayModes, SavedQueryDatasets} from 'sentry/utils/discover/types';
+import {decodeScalar} from 'sentry/utils/queryString';
 import {DisplayType} from 'sentry/views/dashboards/types';
+import {DATASET_PARAM} from 'sentry/views/discover/savedQuery/datasetSelector';
 
 export function handleCreateQuery(
   api: Client,
@@ -242,3 +246,18 @@ export function displayModeToDisplayType(displayMode: DisplayModes): DisplayType
       return DisplayType.LINE;
   }
 }
+
+export function getDataset(
+  location: Location,
+  savedQuery: SavedQuery | undefined,
+  splitDecision?: SavedQueryDatasets
+): SavedQueryDatasets {
+  const dataset = decodeScalar(location.query[DATASET_PARAM]);
+  if (dataset) {
+    return dataset as SavedQueryDatasets;
+  }
+  if (savedQuery?.queryDataset === SavedQueryDatasets.DISCOVER && splitDecision) {
+    return splitDecision;
+  }
+  return (savedQuery?.queryDataset ?? SavedQueryDatasets.ERRORS) as SavedQueryDatasets;
+}

Some files were not shown because too many files changed in this diff