|
1 | 1 | 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). |
4 | 3 |
|
5 | 4 | TAGS "Organization page" |
6 | 5 |
|
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 | | - |
21 | 6 | NODE org_page_contributors_timeseries_data |
22 | 7 | SQL > |
23 | 8 | % |
24 | 9 | 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) }} |
114 | 15 | GROUP BY startDate, endDate |
115 | 16 | ORDER BY startDate |
0 commit comments