-
Notifications
You must be signed in to change notification settings - Fork 731
Expand file tree
/
Copy pathleaderboards_issue_response.pipe
More file actions
76 lines (67 loc) · 2.87 KB
/
leaderboards_issue_response.pipe
File metadata and controls
76 lines (67 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
DESCRIPTION >
Leaderboard ranking projects by average issue response time. Compares the current period
(last 12 months) with the previous period (12-24 months ago). Lower response times rank higher.
Only includes projects with GitHub or GitLab integrations.
NODE leaderboards_issue_response_projects
DESCRIPTION >
Retrieves all projects that have GitHub or GitLab integration enabled
SQL >
SELECT id, name, slug, segmentId, logoUrl, collectionsSlugs, isLF, status
FROM insights_projects_populated_ds
WHERE arrayExists(x -> x IN ('github', 'gitlab'), connectedPlatforms)
GROUP BY id, name, slug, segmentId, logoUrl, collectionsSlugs, isLF, status
NODE leaderboards_issue_response_current_period
DESCRIPTION >
Calculates average issue response time in seconds for the last 12 months
SQL >
SELECT segmentId, ROUND(AVG(respondedInSeconds), 0) AS "averageResponseTimeSeconds"
FROM issues_analyzed
WHERE
openedAt >= now() - INTERVAL 12 MONTH
AND openedAt < now()
AND respondedInSeconds is not null
AND respondedInSeconds > 0
GROUP BY segmentId
HAVING averageResponseTimeSeconds > 0
NODE leaderboards_issue_response_previous_period
DESCRIPTION >
Calculates average issue response time in seconds for the previous 12 months (12-24 months ago)
SQL >
SELECT segmentId, round(avg(respondedInSeconds)) as "averageResponseTimeSeconds"
FROM issues_analyzed
WHERE
openedAt >= now() - INTERVAL 24 MONTH
AND openedAt < now() - INTERVAL 12 MONTH
AND respondedInSeconds is not null
AND respondedInSeconds > 0
GROUP BY segmentId
HAVING averageResponseTimeSeconds > 0
NODE leaderboards_issue_response_results
DESCRIPTION >
Joins project metadata with current and previous period response times, ranks by fastest response
SQL >
SELECT
toStartOfInterval(now(), INTERVAL 1 day) as snapshotId,
row_number() OVER (ORDER BY coalesce(o.averageResponseTimeSeconds, 0) ASC) as rank,
p.id as id,
p.segmentId as segmentId,
p.name as name,
p.slug as slug,
p.logoUrl as logoUrl,
'fastest-responders' as leaderboardType,
cast(coalesce(o.averageResponseTimeSeconds, 0) as Float64) as value,
cast(coalesce(pp.averageResponseTimeSeconds, 0) as Float64) as previousPeriodValue,
p.collectionsSlugs as collectionsSlugs,
p.isLF as isLF,
[] as githubHandleArray,
p.status as status,
count() OVER () as totalCount
FROM leaderboards_issue_response_projects p
INNER JOIN leaderboards_issue_response_current_period o ON p.segmentId = o.segmentId
LEFT JOIN leaderboards_issue_response_previous_period pp ON p.segmentId = pp.segmentId
WHERE o.averageResponseTimeSeconds > 0
ORDER BY value ASC
TYPE COPY
TARGET_DATASOURCE leaderboards_copy_ds
COPY_MODE append
COPY_SCHEDULE 40 1 * * *