From 22c32913c7fd5420a456c3f1a263afd3bc31fa5a Mon Sep 17 00:00:00 2001 From: frank-zsy Date: Thu, 18 Jan 2024 15:32:45 +0800 Subject: [PATCH] fix: fix agg func for community openrank Signed-off-by: frank-zsy --- labeled_data/bot/index.yml | 2 +- src/metrics/indices.ts | 60 ++++++++++++++++++++++---------------- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/labeled_data/bot/index.yml b/labeled_data/bot/index.yml index 6eaa373d7..965c98dd0 100644 --- a/labeled_data/bot/index.yml +++ b/labeled_data/bot/index.yml @@ -1,4 +1,4 @@ -name: GitHub Bot +name: Bot Accounts type: Bot data: platforms: diff --git a/src/metrics/indices.ts b/src/metrics/indices.ts index eefe67452..534c0d5fb 100644 --- a/src/metrics/indices.ts +++ b/src/metrics/indices.ts @@ -107,40 +107,50 @@ SELECT FROM ( SELECT - ${getGroupIdClause(config)}, - time, + id, argMax(name, time) AS name, platform, time, ${limit > 0 ? `arraySlice(groupArray((platform, actor_id, actor_login, openrank)), 1, ${limit}) AS openrank` : `groupArray((platform, actor_id, actor_login, openrank)) AS openrank`} FROM ( SELECT - ${getGroupTimeClause(config, 'g.created_at')}, - g.platform AS platform, - g.repo_id AS repo_id, - argMax(g.repo_name, time) AS repo_name, - argMax(g.org_id, time) AS org_id, - argMax(g.org_login, time) AS org_login, - c.actor_id AS actor_id, - argMax(c.actor_login, time) AS actor_login, - SUM(c.openrank * g.openrank / r.openrank) AS openrank + ${getGroupIdClause(config, 'repo', 'time')}, + time, + platform, + actor_id, + argMax(actor_login, time) AS actor_login, + SUM(openrank) AS openrank FROM - (SELECT * FROM community_openrank WHERE ${whereClause.join(' AND ')}) c, - (SELECT * FROM global_openrank WHERE ${whereClause.join(' AND ')}) g, - (SELECT repo_id, platform, created_at, SUM(openrank) AS openrank FROM community_openrank WHERE actor_id > 0 AND ${whereClause.join(' AND ')} GROUP BY repo_id, platform, created_at) r - WHERE - c.actor_id > 0 - AND c.repo_id = g.repo_id - AND c.platform = g.platform - AND c.created_at = g.created_at - AND g.repo_id = r.repo_id - AND g.platform = r.platform - AND g.created_at = r.created_at - GROUP BY - platform, repo_id, actor_id, time + ( + SELECT + ${getGroupTimeClause(config, 'g.created_at')}, + g.platform AS platform, + g.repo_id AS repo_id, + argMax(g.repo_name, time) AS repo_name, + argMax(g.org_id, time) AS org_id, + argMax(g.org_login, time) AS org_login, + c.actor_id AS actor_id, + argMax(c.actor_login, time) AS actor_login, + SUM(c.openrank * g.openrank / r.openrank) AS openrank + FROM + (SELECT * FROM community_openrank WHERE ${whereClause.join(' AND ')}) c, + (SELECT * FROM global_openrank WHERE ${whereClause.join(' AND ')}) g, + (SELECT repo_id, platform, created_at, SUM(openrank) AS openrank FROM community_openrank WHERE actor_id > 0 AND ${whereClause.join(' AND ')} GROUP BY repo_id, platform, created_at) r + WHERE + c.actor_id > 0 + AND c.repo_id = g.repo_id + AND c.platform = g.platform + AND c.created_at = g.created_at + AND g.repo_id = r.repo_id + AND g.platform = r.platform + AND g.created_at = r.created_at + GROUP BY + platform, repo_id, actor_id, time + ) data + GROUP BY id, actor_id, platform, time ORDER BY openrank DESC ) - GROUP BY id, platform, time + GROUP BY id, platform, time ) GROUP BY id, platform ${getOutterOrderAndLimit({ ...config, order: undefined }, 'openrank')}