From 7cd448178160d90d53c0e0196ceac1788c0f476a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Fri, 19 Sep 2025 13:14:43 +0100 Subject: [PATCH 01/12] feat: allow filtering contributions and collaborations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- .../tinybird/pipes/activities_filtered.pipe | 14 ++++---- ...activities_filtered_historical_cutoff.pipe | 7 ++-- .../pipes/activities_filtered_retention.pipe | 7 ++-- .../pipes/activityTypes_filtered.pipe | 35 +++++++++++++++++++ .../health_score_active_contributors.pipe | 3 +- .../health_score_contributor_dependency.pipe | 3 +- .../health_score_organization_dependency.pipe | 3 +- .../pipes/segmentId_aggregates_mv.pipe | 2 +- 8 files changed, 54 insertions(+), 20 deletions(-) create mode 100644 services/libs/tinybird/pipes/activityTypes_filtered.pipe diff --git a/services/libs/tinybird/pipes/activities_filtered.pipe b/services/libs/tinybird/pipes/activities_filtered.pipe index e042c1c8c5..071b7107eb 100644 --- a/services/libs/tinybird/pipes/activities_filtered.pipe +++ b/services/libs/tinybird/pipes/activities_filtered.pipe @@ -2,18 +2,17 @@ DESCRIPTION > - `activities_filtered.pipe` is the core filtering infrastructure pipe for activity data across the entire analytics platform. - This pipe serves as the foundation for most activity-related widgets, by providing a consistent, filtered view of contribution activities. - It filters activities from `activityRelations_deduplicated_cleaned_ds` datasource based on project segment, time ranges, repositories, platforms, and activity types. - - By default, this pipe returns only contribution activities (`isContribution = 1`) unless explicitly overridden with `onlyContributions = 0`. - The pipe automatically scopes data to the current project using `segments_filtered` pipe for security and data isolation. - Parameters: - `project`: Inherited from `segments_filtered`, project slug (e.g., 'k8s', 'tensorflow') - - `repos`: Inherited from `segments_filtered`, array of repository URLs for filtering + - `repos`: Optional array of repository URLs for filtering (e.g., ['https://github.com/kubernetes/kubernetes']). Inherited from `segments_filtered`. - `startDate`: Optional DateTime filter for activities after timestamp (e.g., '2024-01-01 00:00:00') - `endDate`: Optional DateTime filter for activities before timestamp (e.g., '2024-12-31 23:59:59') - - `repos`: Optional array of repository URLs (e.g., ['https://github.com/kubernetes/kubernetes']) - `platform`: Optional string filter for source platform (e.g., 'github', 'discord', 'slack') - `activity_type`: Optional string filter for single activity type (e.g., 'authored-commit') - `activity_types`: Optional array of activity types (e.g., ['authored-commit', 'co-authored-commit']) - - `onlyContributions`: Optional boolean, defaults to 1 (contributions only), set to 0 for all activities + - `includeCodeContributions`: Optional boolean to include code contribution activities. Defaults to 1. Set to 0 to exclude. Inherited from activityTypes_filtered. + - `includeCollaborations`: Optional boolean to include or exclude collaboration activities. Inherited from activityTypes_filtered. - Response: `id` (activityId), `timestamp`, `type`, `platform`, `memberId`, `organizationId`, `segmentId`. - This pipe is consumed by many of downstream pipes and widgets across the platform for consistent activity filtering. - Performance is optimized through proper sorting keys on `segmentId`, `timestamp`, `type`, `platform`, and `memberId` in the source datasource. @@ -41,10 +40,9 @@ SQL > AND a.platform = {{ String(platform, description="Filter activity platform", required=False) }} {% end %} - {% if ( - not defined(onlyContributions) - or (defined(onlyContributions) and onlyContributions == 1) - ) %} AND a.isContribution {% end %} + {% if defined(includeCodeContributions) or defined(includeCollaborations) %} + AND (a.type, a.platform) IN (SELECT activityType, platform FROM activityTypes_filtered) + {% end %} {% if defined(activity_type) %} AND a.type = {{ String(activity_type, description="Filter activity type", required=False) }} {% end %} diff --git a/services/libs/tinybird/pipes/activities_filtered_historical_cutoff.pipe b/services/libs/tinybird/pipes/activities_filtered_historical_cutoff.pipe index 225bdf47ce..f32c5b15ca 100644 --- a/services/libs/tinybird/pipes/activities_filtered_historical_cutoff.pipe +++ b/services/libs/tinybird/pipes/activities_filtered_historical_cutoff.pipe @@ -14,7 +14,8 @@ DESCRIPTION > - `platform`: Optional string filter for source platform (e.g., 'github', 'discord', 'slack') - `activity_type`: Optional string filter for single activity type (e.g., 'authored-commit') - `activity_types`: Optional array of activity types (e.g., ['authored-commit', 'co-authored-commit']) - - `onlyContributions`: Optional boolean, defaults to 1 (contributions only), set to 0 for all activities + - `includeCodeContributions`: Optional boolean to include code contribution activities. Defaults to 1. Set to 0 to exclude. Inherited from activityTypes_filtered. + - `includeCollaborations`: Optional boolean to include or exclude collaboration activities. Inherited from activityTypes_filtered. - Response: `id` (activityId), `timestamp`, `type`, `platform`, `memberId`, `organizationId`, `segmentId`. NODE activities_filtered_by_timestamp_and_channel @@ -41,9 +42,7 @@ SQL > AND a.platform = {{ String(platform, description="Filter activity platform", required=False) }} {% end %} - {% if not defined(onlyContributions) or ( - defined(onlyContributions) and onlyContributions == 1 - ) %} AND a.isContribution {% end %} + AND (a.type, a.platform) IN (SELECT activityType, platform FROM activityTypes_filtered) {% if defined(activity_type) %} AND a.type = {{ String(activity_type, description="Filter activity type", required=False) }} {% end %} diff --git a/services/libs/tinybird/pipes/activities_filtered_retention.pipe b/services/libs/tinybird/pipes/activities_filtered_retention.pipe index 5d41ffd664..1a48d372bd 100644 --- a/services/libs/tinybird/pipes/activities_filtered_retention.pipe +++ b/services/libs/tinybird/pipes/activities_filtered_retention.pipe @@ -13,7 +13,8 @@ DESCRIPTION > - `platform`: Optional string filter for source platform (e.g., 'github', 'discord', 'slack') - `activity_type`: Optional string filter for single activity type (e.g., 'authored-commit') - `activity_types`: Optional array of activity types (e.g., ['authored-commit', 'co-authored-commit']) - - `onlyContributions`: Optional boolean, defaults to 1 (contributions only), set to 0 for all activities + - `includeCodeContributions`: Optional boolean to include code contribution activities. Defaults to 1. Set to 0 to exclude. Inherited from activityTypes_filtered. + - `includeCollaborations`: Optional boolean to include or exclude collaboration activities. Inherited from activityTypes_filtered. - `granularity`: Required string for time aggregation and period extension ('daily', 'weekly', 'monthly', 'quarterly', 'yearly') - Response: `id` (activityId), `timestamp`, `type`, `platform`, `memberId`, `organizationId`, `segmentId`. @@ -57,9 +58,7 @@ SQL > AND a.platform = {{ String(platform, description="Filter activity platform", required=False) }} {% end %} - {% if not defined(onlyContributions) or ( - defined(onlyContributions) and onlyContributions == 1 - ) %} AND a.isContribution {% end %} + AND (a.type, a.platform) IN (SELECT activityType, platform FROM activityTypes_filtered) {% if defined(activity_type) %} AND a.type = {{ String(activity_type, description="Filter activity type", required=False) }} {% end %} diff --git a/services/libs/tinybird/pipes/activityTypes_filtered.pipe b/services/libs/tinybird/pipes/activityTypes_filtered.pipe new file mode 100644 index 0000000000..181a89c581 --- /dev/null +++ b/services/libs/tinybird/pipes/activityTypes_filtered.pipe @@ -0,0 +1,35 @@ +DESCRIPTION > + - `activityTypes_filtered.pipe` allows filtering activityTypes from the respective data source. + - By default, this only returns code contribution activities (`includeCodeContributions = 1`). + - Parameters: + - `includeCodeContributions`: Optional boolean to include code contribution activities. Defaults to 1. Set to 0 to exclude. + - `includeCollaborations`: Optional boolean to include or exclude collaboration activities. + - Response: `activityType`, `platform`. + - This pipe is used by other downstream pipes as an auxiliary method of filtering data by activity types. + +NODE activityTypes_selected +SQL > + % + SELECT activityType, platform + FROM activityTypes + WHERE ( + -- If neither parameter is defined, default to including code contributions. + {% if not defined(includeCodeContributions) and not defined(includeCollaborations) %} + isCodeContribution = 1 + {% else %} + + -- Start with a false literal to safely prepend OR clauses in the next statements, + -- even if the previous guard didn't output anything. + 0 + + {% if defined(includeCodeContributions) %} + OR ({{ UInt8(includeCodeContributions, description="Include code contribution activities", required=False) }} = 1 + AND isCodeContribution = 1) + {% endif %} + + {% if defined(includeCollaborations) %} + OR ({{ UInt8(includeCollaborations, description="Include non-code collaboration activities", required=False) }} = 1 + AND isCollaboration = 1) + {% endif %} + {% endif %} + ) diff --git a/services/libs/tinybird/pipes/health_score_active_contributors.pipe b/services/libs/tinybird/pipes/health_score_active_contributors.pipe index 2877947c04..54e45d2a8c 100644 --- a/services/libs/tinybird/pipes/health_score_active_contributors.pipe +++ b/services/libs/tinybird/pipes/health_score_active_contributors.pipe @@ -7,7 +7,8 @@ SQL > SELECT segmentId, COALESCE(uniq(memberId), 0) AS activeContributors FROM activityRelations_deduplicated_cleaned_ds WHERE - memberId != '' AND isContribution + memberId != '' + AND (type, platform) IN (SELECT activityType, platform FROM activityTypes_filtered) {% if defined(project) %} AND segmentId = (SELECT segmentId FROM segments_filtered) {% if defined(repos) %} diff --git a/services/libs/tinybird/pipes/health_score_contributor_dependency.pipe b/services/libs/tinybird/pipes/health_score_contributor_dependency.pipe index de7f76b5d5..440f51cebf 100644 --- a/services/libs/tinybird/pipes/health_score_contributor_dependency.pipe +++ b/services/libs/tinybird/pipes/health_score_contributor_dependency.pipe @@ -4,7 +4,8 @@ SQL > SELECT segmentId, memberId, count() AS contributionCount, MIN(timestamp), MAX(timestamp) FROM activityRelations_deduplicated_cleaned_ds WHERE - memberId != '' AND isContribution + memberId != '' + AND (type, platform) IN (SELECT activityType, platform FROM activityTypes_filtered) {% if defined(project) %} AND segmentId = (SELECT segmentId FROM segments_filtered) {% if defined(repos) %} diff --git a/services/libs/tinybird/pipes/health_score_organization_dependency.pipe b/services/libs/tinybird/pipes/health_score_organization_dependency.pipe index b0a8b2827a..2ad37b82ef 100644 --- a/services/libs/tinybird/pipes/health_score_organization_dependency.pipe +++ b/services/libs/tinybird/pipes/health_score_organization_dependency.pipe @@ -4,7 +4,8 @@ SQL > SELECT segmentId, organizationId, count() AS contributionCount FROM activityRelations_deduplicated_cleaned_ds WHERE - organizationId != '' AND isContribution + organizationId != '' + AND (type, platform) IN (SELECT activityType, platform FROM activityTypes_filtered) {% if defined(project) %} AND segmentId = (SELECT segmentId FROM segments_filtered) {% if defined(repos) %} diff --git a/services/libs/tinybird/pipes/segmentId_aggregates_mv.pipe b/services/libs/tinybird/pipes/segmentId_aggregates_mv.pipe index 80e7b53e47..39ca095081 100644 --- a/services/libs/tinybird/pipes/segmentId_aggregates_mv.pipe +++ b/services/libs/tinybird/pipes/segmentId_aggregates_mv.pipe @@ -8,5 +8,5 @@ SQL > countDistinctState(memberId) AS contributorCount, countDistinctState(organizationId) AS organizationCount FROM activityRelations_deduplicated_cleaned_ds - WHERE isContribution = true + WHERE (type, platform) IN (SELECT activityType, platform FROM activityTypes_filtered) GROUP BY segmentId From 2a4d73ae5fcf23add3da97488c6a9eeb7a8025fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:07:17 +0100 Subject: [PATCH 02/12] fix: fix wrong template tag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- services/libs/tinybird/pipes/activityTypes_filtered.pipe | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/libs/tinybird/pipes/activityTypes_filtered.pipe b/services/libs/tinybird/pipes/activityTypes_filtered.pipe index 181a89c581..778b96e878 100644 --- a/services/libs/tinybird/pipes/activityTypes_filtered.pipe +++ b/services/libs/tinybird/pipes/activityTypes_filtered.pipe @@ -25,11 +25,11 @@ SQL > {% if defined(includeCodeContributions) %} OR ({{ UInt8(includeCodeContributions, description="Include code contribution activities", required=False) }} = 1 AND isCodeContribution = 1) - {% endif %} + {% end %} {% if defined(includeCollaborations) %} OR ({{ UInt8(includeCollaborations, description="Include non-code collaboration activities", required=False) }} = 1 AND isCollaboration = 1) - {% endif %} - {% endif %} + {% end %} + {% end %} ) From 2b8749fb99d0168ba515e35944017a421519285a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:12:15 +0100 Subject: [PATCH 03/12] fix: satisfy tb fmt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- .../pipes/activityTypes_filtered.pipe | 52 ++++++++++++------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/services/libs/tinybird/pipes/activityTypes_filtered.pipe b/services/libs/tinybird/pipes/activityTypes_filtered.pipe index 778b96e878..9ed842905d 100644 --- a/services/libs/tinybird/pipes/activityTypes_filtered.pipe +++ b/services/libs/tinybird/pipes/activityTypes_filtered.pipe @@ -12,24 +12,36 @@ SQL > % SELECT activityType, platform FROM activityTypes - WHERE ( - -- If neither parameter is defined, default to including code contributions. - {% if not defined(includeCodeContributions) and not defined(includeCollaborations) %} - isCodeContribution = 1 - {% else %} - - -- Start with a false literal to safely prepend OR clauses in the next statements, - -- even if the previous guard didn't output anything. - 0 - - {% if defined(includeCodeContributions) %} - OR ({{ UInt8(includeCodeContributions, description="Include code contribution activities", required=False) }} = 1 - AND isCodeContribution = 1) - {% end %} - - {% if defined(includeCollaborations) %} - OR ({{ UInt8(includeCollaborations, description="Include non-code collaboration activities", required=False) }} = 1 - AND isCollaboration = 1) + WHERE + ( + -- If neither parameter is defined, default to including code contributions. + {% if not defined(includeCodeContributions) and not defined(includeCollaborations) %} + isCodeContribution = 1 + {% else %} + -- Start with a false literal to safely prepend OR clauses in the next statements, + -- even if the previous guard didn't output anything. + 0 + {% if defined(includeCodeContributions) %} + OR ( + {{ + UInt8( + includeCodeContributions, + description="Include code contribution activities", + required=False, + ) + }} = 1 AND isCodeContribution = 1 + ) + {% end %} + {% if defined(includeCollaborations) %} + OR ( + {{ + UInt8( + includeCollaborations, + description="Include non-code collaboration activities", + required=False, + ) + }} = 1 AND isCollaboration = 1 + ) + {% end %} {% end %} - {% end %} - ) + ) From 8470457f78db4b99806c6d27a44eb8e9c56d143a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:15:45 +0100 Subject: [PATCH 04/12] fix: fix defaulting to code contributions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- services/libs/tinybird/pipes/activities_filtered.pipe | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/services/libs/tinybird/pipes/activities_filtered.pipe b/services/libs/tinybird/pipes/activities_filtered.pipe index 071b7107eb..0429ff2d5c 100644 --- a/services/libs/tinybird/pipes/activities_filtered.pipe +++ b/services/libs/tinybird/pipes/activities_filtered.pipe @@ -40,9 +40,7 @@ SQL > AND a.platform = {{ String(platform, description="Filter activity platform", required=False) }} {% end %} - {% if defined(includeCodeContributions) or defined(includeCollaborations) %} - AND (a.type, a.platform) IN (SELECT activityType, platform FROM activityTypes_filtered) - {% end %} + AND (a.type, a.platform) IN (SELECT activityType, platform FROM activityTypes_filtered) {% if defined(activity_type) %} AND a.type = {{ String(activity_type, description="Filter activity type", required=False) }} {% end %} From 8d814bbc3e7ced5bbe73d3c162a417a6efa3590e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:53:00 +0100 Subject: [PATCH 05/12] fix: tb formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- .../tinybird/pipes/activities_filtered_historical_cutoff.pipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/libs/tinybird/pipes/activities_filtered_historical_cutoff.pipe b/services/libs/tinybird/pipes/activities_filtered_historical_cutoff.pipe index f32c5b15ca..afb7a3a868 100644 --- a/services/libs/tinybird/pipes/activities_filtered_historical_cutoff.pipe +++ b/services/libs/tinybird/pipes/activities_filtered_historical_cutoff.pipe @@ -42,7 +42,7 @@ SQL > AND a.platform = {{ String(platform, description="Filter activity platform", required=False) }} {% end %} - AND (a.type, a.platform) IN (SELECT activityType, platform FROM activityTypes_filtered) + AND (a.type, a.platform) IN (SELECT activityType, platform FROM activityTypes_filtered) {% if defined(activity_type) %} AND a.type = {{ String(activity_type, description="Filter activity type", required=False) }} {% end %} From ccf966da30e760003fa970b133a7f13a75d1e169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Tue, 30 Sep 2025 16:34:11 +0100 Subject: [PATCH 06/12] chore: filter top contributors and top organizations by activity type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- .../tinybird/pipes/top_member_org_copy.pipe | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/services/libs/tinybird/pipes/top_member_org_copy.pipe b/services/libs/tinybird/pipes/top_member_org_copy.pipe index 337910c5b2..5c5a14546f 100644 --- a/services/libs/tinybird/pipes/top_member_org_copy.pipe +++ b/services/libs/tinybird/pipes/top_member_org_copy.pipe @@ -17,7 +17,14 @@ NODE top_member_org_copy_member_activity_count SQL > SELECT memberId, count(*) AS activityCount FROM activityRelations_deduplicated_cleaned_ds - WHERE (timestamp >= (now() - toIntervalYear(10))) AND (timestamp < now()) + WHERE + (timestamp >= (now() - toIntervalYear(10))) + AND (timestamp < now()) + AND (type, platform) IN ( + SELECT activityType, platform + FROM activityTypes_filtered at + WHERE at.isCodeContribution = true OR at.isCollaboration = true + ) GROUP BY memberId ORDER BY activityCount DESC LIMIT 100 @@ -41,7 +48,15 @@ NODE top_member_org_copy_organization_activity_count SQL > SELECT organizationId, count(*) AS activityCount FROM activityRelations_deduplicated_cleaned_ds - WHERE (timestamp >= (now() - toIntervalYear(10))) AND (timestamp < now()) AND organizationId != '' + WHERE + (timestamp >= (now() - toIntervalYear(10))) + AND (timestamp < now()) + AND organizationId != '' + AND (type, platform) IN ( + SELECT activityType, platform + FROM activityTypes_filtered at + WHERE at.isCodeContribution = true OR at.isCollaboration = true + ) GROUP BY organizationId ORDER BY activityCount DESC LIMIT 100 From ed991355d7853ea12315d76a339707381892a793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Tue, 30 Sep 2025 17:37:54 +0100 Subject: [PATCH 07/12] fix: allow including other contributions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- .../tinybird/pipes/activityTypes_filtered.pipe | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/services/libs/tinybird/pipes/activityTypes_filtered.pipe b/services/libs/tinybird/pipes/activityTypes_filtered.pipe index 9ed842905d..584b3335b4 100644 --- a/services/libs/tinybird/pipes/activityTypes_filtered.pipe +++ b/services/libs/tinybird/pipes/activityTypes_filtered.pipe @@ -1,9 +1,11 @@ DESCRIPTION > - `activityTypes_filtered.pipe` allows filtering activityTypes from the respective data source. - By default, this only returns code contribution activities (`includeCodeContributions = 1`). + - To return all activities, set `includeCodeContributions = 1`, `includeCollaborations = 1`, and `includeOtherContributions = 1`. - Parameters: - `includeCodeContributions`: Optional boolean to include code contribution activities. Defaults to 1. Set to 0 to exclude. - `includeCollaborations`: Optional boolean to include or exclude collaboration activities. + - `includeOtherContributions`: Optional boolean to include other contribution activities (activities that are neither code contributions nor collaborations). - Response: `activityType`, `platform`. - This pipe is used by other downstream pipes as an auxiliary method of filtering data by activity types. @@ -14,8 +16,8 @@ SQL > FROM activityTypes WHERE ( - -- If neither parameter is defined, default to including code contributions. - {% if not defined(includeCodeContributions) and not defined(includeCollaborations) %} + -- If no parameters are defined, default to including code contributions. + {% if not defined(includeCodeContributions) and not defined(includeCollaborations) and not defined(includeOtherContributions) %} isCodeContribution = 1 {% else %} -- Start with a false literal to safely prepend OR clauses in the next statements, @@ -43,5 +45,16 @@ SQL > }} = 1 AND isCollaboration = 1 ) {% end %} + {% if defined(includeOtherContributions) %} + OR ( + {{ + UInt8( + includeOtherContributions, + description="Include other contribution activities", + required=False, + ) + }} = 1 AND isCodeContribution = 0 AND isCollaboration = 0 + ) + {% end %} {% end %} ) From 830fc280980b94923ca8f01ffbeb314e09c82679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:32:00 +0100 Subject: [PATCH 08/12] fix: fix filtering by activity type in top_member_org_copy.pipe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- services/libs/tinybird/pipes/top_member_org_copy.pipe | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/libs/tinybird/pipes/top_member_org_copy.pipe b/services/libs/tinybird/pipes/top_member_org_copy.pipe index 5c5a14546f..223f30a6f3 100644 --- a/services/libs/tinybird/pipes/top_member_org_copy.pipe +++ b/services/libs/tinybird/pipes/top_member_org_copy.pipe @@ -22,8 +22,8 @@ SQL > AND (timestamp < now()) AND (type, platform) IN ( SELECT activityType, platform - FROM activityTypes_filtered at - WHERE at.isCodeContribution = true OR at.isCollaboration = true + FROM activityTypes + WHERE isCodeContribution = 1 OR isCollaboration = 1 ) GROUP BY memberId ORDER BY activityCount DESC @@ -54,8 +54,8 @@ SQL > AND organizationId != '' AND (type, platform) IN ( SELECT activityType, platform - FROM activityTypes_filtered at - WHERE at.isCodeContribution = true OR at.isCollaboration = true + FROM activityTypes + WHERE isCodeContribution = 1 OR isCollaboration = 1 ) GROUP BY organizationId ORDER BY activityCount DESC From f222cc84d411b2a9c69be7ee438d2ba5c2d00224 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:09:24 +0100 Subject: [PATCH 09/12] fix: fix pipe formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- services/libs/tinybird/pipes/activityTypes_filtered.pipe | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/libs/tinybird/pipes/activityTypes_filtered.pipe b/services/libs/tinybird/pipes/activityTypes_filtered.pipe index 584b3335b4..d0f48a439e 100644 --- a/services/libs/tinybird/pipes/activityTypes_filtered.pipe +++ b/services/libs/tinybird/pipes/activityTypes_filtered.pipe @@ -17,8 +17,9 @@ SQL > WHERE ( -- If no parameters are defined, default to including code contributions. - {% if not defined(includeCodeContributions) and not defined(includeCollaborations) and not defined(includeOtherContributions) %} - isCodeContribution = 1 + {% if not defined(includeCodeContributions) and not defined( + includeCollaborations + ) and not defined(includeOtherContributions) %}isCodeContribution = 1 {% else %} -- Start with a false literal to safely prepend OR clauses in the next statements, -- even if the previous guard didn't output anything. From b10487ab9e5301d331497432930bcc790acc832f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Thu, 2 Oct 2025 19:14:04 +0100 Subject: [PATCH 10/12] chore: simplify activityTypes_filtered and make it more readable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- .../pipes/activityTypes_filtered.pipe | 52 +++---------------- 1 file changed, 8 insertions(+), 44 deletions(-) diff --git a/services/libs/tinybird/pipes/activityTypes_filtered.pipe b/services/libs/tinybird/pipes/activityTypes_filtered.pipe index d0f48a439e..c6749d920d 100644 --- a/services/libs/tinybird/pipes/activityTypes_filtered.pipe +++ b/services/libs/tinybird/pipes/activityTypes_filtered.pipe @@ -11,51 +11,15 @@ DESCRIPTION > NODE activityTypes_selected SQL > + % + WITH + {{ UInt8(includeCodeContributions, default=1) }} AS icc, + {{ UInt8(includeCollaborations, default=0) }} AS icol, + {{ UInt8(includeOtherContributions, default=0) }} AS ioc SELECT activityType, platform FROM activityTypes WHERE - ( - -- If no parameters are defined, default to including code contributions. - {% if not defined(includeCodeContributions) and not defined( - includeCollaborations - ) and not defined(includeOtherContributions) %}isCodeContribution = 1 - {% else %} - -- Start with a false literal to safely prepend OR clauses in the next statements, - -- even if the previous guard didn't output anything. - 0 - {% if defined(includeCodeContributions) %} - OR ( - {{ - UInt8( - includeCodeContributions, - description="Include code contribution activities", - required=False, - ) - }} = 1 AND isCodeContribution = 1 - ) - {% end %} - {% if defined(includeCollaborations) %} - OR ( - {{ - UInt8( - includeCollaborations, - description="Include non-code collaboration activities", - required=False, - ) - }} = 1 AND isCollaboration = 1 - ) - {% end %} - {% if defined(includeOtherContributions) %} - OR ( - {{ - UInt8( - includeOtherContributions, - description="Include other contribution activities", - required=False, - ) - }} = 1 AND isCodeContribution = 0 AND isCollaboration = 0 - ) - {% end %} - {% end %} - ) + (icc = 1 AND isCodeContribution = 1) + OR (icol = 1 AND isCollaboration = 1) + OR (ioc = 1 AND isCodeContribution = 0 AND isCollaboration = 0) From 8430f7bff566b6638e1dc2a545fb631871ad17fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Thu, 2 Oct 2025 19:16:14 +0100 Subject: [PATCH 11/12] fix: fix formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- .../libs/tinybird/pipes/activityTypes_filtered.pipe | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/services/libs/tinybird/pipes/activityTypes_filtered.pipe b/services/libs/tinybird/pipes/activityTypes_filtered.pipe index c6749d920d..42bc6a9931 100644 --- a/services/libs/tinybird/pipes/activityTypes_filtered.pipe +++ b/services/libs/tinybird/pipes/activityTypes_filtered.pipe @@ -11,15 +11,14 @@ DESCRIPTION > NODE activityTypes_selected SQL > - % WITH - {{ UInt8(includeCodeContributions, default=1) }} AS icc, - {{ UInt8(includeCollaborations, default=0) }} AS icol, - {{ UInt8(includeOtherContributions, default=0) }} AS ioc + {{ UInt8(includeCodeContributions, default=1) }} AS icc, + {{ UInt8(includeCollaborations, default=0) }} AS icol, + {{ UInt8(includeOtherContributions, default=0) }} AS ioc SELECT activityType, platform FROM activityTypes WHERE - (icc = 1 AND isCodeContribution = 1) - OR (icol = 1 AND isCollaboration = 1) - OR (ioc = 1 AND isCodeContribution = 0 AND isCollaboration = 0) + (icc = 1 AND isCodeContribution = 1) + OR (icol = 1 AND isCollaboration = 1) + OR (ioc = 1 AND isCodeContribution = 0 AND isCollaboration = 0) From 10ed24a8b7f2dfbb36dd282664df24ca75050435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos?= <4837+borfast@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:11:22 +0100 Subject: [PATCH 12/12] chore: filter activity types in segmentId_aggregates_mv.pipe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl Santos <4837+borfast@users.noreply.github.com> --- services/libs/tinybird/pipes/segmentId_aggregates_mv.pipe | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/libs/tinybird/pipes/segmentId_aggregates_mv.pipe b/services/libs/tinybird/pipes/segmentId_aggregates_mv.pipe index 39ca095081..9b643aea77 100644 --- a/services/libs/tinybird/pipes/segmentId_aggregates_mv.pipe +++ b/services/libs/tinybird/pipes/segmentId_aggregates_mv.pipe @@ -8,5 +8,10 @@ SQL > countDistinctState(memberId) AS contributorCount, countDistinctState(organizationId) AS organizationCount FROM activityRelations_deduplicated_cleaned_ds - WHERE (type, platform) IN (SELECT activityType, platform FROM activityTypes_filtered) + WHERE + (type, platform) IN ( + SELECT activityType, platform + FROM activityTypes + WHERE isCodeContribution = 1 OR isCollaboration = 1 + ) GROUP BY segmentId