Skip to content

Commit 78eea71

Browse files
committed
feat: simplify timeseries pipes to yearly all-time granularity
Signed-off-by: Gašper Grom <gasper.grom@gmail.com>
1 parent 8d34ba2 commit 78eea71

2 files changed

Lines changed: 11 additions & 209 deletions

File tree

Lines changed: 5 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,16 @@
11
DESCRIPTION >
2-
Activity timeseries for a given organization, bucketed by granularity.
3-
Filters to activities where the member belongs to the given org.
2+
Activity timeseries for a given organization, bucketed by year (all-time).
43

54
TAGS "Organization page"
65

7-
NODE org_page_activities_bounds
8-
SQL >
9-
%
10-
SELECT min(timestamp) AS actual_start_date, max(timestamp) AS actual_end_date
11-
FROM activityRelations_deduplicated_cleaned_bucket_union
12-
WHERE
13-
organizationId = {{ String(orgId, '', description="Organization ID", required=True) }}
14-
{% if defined(startDate) %}
15-
AND timestamp >= {{ DateTime(startDate, description="Filter activity timestamp after") }}
16-
{% end %}
17-
{% if defined(endDate) %}
18-
AND timestamp < {{ DateTime(endDate, description="Filter activity timestamp before") }}
19-
{% end %}
20-
216
NODE org_page_activities_timeseries_data
227
SQL >
238
%
249
SELECT
25-
CASE
26-
WHEN {{ String(granularity, 'monthly') }} = 'daily'
27-
THEN toDate(addDays(bounds.actual_start_date, numbers.number))
28-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
29-
THEN toStartOfWeek(addDays(bounds.actual_start_date, numbers.number * 7))
30-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
31-
THEN toStartOfMonth(addMonths(bounds.actual_start_date, numbers.number))
32-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
33-
THEN toStartOfQuarter(addMonths(bounds.actual_start_date, numbers.number * 3))
34-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
35-
THEN toStartOfYear(addYears(bounds.actual_start_date, numbers.number))
36-
END AS startDate,
37-
CASE
38-
WHEN {{ String(granularity, 'monthly') }} = 'daily'
39-
THEN toDate(addDays(bounds.actual_start_date, numbers.number))
40-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
41-
THEN
42-
toDate(
43-
toStartOfWeek(addDays(bounds.actual_start_date, numbers.number * 7))
44-
+ INTERVAL 6 DAY
45-
)
46-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
47-
THEN
48-
toDate(
49-
toStartOfMonth(addMonths(bounds.actual_start_date, numbers.number))
50-
+ INTERVAL 1 MONTH
51-
- INTERVAL 1 DAY
52-
)
53-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
54-
THEN
55-
toDate(
56-
toStartOfQuarter(addMonths(bounds.actual_start_date, numbers.number * 3))
57-
+ INTERVAL 3 MONTH
58-
- INTERVAL 1 DAY
59-
)
60-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
61-
THEN
62-
toDate(
63-
toStartOfYear(addYears(bounds.actual_start_date, numbers.number))
64-
+ INTERVAL 1 YEAR
65-
- INTERVAL 1 DAY
66-
)
67-
END AS endDate,
10+
toStartOfYear(timestamp) AS startDate,
11+
toDate(toStartOfYear(timestamp) + INTERVAL 1 YEAR - INTERVAL 1 DAY) AS endDate,
6812
count() AS activityCount
69-
FROM numbers(1000) numbers
70-
CROSS JOIN
71-
(
72-
SELECT
73-
CASE
74-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
75-
THEN toStartOfWeek(actual_start_date)
76-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
77-
THEN toStartOfMonth(actual_start_date)
78-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
79-
THEN toStartOfQuarter(actual_start_date)
80-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
81-
THEN toStartOfYear(actual_start_date)
82-
ELSE actual_start_date
83-
END AS actual_start_date,
84-
actual_end_date
85-
FROM org_page_activities_bounds
86-
) bounds
87-
LEFT JOIN
88-
activityRelations_deduplicated_cleaned_bucket_union af
89-
ON organizationId = {{ String(orgId, '') }}
90-
AND CASE
91-
WHEN {{ String(granularity, 'monthly') }} = 'daily'
92-
THEN toDate(af.timestamp)
93-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
94-
THEN toStartOfWeek(af.timestamp)
95-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
96-
THEN toStartOfMonth(af.timestamp)
97-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
98-
THEN toStartOfQuarter(af.timestamp)
99-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
100-
THEN toStartOfYear(af.timestamp)
101-
END = CASE
102-
WHEN {{ String(granularity, 'monthly') }} = 'daily'
103-
THEN toDate(addDays(bounds.actual_start_date, numbers.number))
104-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
105-
THEN toStartOfWeek(addDays(bounds.actual_start_date, numbers.number * 7))
106-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
107-
THEN toStartOfMonth(addMonths(bounds.actual_start_date, numbers.number))
108-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
109-
THEN toStartOfQuarter(addMonths(bounds.actual_start_date, numbers.number * 3))
110-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
111-
THEN toStartOfYear(addYears(bounds.actual_start_date, numbers.number))
112-
END
113-
WHERE startDate >= bounds.actual_start_date AND startDate < bounds.actual_end_date
13+
FROM activityRelations_deduplicated_cleaned_bucket_union
14+
WHERE organizationId = {{ String(orgId, '', description="Organization ID", required=True) }}
11415
GROUP BY startDate, endDate
11516
ORDER BY startDate
Lines changed: 6 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,16 @@
11
DESCRIPTION >
2-
Contributor count timeseries for a given organization, bucketed by granularity.
3-
Filters to activities where the member belongs to the given org.
2+
Contributor count timeseries for a given organization, bucketed by year (all-time).
43

54
TAGS "Organization page"
65

7-
NODE org_page_contributors_bounds
8-
SQL >
9-
%
10-
SELECT min(timestamp) AS actual_start_date, max(timestamp) AS actual_end_date
11-
FROM activityRelations_deduplicated_cleaned_bucket_union
12-
WHERE
13-
organizationId = {{ String(orgId, '', description="Organization ID", required=True) }}
14-
{% if defined(startDate) %}
15-
AND timestamp >= {{ DateTime(startDate, description="Filter activity timestamp after") }}
16-
{% end %}
17-
{% if defined(endDate) %}
18-
AND timestamp < {{ DateTime(endDate, description="Filter activity timestamp before") }}
19-
{% end %}
20-
216
NODE org_page_contributors_timeseries_data
227
SQL >
238
%
249
SELECT
25-
CASE
26-
WHEN {{ String(granularity, 'monthly') }} = 'daily'
27-
THEN toDate(addDays(bounds.actual_start_date, numbers.number))
28-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
29-
THEN toStartOfWeek(addDays(bounds.actual_start_date, numbers.number * 7))
30-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
31-
THEN toStartOfMonth(addMonths(bounds.actual_start_date, numbers.number))
32-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
33-
THEN toStartOfQuarter(addMonths(bounds.actual_start_date, numbers.number * 3))
34-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
35-
THEN toStartOfYear(addYears(bounds.actual_start_date, numbers.number))
36-
END AS startDate,
37-
CASE
38-
WHEN {{ String(granularity, 'monthly') }} = 'daily'
39-
THEN toDate(addDays(bounds.actual_start_date, numbers.number))
40-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
41-
THEN
42-
toDate(
43-
toStartOfWeek(addDays(bounds.actual_start_date, numbers.number * 7))
44-
+ INTERVAL 6 DAY
45-
)
46-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
47-
THEN
48-
toDate(
49-
toStartOfMonth(addMonths(bounds.actual_start_date, numbers.number))
50-
+ INTERVAL 1 MONTH
51-
- INTERVAL 1 DAY
52-
)
53-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
54-
THEN
55-
toDate(
56-
toStartOfQuarter(addMonths(bounds.actual_start_date, numbers.number * 3))
57-
+ INTERVAL 3 MONTH
58-
- INTERVAL 1 DAY
59-
)
60-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
61-
THEN
62-
toDate(
63-
toStartOfYear(addYears(bounds.actual_start_date, numbers.number))
64-
+ INTERVAL 1 YEAR
65-
- INTERVAL 1 DAY
66-
)
67-
END AS endDate,
68-
uniqExact(af.memberId) AS contributorCount
69-
FROM numbers(1000) numbers
70-
CROSS JOIN
71-
(
72-
SELECT
73-
CASE
74-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
75-
THEN toStartOfWeek(actual_start_date)
76-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
77-
THEN toStartOfMonth(actual_start_date)
78-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
79-
THEN toStartOfQuarter(actual_start_date)
80-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
81-
THEN toStartOfYear(actual_start_date)
82-
ELSE actual_start_date
83-
END AS actual_start_date,
84-
actual_end_date
85-
FROM org_page_contributors_bounds
86-
) bounds
87-
LEFT JOIN
88-
activityRelations_deduplicated_cleaned_bucket_union af
89-
ON organizationId = {{ String(orgId, '') }}
90-
AND CASE
91-
WHEN {{ String(granularity, 'monthly') }} = 'daily'
92-
THEN toDate(af.timestamp)
93-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
94-
THEN toStartOfWeek(af.timestamp)
95-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
96-
THEN toStartOfMonth(af.timestamp)
97-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
98-
THEN toStartOfQuarter(af.timestamp)
99-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
100-
THEN toStartOfYear(af.timestamp)
101-
END = CASE
102-
WHEN {{ String(granularity, 'monthly') }} = 'daily'
103-
THEN toDate(addDays(bounds.actual_start_date, numbers.number))
104-
WHEN {{ String(granularity, 'monthly') }} = 'weekly'
105-
THEN toStartOfWeek(addDays(bounds.actual_start_date, numbers.number * 7))
106-
WHEN {{ String(granularity, 'monthly') }} = 'monthly'
107-
THEN toStartOfMonth(addMonths(bounds.actual_start_date, numbers.number))
108-
WHEN {{ String(granularity, 'monthly') }} = 'quarterly'
109-
THEN toStartOfQuarter(addMonths(bounds.actual_start_date, numbers.number * 3))
110-
WHEN {{ String(granularity, 'monthly') }} = 'yearly'
111-
THEN toStartOfYear(addYears(bounds.actual_start_date, numbers.number))
112-
END
113-
WHERE startDate >= bounds.actual_start_date AND startDate < bounds.actual_end_date
10+
toStartOfYear(timestamp) AS startDate,
11+
toDate(toStartOfYear(timestamp) + INTERVAL 1 YEAR - INTERVAL 1 DAY) AS endDate,
12+
uniqExact(memberId) AS contributorCount
13+
FROM activityRelations_deduplicated_cleaned_bucket_union
14+
WHERE organizationId = {{ String(orgId, '', description="Organization ID", required=True) }}
11415
GROUP BY startDate, endDate
11516
ORDER BY startDate

0 commit comments

Comments
 (0)