From 6ca437a01d5256f09ca47f7c29062ddf4ea92f74 Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 17 Jun 2026 11:13:37 +0100 Subject: [PATCH 1/7] fix: downloads count for ai report Signed-off-by: Joana Maia --- .../pipes/agentic_ai_projects_list_copy.pipe | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe index 874e673b34..a2e644b3d7 100644 --- a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe +++ b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe @@ -99,18 +99,28 @@ NODE ai_package_metrics SQL > SELECT insightsProjectId, - argMax(downloadsCount, date) AS downloads, - toInt64(argMax(downloadsCount, date)) - toInt64( - argMaxIf(downloadsCount, date, date <= toDate(now() - INTERVAL 30 DAY)) + max(downloadsCount) AS downloads, + toInt64(max(downloadsCount)) - toInt64( + maxIf(downloadsCount, date <= toDate(now() - INTERVAL 30 DAY)) ) AS downloads30d, - argMax(dockerDownloadsCount, date) AS dockerPulls, - toInt64(argMax(dockerDownloadsCount, date)) - toInt64( - argMaxIf(dockerDownloadsCount, date, date <= toDate(now() - INTERVAL 30 DAY)) + max(dockerDownloadsCount) AS dockerPulls, + toInt64(max(dockerDownloadsCount)) - toInt64( + maxIf(dockerDownloadsCount, date <= toDate(now() - INTERVAL 30 DAY)) ) AS dockerPulls30d, max(dependentReposCount) AS dependentRepos, max(dependentPackagesCount) AS dependentPackages - FROM packageDownloads FINAL - WHERE insightsProjectId IN (SELECT DISTINCT insightsProjectId FROM ai_repos) + FROM ( + SELECT + insightsProjectId, + date, + argMax(downloadsCount, updatedAt) AS downloadsCount, + argMax(dockerDownloadsCount, updatedAt) AS dockerDownloadsCount, + argMax(dependentReposCount, updatedAt) AS dependentReposCount, + argMax(dependentPackagesCount, updatedAt) AS dependentPackagesCount + FROM packageDownloads + WHERE insightsProjectId IN (SELECT DISTINCT insightsProjectId FROM ai_repos WHERE insightsProjectId != '') + GROUP BY insightsProjectId, date, ecosystem, repo, name + ) GROUP BY insightsProjectId NODE pr_metrics From dece713a16d515f9e697c8d31f1c06a837d75c47 Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 17 Jun 2026 12:09:28 +0100 Subject: [PATCH 2/7] fix: formatting Signed-off-by: Joana Maia --- .../pipes/agentic_ai_projects_list_copy.pipe | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe index a2e644b3d7..adf7cde096 100644 --- a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe +++ b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe @@ -100,27 +100,29 @@ SQL > SELECT insightsProjectId, max(downloadsCount) AS downloads, - toInt64(max(downloadsCount)) - toInt64( - maxIf(downloadsCount, date <= toDate(now() - INTERVAL 30 DAY)) - ) AS downloads30d, + toInt64(max(downloadsCount)) + - toInt64(maxIf(downloadsCount, date <= toDate(now() - INTERVAL 30 DAY))) AS downloads30d, max(dockerDownloadsCount) AS dockerPulls, toInt64(max(dockerDownloadsCount)) - toInt64( maxIf(dockerDownloadsCount, date <= toDate(now() - INTERVAL 30 DAY)) ) AS dockerPulls30d, max(dependentReposCount) AS dependentRepos, max(dependentPackagesCount) AS dependentPackages - FROM ( - SELECT - insightsProjectId, - date, - argMax(downloadsCount, updatedAt) AS downloadsCount, - argMax(dockerDownloadsCount, updatedAt) AS dockerDownloadsCount, - argMax(dependentReposCount, updatedAt) AS dependentReposCount, - argMax(dependentPackagesCount, updatedAt) AS dependentPackagesCount - FROM packageDownloads - WHERE insightsProjectId IN (SELECT DISTINCT insightsProjectId FROM ai_repos WHERE insightsProjectId != '') - GROUP BY insightsProjectId, date, ecosystem, repo, name - ) + FROM + ( + SELECT + insightsProjectId, + date, + argMax(downloadsCount, updatedAt) AS downloadsCount, + argMax(dockerDownloadsCount, updatedAt) AS dockerDownloadsCount, + argMax(dependentReposCount, updatedAt) AS dependentReposCount, + argMax(dependentPackagesCount, updatedAt) AS dependentPackagesCount + FROM packageDownloads + WHERE + insightsProjectId + IN (SELECT DISTINCT insightsProjectId FROM ai_repos WHERE insightsProjectId != '') + GROUP BY insightsProjectId, date, ecosystem, repo, name + ) GROUP BY insightsProjectId NODE pr_metrics From 9f5a53389ba94ffbe75d75da2926f4028dde2462 Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 17 Jun 2026 12:18:22 +0100 Subject: [PATCH 3/7] fix: correct package metrics aggregation for ai report (IN-1182) Signed-off-by: Joana Maia --- .../pipes/agentic_ai_projects_list_copy.pipe | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe index adf7cde096..45fe25d56a 100644 --- a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe +++ b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe @@ -99,12 +99,13 @@ NODE ai_package_metrics SQL > SELECT insightsProjectId, - max(downloadsCount) AS downloads, - toInt64(max(downloadsCount)) - - toInt64(maxIf(downloadsCount, date <= toDate(now() - INTERVAL 30 DAY))) AS downloads30d, - max(dockerDownloadsCount) AS dockerPulls, - toInt64(max(dockerDownloadsCount)) - toInt64( - maxIf(dockerDownloadsCount, date <= toDate(now() - INTERVAL 30 DAY)) + argMax(downloadsCount, date) AS downloads, + toInt64(argMax(downloadsCount, date)) - toInt64( + argMaxIf(downloadsCount, date, date <= toDate(now() - INTERVAL 30 DAY)) + ) AS downloads30d, + argMax(dockerDownloadsCount, date) AS dockerPulls, + toInt64(argMax(dockerDownloadsCount, date)) - toInt64( + argMaxIf(dockerDownloadsCount, date, date <= toDate(now() - INTERVAL 30 DAY)) ) AS dockerPulls30d, max(dependentReposCount) AS dependentRepos, max(dependentPackagesCount) AS dependentPackages @@ -113,15 +114,26 @@ SQL > SELECT insightsProjectId, date, - argMax(downloadsCount, updatedAt) AS downloadsCount, - argMax(dockerDownloadsCount, updatedAt) AS dockerDownloadsCount, - argMax(dependentReposCount, updatedAt) AS dependentReposCount, - argMax(dependentPackagesCount, updatedAt) AS dependentPackagesCount - FROM packageDownloads - WHERE - insightsProjectId - IN (SELECT DISTINCT insightsProjectId FROM ai_repos WHERE insightsProjectId != '') - GROUP BY insightsProjectId, date, ecosystem, repo, name + sum(downloadsCount) AS downloadsCount, + sum(dockerDownloadsCount) AS dockerDownloadsCount, + max(dependentReposCount) AS dependentReposCount, + max(dependentPackagesCount) AS dependentPackagesCount + FROM + ( + SELECT + insightsProjectId, + date, + argMax(downloadsCount, updatedAt) AS downloadsCount, + argMax(dockerDownloadsCount, updatedAt) AS dockerDownloadsCount, + argMax(dependentReposCount, updatedAt) AS dependentReposCount, + argMax(dependentPackagesCount, updatedAt) AS dependentPackagesCount + FROM packageDownloads + WHERE + insightsProjectId + IN (SELECT DISTINCT insightsProjectId FROM ai_repos WHERE insightsProjectId != '') + GROUP BY insightsProjectId, date, ecosystem, repo, name + ) + GROUP BY insightsProjectId, date ) GROUP BY insightsProjectId From 3cd14dc23d52dadc57c8f7c933d2a011ce2f0075 Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 17 Jun 2026 12:25:56 +0100 Subject: [PATCH 4/7] fix: formatting Signed-off-by: Joana Maia --- .../libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe index 45fe25d56a..4d72c2b085 100644 --- a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe +++ b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe @@ -129,8 +129,11 @@ SQL > argMax(dependentPackagesCount, updatedAt) AS dependentPackagesCount FROM packageDownloads WHERE - insightsProjectId - IN (SELECT DISTINCT insightsProjectId FROM ai_repos WHERE insightsProjectId != '') + insightsProjectId IN ( + SELECT DISTINCT insightsProjectId + FROM ai_repos + WHERE insightsProjectId != '' + ) GROUP BY insightsProjectId, date, ecosystem, repo, name ) GROUP BY insightsProjectId, date From 900cba510d6e2f1044175f7cee66b8ebc67a5154 Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 17 Jun 2026 12:26:31 +0100 Subject: [PATCH 5/7] fix: move empty insightsProjectId filter to ai_repos node (IN-1182) Signed-off-by: Joana Maia --- .../libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe index 4d72c2b085..087c3b06f1 100644 --- a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe +++ b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe @@ -13,6 +13,7 @@ SQL > AND isNull (cr.deletedAt) AND isNull (r.deletedAt) AND r.enabled = true + AND r.insightsProjectId != '' NODE ai_projects SQL > @@ -129,11 +130,7 @@ SQL > argMax(dependentPackagesCount, updatedAt) AS dependentPackagesCount FROM packageDownloads WHERE - insightsProjectId IN ( - SELECT DISTINCT insightsProjectId - FROM ai_repos - WHERE insightsProjectId != '' - ) + insightsProjectId IN (SELECT DISTINCT insightsProjectId FROM ai_repos) GROUP BY insightsProjectId, date, ecosystem, repo, name ) GROUP BY insightsProjectId, date From 80d242404d0c7261e52feee4c6c5d88723a93048 Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 17 Jun 2026 12:27:08 +0100 Subject: [PATCH 6/7] fix: formatting Signed-off-by: Joana Maia --- .../libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe index 087c3b06f1..eda5f53bf9 100644 --- a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe +++ b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe @@ -129,8 +129,7 @@ SQL > argMax(dependentReposCount, updatedAt) AS dependentReposCount, argMax(dependentPackagesCount, updatedAt) AS dependentPackagesCount FROM packageDownloads - WHERE - insightsProjectId IN (SELECT DISTINCT insightsProjectId FROM ai_repos) + WHERE insightsProjectId IN (SELECT DISTINCT insightsProjectId FROM ai_repos) GROUP BY insightsProjectId, date, ecosystem, repo, name ) GROUP BY insightsProjectId, date From a02345921f83aac0ecbbc87e545cdfcec93169ca Mon Sep 17 00:00:00 2001 From: Joana Maia Date: Wed, 17 Jun 2026 12:32:34 +0100 Subject: [PATCH 7/7] fix: aggregate package metrics per package before summing to project (IN-1182) Signed-off-by: Joana Maia --- .../pipes/agentic_ai_projects_list_copy.pipe | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe index eda5f53bf9..524e525b4d 100644 --- a/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe +++ b/services/libs/tinybird/pipes/agentic_ai_projects_list_copy.pipe @@ -100,30 +100,34 @@ NODE ai_package_metrics SQL > SELECT insightsProjectId, - argMax(downloadsCount, date) AS downloads, - toInt64(argMax(downloadsCount, date)) - toInt64( - argMaxIf(downloadsCount, date, date <= toDate(now() - INTERVAL 30 DAY)) - ) AS downloads30d, - argMax(dockerDownloadsCount, date) AS dockerPulls, - toInt64(argMax(dockerDownloadsCount, date)) - toInt64( - argMaxIf(dockerDownloadsCount, date, date <= toDate(now() - INTERVAL 30 DAY)) - ) AS dockerPulls30d, - max(dependentReposCount) AS dependentRepos, - max(dependentPackagesCount) AS dependentPackages + sum(downloads) AS downloads, + sum(downloads30d) AS downloads30d, + sum(dockerPulls) AS dockerPulls, + sum(dockerPulls30d) AS dockerPulls30d, + max(dependentRepos) AS dependentRepos, + max(dependentPackages) AS dependentPackages FROM ( SELECT insightsProjectId, - date, - sum(downloadsCount) AS downloadsCount, - sum(dockerDownloadsCount) AS dockerDownloadsCount, - max(dependentReposCount) AS dependentReposCount, - max(dependentPackagesCount) AS dependentPackagesCount + argMax(downloadsCount, date) AS downloads, + toInt64(argMax(downloadsCount, date)) - toInt64( + argMaxIf(downloadsCount, date, date <= toDate(now() - INTERVAL 30 DAY)) + ) AS downloads30d, + argMax(dockerDownloadsCount, date) AS dockerPulls, + toInt64(argMax(dockerDownloadsCount, date)) - toInt64( + argMaxIf(dockerDownloadsCount, date, date <= toDate(now() - INTERVAL 30 DAY)) + ) AS dockerPulls30d, + max(dependentReposCount) AS dependentRepos, + max(dependentPackagesCount) AS dependentPackages FROM ( SELECT insightsProjectId, date, + ecosystem, + repo, + name, argMax(downloadsCount, updatedAt) AS downloadsCount, argMax(dockerDownloadsCount, updatedAt) AS dockerDownloadsCount, argMax(dependentReposCount, updatedAt) AS dependentReposCount, @@ -132,7 +136,7 @@ SQL > WHERE insightsProjectId IN (SELECT DISTINCT insightsProjectId FROM ai_repos) GROUP BY insightsProjectId, date, ecosystem, repo, name ) - GROUP BY insightsProjectId, date + GROUP BY insightsProjectId, ecosystem, repo, name ) GROUP BY insightsProjectId