You've already forked FrameTour-BE
refactor(clickhouse): 优化景点统计数据查询逻辑
- 将原有的 scenicId 参数匹配条件替换为子查询方式 - 统一使用 enterScenicTraceIdSubQuery 方法处理景点访问轨迹ID筛选 - 移除重复的时间范围过滤条件以提高查询效率 - 保持 LOAD 和 FACE_UPLOAD 操作的数据统计一致性 - 简化 LAUNCH 操作的时间范围过滤逻辑 - 提高代码可维护性和查询性能
This commit is contained in:
@@ -106,7 +106,9 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
|
|||||||
sql.append("INNER JOIN t_stats s ON r.trace_id = s.trace_id ");
|
sql.append("INNER JOIN t_stats s ON r.trace_id = s.trace_id ");
|
||||||
sql.append("WHERE r.action = 'LOAD' ");
|
sql.append("WHERE r.action = 'LOAD' ");
|
||||||
sql.append("AND r.identifier = 'pages/videoSynthesis/buy' ");
|
sql.append("AND r.identifier = 'pages/videoSynthesis/buy' ");
|
||||||
sql.append("AND JSONExtractString(r.params, 'scenicId') = '").append(query.getScenicId()).append("' ");
|
sql.append("AND r.trace_id IN (");
|
||||||
|
appendEnterScenicTraceIdSubQuery(sql, query.getScenicId(), query.getStartTime(), query.getEndTime());
|
||||||
|
sql.append(") ");
|
||||||
sql.append("AND JSONExtractString(r.params, 'share') = '' ");
|
sql.append("AND JSONExtractString(r.params, 'share') = '' ");
|
||||||
if (query.getStartTime() != null) {
|
if (query.getStartTime() != null) {
|
||||||
sql.append("AND r.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
sql.append("AND r.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
||||||
@@ -167,7 +169,9 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
|
|||||||
sql.append("FROM t_stats_record r ");
|
sql.append("FROM t_stats_record r ");
|
||||||
sql.append("INNER JOIN t_stats s ON r.trace_id = s.trace_id ");
|
sql.append("INNER JOIN t_stats s ON r.trace_id = s.trace_id ");
|
||||||
sql.append("WHERE r.action = 'FACE_UPLOAD' ");
|
sql.append("WHERE r.action = 'FACE_UPLOAD' ");
|
||||||
sql.append("AND JSONExtractString(r.params, 'scenicId') = '").append(query.getScenicId()).append("' ");
|
sql.append("AND r.trace_id IN (");
|
||||||
|
appendEnterScenicTraceIdSubQuery(sql, query.getScenicId(), query.getStartTime(), query.getEndTime());
|
||||||
|
sql.append(") ");
|
||||||
if (query.getStartTime() != null) {
|
if (query.getStartTime() != null) {
|
||||||
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
||||||
}
|
}
|
||||||
@@ -183,7 +187,9 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
|
|||||||
sql.append("SELECT DISTINCT r.identifier FROM t_stats_record r ");
|
sql.append("SELECT DISTINCT r.identifier FROM t_stats_record r ");
|
||||||
sql.append("INNER JOIN t_stats s ON r.trace_id = s.trace_id ");
|
sql.append("INNER JOIN t_stats s ON r.trace_id = s.trace_id ");
|
||||||
sql.append("WHERE r.action = 'FACE_UPLOAD' ");
|
sql.append("WHERE r.action = 'FACE_UPLOAD' ");
|
||||||
sql.append("AND JSONExtractString(r.params, 'scenicId') = '").append(query.getScenicId()).append("' ");
|
sql.append("AND r.trace_id IN (");
|
||||||
|
appendEnterScenicTraceIdSubQuery(sql, query.getScenicId(), query.getStartTime(), query.getEndTime());
|
||||||
|
sql.append(") ");
|
||||||
if (query.getStartTime() != null) {
|
if (query.getStartTime() != null) {
|
||||||
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
||||||
}
|
}
|
||||||
@@ -357,12 +363,6 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
|
|||||||
sql.append(") ");
|
sql.append(") ");
|
||||||
sql.append("AND r.action = 'LAUNCH' ");
|
sql.append("AND r.action = 'LAUNCH' ");
|
||||||
sql.append("AND JSONExtractInt(r.params, 'scene') IN (1047, 1048, 1049) ");
|
sql.append("AND JSONExtractInt(r.params, 'scene') IN (1047, 1048, 1049) ");
|
||||||
if (query.getStartTime() != null) {
|
|
||||||
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
|
||||||
}
|
|
||||||
if (query.getEndTime() != null) {
|
|
||||||
sql.append("AND s.create_time <= ").append(formatDateTime(query.getEndTime())).append(" ");
|
|
||||||
}
|
|
||||||
sql.append("GROUP BY toStartOfHour(s.create_time) ");
|
sql.append("GROUP BY toStartOfHour(s.create_time) ");
|
||||||
sql.append("ORDER BY toStartOfHour(s.create_time)");
|
sql.append("ORDER BY toStartOfHour(s.create_time)");
|
||||||
|
|
||||||
@@ -386,12 +386,6 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
|
|||||||
sql.append(") ");
|
sql.append(") ");
|
||||||
sql.append("AND r.action = 'LAUNCH' ");
|
sql.append("AND r.action = 'LAUNCH' ");
|
||||||
sql.append("AND JSONExtractInt(r.params, 'scene') IN (1047, 1048, 1049) ");
|
sql.append("AND JSONExtractInt(r.params, 'scene') IN (1047, 1048, 1049) ");
|
||||||
if (query.getStartTime() != null) {
|
|
||||||
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
|
||||||
}
|
|
||||||
if (query.getEndTime() != null) {
|
|
||||||
sql.append("AND s.create_time <= ").append(formatDateTime(query.getEndTime())).append(" ");
|
|
||||||
}
|
|
||||||
sql.append("GROUP BY toStartOfDay(s.create_time) ");
|
sql.append("GROUP BY toStartOfDay(s.create_time) ");
|
||||||
sql.append("ORDER BY toStartOfDay(s.create_time)");
|
sql.append("ORDER BY toStartOfDay(s.create_time)");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user