Skip to content

Commit 89d08af

Browse files
Abdkhan14Abdullah Khan
andauthored
analytics(explore-attr-breakdowns): Adding attributebreakdownsMode field to querytype 'samples' (#104005)
Co-authored-by: Abdullah Khan <[email protected]>
1 parent c3e99bb commit 89d08af

File tree

3 files changed

+62
-40
lines changed

3 files changed

+62
-40
lines changed

static/app/utils/analytics/tracingEventMap.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type TracingEventParameters = {
5252
version: 2;
5353
visualizes: BaseVisualize[];
5454
visualizes_count: number;
55+
attribute_breakdowns_mode?: 'breakdowns' | 'cohort_comparison';
5556
};
5657
'trace.explorer.schema_hints_click': {
5758
source: 'list' | 'drawer';

static/app/views/explore/hooks/useAnalytics.tsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {MutableSearch} from 'sentry/utils/tokenizeSearch';
1111
import useOrganization from 'sentry/utils/useOrganization';
1212
import usePageFilters from 'sentry/utils/usePageFilters';
1313
import type {TimeSeries} from 'sentry/views/dashboards/widgets/common/types';
14+
import {useChartSelection} from 'sentry/views/explore/components/attributeBreakdowns/chartSelectionContext';
1415
import {useLogsAutoRefreshEnabled} from 'sentry/views/explore/contexts/logs/logsAutoRefreshContext';
1516
import {Mode} from 'sentry/views/explore/contexts/pageParamsContext/mode';
1617
import {formatSort} from 'sentry/views/explore/contexts/pageParamsContext/sortBys';
@@ -40,6 +41,8 @@ import {
4041
import type {useSortedTimeSeries} from 'sentry/views/insights/common/queries/useSortedTimeSeries';
4142
import {usePerformanceSubscriptionDetails} from 'sentry/views/performance/newTraceDetails/traceTypeWarnings/usePerformanceSubscriptionDetails';
4243

44+
import {Tab, type useTab} from './useTab';
45+
4346
const {info, fmt} = Sentry.logger;
4447

4548
interface UseTrackAnalyticsProps {
@@ -54,11 +57,13 @@ interface UseTrackAnalyticsProps {
5457
spansTableResult: SpansTableResult;
5558
timeseriesResult: ReturnType<typeof useSortedTimeSeries>;
5659
visualizes: readonly Visualize[];
60+
attributeBreakdownsMode?: 'breakdowns' | 'cohort_comparison';
5761
title?: string;
5862
tracesTableResult?: TracesTableResult;
5963
}
6064

6165
function useTrackAnalytics({
66+
attributeBreakdownsMode,
6267
queryType,
6368
aggregatesTableResult,
6469
spansTableResult,
@@ -229,6 +234,7 @@ function useTrackAnalytics({
229234
interval,
230235
gave_seer_consent: gaveSeerConsent,
231236
version: 2,
237+
attribute_breakdowns_mode: attributeBreakdownsMode,
232238
});
233239

234240
info(fmt`trace.explorer.metadata:
@@ -246,6 +252,7 @@ function useTrackAnalytics({
246252
has_exceeded_performance_usage_limit: ${String(hasExceededPerformanceUsageLimit)}
247253
page_source: ${page_source}
248254
gave_seer_consent: ${gaveSeerConsent}
255+
attribute_breakdowns_mode: ${attributeBreakdownsMode}
249256
`);
250257
}, [
251258
dataset,
@@ -268,6 +275,7 @@ function useTrackAnalytics({
268275
timeseriesResult.isPending,
269276
title,
270277
visualizes,
278+
attributeBreakdownsMode,
271279
]);
272280

273281
const tracesTableResultDefined = defined(tracesTableResult);
@@ -358,6 +366,7 @@ export function useAnalytics({
358366
tracesTableResult,
359367
timeseriesResult,
360368
interval,
369+
tab,
361370
}: Pick<
362371
UseTrackAnalyticsProps,
363372
| 'queryType'
@@ -366,14 +375,24 @@ export function useAnalytics({
366375
| 'tracesTableResult'
367376
| 'timeseriesResult'
368377
| 'interval'
369-
>) {
378+
> & {
379+
tab: ReturnType<typeof useTab>[0];
380+
}) {
370381
const dataset = useSpansDataset();
371382
const title = useQueryParamsTitle();
372383
const query = useQueryParamsQuery();
373384
const fields = useQueryParamsFields();
374385
const visualizes = useQueryParamsVisualizes();
375386
const topEvents = useTopEvents();
376387
const isTopN = topEvents ? topEvents > 0 : false;
388+
const {chartSelection} = useChartSelection();
389+
390+
const attributeBreakdownsMode =
391+
tab === Tab.ATTRIBUTE_BREAKDOWNS
392+
? chartSelection
393+
? 'cohort_comparison'
394+
: 'breakdowns'
395+
: undefined;
377396

378397
return useTrackAnalytics({
379398
queryType,
@@ -389,6 +408,7 @@ export function useAnalytics({
389408
interval,
390409
page_source: 'explore',
391410
isTopN,
411+
attributeBreakdownsMode,
392412
});
393413
}
394414

static/app/views/explore/spans/spansTab.tsx

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -144,19 +144,21 @@ export function SpansTabContent({datePageFilterProps}: SpanTabProps) {
144144

145145
return (
146146
<Fragment>
147-
<ExploreBodySearch>
148-
<SpanTabSearchSection datePageFilterProps={datePageFilterProps} />
149-
</ExploreBodySearch>
150-
<ExploreBodyContent>
151-
<SpanTabControlSection
152-
organization={organization}
153-
controlSectionExpanded={controlSectionExpanded}
154-
/>
155-
<SpanTabContentSection
156-
setControlSectionExpanded={setControlSectionExpanded}
157-
controlSectionExpanded={controlSectionExpanded}
158-
/>
159-
</ExploreBodyContent>
147+
<ChartSelectionProvider>
148+
<ExploreBodySearch>
149+
<SpanTabSearchSection datePageFilterProps={datePageFilterProps} />
150+
</ExploreBodySearch>
151+
<ExploreBodyContent>
152+
<SpanTabControlSection
153+
organization={organization}
154+
controlSectionExpanded={controlSectionExpanded}
155+
/>
156+
<SpanTabContentSection
157+
setControlSectionExpanded={setControlSectionExpanded}
158+
controlSectionExpanded={controlSectionExpanded}
159+
/>
160+
</ExploreBodyContent>
161+
</ChartSelectionProvider>
160162
</Fragment>
161163
);
162164
}
@@ -425,6 +427,7 @@ function SpanTabContentSection({
425427
const [interval] = useChartInterval();
426428

427429
useAnalytics({
430+
tab,
428431
queryType,
429432
aggregatesTableResult,
430433
spansTableResult,
@@ -491,32 +494,30 @@ function SpanTabContentSection({
491494
position="top"
492495
margin={-8}
493496
>
494-
<ChartSelectionProvider>
495-
<ExploreCharts
496-
confidences={confidences}
497-
query={query}
498-
extrapolate={extrapolate}
499-
timeseriesResult={timeseriesResult}
500-
visualizes={visualizes}
501-
setVisualizes={setVisualizes}
502-
samplingMode={timeseriesSamplingMode}
503-
setTab={setTab}
504-
rawSpanCounts={rawSpanCounts}
505-
/>
506-
<ExploreTables
507-
aggregatesTableResult={aggregatesTableResult}
508-
spansTableResult={spansTableResult}
509-
tracesTableResult={tracesTableResult}
510-
confidences={confidences}
511-
tab={tab}
512-
setTab={(newTab: Mode | Tab) => {
513-
if (newTab === Mode.AGGREGATE) {
514-
setControlSectionExpanded(true);
515-
}
516-
setTab(newTab);
517-
}}
518-
/>
519-
</ChartSelectionProvider>
497+
<ExploreCharts
498+
confidences={confidences}
499+
query={query}
500+
extrapolate={extrapolate}
501+
timeseriesResult={timeseriesResult}
502+
visualizes={visualizes}
503+
setVisualizes={setVisualizes}
504+
samplingMode={timeseriesSamplingMode}
505+
setTab={setTab}
506+
rawSpanCounts={rawSpanCounts}
507+
/>
508+
<ExploreTables
509+
aggregatesTableResult={aggregatesTableResult}
510+
spansTableResult={spansTableResult}
511+
tracesTableResult={tracesTableResult}
512+
confidences={confidences}
513+
tab={tab}
514+
setTab={(newTab: Mode | Tab) => {
515+
if (newTab === Mode.AGGREGATE) {
516+
setControlSectionExpanded(true);
517+
}
518+
setTab(newTab);
519+
}}
520+
/>
520521
</TourElement>
521522
</ExploreContentSection>
522523
);

0 commit comments

Comments
 (0)