Skip to content

Commit 623ebcb

Browse files
committed
add: group by clause for segement by channel
1 parent 38333b2 commit 623ebcb

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

sentry/src/db/analytics.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ pub async fn advertiser_channel_ids(
4444
})
4545
.await
4646
}
47+
4748
pub async fn get_analytics(
4849
query: AnalyticsQuery,
4950
pool: &DbPool,
@@ -55,8 +56,8 @@ pub async fn get_analytics(
5556
let time_limit = Utc::now().timestamp() - period;
5657

5758
let mut where_clauses = vec![format!("created > to_timestamp({})", time_limit)];
58-
59-
let select_query = match analytics_type {
59+
let mut group_clause = "time".to_string();
60+
let mut select_clause = match analytics_type {
6061
AnalyticsType::Advertiser { session, channel } => {
6162
if let Some(id) = channel {
6263
where_clauses.push(format!("channel_id = {}", id));
@@ -73,7 +74,7 @@ pub async fn get_analytics(
7374
));
7475

7576
format!(
76-
"select SUM(value::numeric)::varchar as value, (extract(epoch from created) - (MOD( CAST (extract(epoch from created) AS NUMERIC), {}))) as time from event_aggregates, jsonb_each_text(events->'{}'->'{}')",
77+
"SUM(value::numeric)::varchar as value, (extract(epoch from created) - (MOD( CAST (extract(epoch from created) AS NUMERIC), {}))) as time from event_aggregates, jsonb_each_text(events->'{}'->'{}')",
7778
interval, query.event_type, query.metric
7879
)
7980
}
@@ -83,7 +84,7 @@ pub async fn get_analytics(
8384
query.event_type, query.metric
8485
));
8586
format!(
86-
"select SUM(value::numeric)::varchar as value, (extract(epoch from created) - (MOD( CAST (extract(epoch from created) AS NUMERIC), {}))) as time from event_aggregates, jsonb_each_text(events->'{}'->'{}')",
87+
"SUM(value::numeric)::varchar as value, (extract(epoch from created) - (MOD( CAST (extract(epoch from created) AS NUMERIC), {}))) as time from event_aggregates, jsonb_each_text(events->'{}'->'{}')",
8788
interval, query.event_type, query.metric
8889
)
8990
}
@@ -98,23 +99,22 @@ pub async fn get_analytics(
9899
));
99100

100101
format!(
101-
"select SUM((events->'{}'->'{}'->>'{}')::numeric) as value, (extract(epoch from created) - (MOD( CAST (extract(epoch from created) AS NUMERIC), {}))) as time from event_aggregates",
102+
"SUM((events->'{}'->'{}'->>'{}')::numeric) as value, (extract(epoch from created) - (MOD( CAST (extract(epoch from created) AS NUMERIC), {}))) as time from event_aggregates",
102103
query.event_type, query.metric, session.uid, interval
103104
)
104105
}
105106
};
106107

107-
let group = if segment_by_channel {
108-
"time, channelId"
109-
} else {
110-
"time"
111-
};
108+
if segment_by_channel {
109+
select_clause = format!("{}, channelId", select_clause);
110+
group_clause = format!("{}, channelId", group_clause);
111+
}
112112

113113
let sql_query = format!(
114-
"{} WHERE {} GROUP BY {} LIMIT {}",
115-
select_query,
114+
"SELECT {} WHERE {} GROUP BY {} LIMIT {}",
115+
select_clause,
116116
where_clauses.join(" AND "),
117-
group,
117+
group_clause,
118118
applied_limit,
119119
);
120120

0 commit comments

Comments
 (0)