Tous les produits
Search
Centre de documentation

MaxCompute:GitHub public event data

Dernière mise à jour :Aug 10, 2026

MaxCompute permet d'accéder aux données d'événements publics GitHub issues de GH Archive, un projet qui archive l'activité publique GitHub heure par heure. Utilisez ce jeu de données pour analyser les écosystèmes open source, suivre les tendances des langages de programmation et mesurer l'activité des projets sur des millions de référentiels.

Ce jeu de données est destiné uniquement à des tests de produit. L'exactitude des données n'est pas garantie. Ne l'utilisez pas dans un environnement de production.

Tables disponibles

Le jeu de données est stocké dans le schéma github_events du projet BIGDATA_PUBLIC_DATASET. Toutes les tables sont accessibles via des requêtes SQL inter-projets.

Nom de la table Description Cycle de mise à jour
dwd_github_events_odps Table de faits — une ligne par événement public GitHub T+1 heure
dws_overview_by_repo_month Table d'agrégation — métriques mensuelles par référentiel T+1 jour
db_repos ID et noms des projets de bases de données open source
programming_language_repos ID et noms des projets de langages de programmation open source

Les listes de projets db_repos et programming_language_repos proviennent de ossinsight.

Pour savoir comment ces données sont générées, consultez Traitement intégré des données hors ligne et en temps réel basé sur le jeu de données d'événements publics GitHub.

Schémas de table

dwd_github_events_odps

Cette table de faits stocke un enregistrement par événement public GitHub, mis à jour toutes les heures (T+1).

Nom du champ Type de données Description
id BIGINT L'ID de l'événement.
actor_id BIGINT L'ID de l'initiateur de l'événement.
actor_login STRING Le nom de connexion de l'initiateur de l'événement.
repo_id BIGINT L'ID du référentiel.
repo_name STRING Le nom du référentiel, au format owner/repository_name.
org_id BIGINT L'ID de l'organisation propriétaire du référentiel.
org_login STRING Le nom de l'organisation propriétaire du référentiel.
type STRING Le type d'événement. Pour la liste complète, consultez Types d'événements GitHub.
created_at DATETIME L'heure à laquelle l'événement s'est produit.
action STRING L'action de l'événement (par exemple, opened ou created).
iss_or_pr_id BIGINT L'ID de l'issue ou de la pull request.
number BIGINT Le numéro de séquence de l'issue ou de la pull request.
comment_id BIGINT L'ID du commentaire.
commit_id STRING L'ID du commit.
member_id BIGINT L'ID du membre.
rev_or_push_or_rel_id BIGINT L'ID de la review, du push ou de la release.
ref STRING Le nom de la ressource créée ou supprimée.
ref_type STRING Le type de la ressource créée ou supprimée.
state STRING Le statut de l'issue, de la pull request ou de la review de pull request.
author_association STRING La relation entre l'initiateur de l'événement et le référentiel.
language STRING Le langage de programmation du code dans la merge request.
merged BOOLEAN Indique si la pull request a été fusionnée.
merged_at DATETIME L'heure à laquelle le code a été fusionné.
additions BIGINT Le nombre de lignes ajoutées.
deletions BIGINT Le nombre de lignes supprimées.
changed_files BIGINT Le nombre de fichiers modifiés par la pull request.
push_size BIGINT Le nombre total de commits dans le push.
push_distinct_size BIGINT Le nombre de commits distincts dans le push.
hr STRING L'heure à laquelle l'événement s'est produit. Par exemple, un événement à 00:23 a la valeur 00.
month STRING Le mois auquel l'événement s'est produit, au format yyyy-MM. Par exemple, octobre 2015 correspond à 2015-10.
year STRING L'année à laquelle l'événement s'est produit. Par exemple, 2015.
ds STRING La date à laquelle l'événement s'est produit, au format yyyy-MM-dd.

dws_overview_by_repo_month

Cette table d'agrégation stocke les métriques mensuelles par référentiel, mises à jour tous les jours (T+1).

Nom du champ Type de données Description
repo_id BIGINT L'ID du référentiel.
repo_name STRING Le nom du référentiel, au format owner/repository_name.
stars BIGINT Le nombre d'étoiles reçues par le référentiel ce mois-là.
commits BIGINT Le nombre de commits effectués sur le référentiel ce mois-là.
pushes BIGINT Le nombre de pushes effectués sur le référentiel ce mois-là.
total_prs BIGINT Le nombre total de pull requests ce mois-là.
pr_creators BIGINT Le nombre de créateurs de pull requests ce mois-là.
pr_reviews BIGINT Le nombre de reviews de pull requests ce mois-là.
pr_reviewers BIGINT Le nombre de reviewers de pull requests ce mois-là.
total_issues BIGINT Le nombre total d'issues ce mois-là.
forks BIGINT Le nombre de forks ce mois-là.
month STRING Le mois, au format yyyy-MM. Par exemple, octobre 2015 correspond à 2015-10.

Régions disponibles

Région ID de région
Chine (Hangzhou) cn-hangzhou
Chine (Shanghai) cn-shanghai
Chine (Pékin) cn-beijing
Chine (Zhangjiakou) cn-zhangjiakou
Chine (Ulanqab) cn-wulanchabu
Chine (Shenzhen) cn-shenzhen
Chine (Chengdu) cn-chengdu

Notes d'utilisation

Les jeux de données publics sont stockés dans le projet BIGDATA_PUBLIC_DATASET. Comme vous n'êtes pas membre de ce projet, toutes les requêtes utilisent un accès inter-projets. Tenez compte des points suivants :

  • Spécifiez le chemin complet de la table dans SQL. Préfixez chaque nom de table avec le projet et le schéma : bigdata_public_dataset.github_events.<table_name>.

  • Activez la syntaxe de schéma. Si la syntaxe de schéma au niveau du locataire n'est pas activée pour votre compte, ajoutez la ligne suivante au début de chaque script SQL :

    SET odps.namespace.schema = true;
  • Le stockage est gratuit ; les requêtes sont facturées. Vous n'êtes pas facturé pour le stockage des données du jeu de données public, mais les ressources de calcul consommées par vos requêtes le sont. Pour plus de détails, consultez .

  • Data Map n'est pas disponible pour les jeux de données publics. L'accès inter-projets signifie que vous ne pouvez pas parcourir ces tables dans Data Map de DataWorks.

  • DataAnalysis de DataWorks nécessite du SQL. Si la syntaxe de schéma au niveau du locataire n'est pas activée, interrogez les données en exécutant directement des instructions SQL plutôt qu'en utilisant l'interface visuelle DataAnalysis.

Pour plus d'informations sur les opérations de schéma, consultez Opérations de schéma.

Interroger le jeu de données

Prérequis

Avant de commencer, assurez-vous d'avoir :

Outils pris en charge

Exécutez les requêtes à l'aide de l'un des outils suivants :

Exécuter votre première requête

L'exemple suivant récupère 100 lignes de la table de faits pour une date spécifique :

-- Enable session-level schema syntax if tenant-level syntax is not enabled.
SET odps.namespace.schema = true;

-- Query 100 records from May 10, 2024.
SELECT *
FROM bigdata_public_dataset.github_events.dwd_github_events_odps
WHERE ds = '2024-05-10'
LIMIT 100;

Exemples de requêtes et analyses

Les exemples suivants utilisent les tables dwd_github_events_odps et dws_overview_by_repo_month pour répondre à des questions courantes sur les bases de données open source et les langages de programmation. Tous les exemples nécessitent l'activation de la syntaxe de schéma.

Bases de données open source

Ce groupe de requêtes utilise la table de référence db_repos pour limiter les résultats aux projets de bases de données open source connus, couvrant les classements de popularité, les tendances des étoiles et l'activité des contributeurs.

Quelles étaient les bases de données open source les plus populaires de 2018 à 2022 ?

SET odps.namespace.schema = TRUE;

SELECT
  dws.repo_id AS repo_id,
  repos.name AS repo_name,
  SUM(dws.stars) AS stars
FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws
JOIN bigdata_public_dataset.github_events.db_repos repos ON dws.repo_id = repos.id
WHERE month >= '2015-01' AND month <= '2022-12'
GROUP BY dws.repo_id, repos.name
ORDER BY stars DESC
LIMIT 10;

Résultat de l'analyse : elasticsearch était le projet de base de données open source le plus populaire, suivi de redis et prometheus.

image.png

Comment les classements des principaux projets de bases de données ont-ils évolué chaque année de 2018 à 2022 ?

SET odps.namespace.schema = TRUE;
SET odps.sql.validate.orderby.limit = FALSE;

WITH tmp AS (
  SELECT
    dws.repo_id AS repo_id,
    repos.name AS repo_name,
    SUM(dws.stars) AS stars,
    SUBSTR(month, 1, 4) AS year,
    ROW_NUMBER() OVER (PARTITION BY SUBSTR(month, 1, 4) ORDER BY SUM(dws.stars) DESC) AS ranknum
  FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws
  JOIN bigdata_public_dataset.github_events.db_repos repos ON dws.repo_id = repos.id
  WHERE month >= '2018-01'
  GROUP BY dws.repo_id, repos.name, SUBSTR(month, 1, 4)
)
SELECT repo_id, repo_name, stars, ranknum, year
FROM tmp
WHERE year <= 2022 AND ranknum <= 10
ORDER BY year ASC, ranknum ASC;

Résultat de l'analyse : clickhouse a connu la croissance la plus rapide de tous les projets, passant de la dixième place en 2018 à la première en 2021. En 2022, il a été dépassé par redis, en hausse constante. taosdata/TDengine a atteint la première place en 2019, mais est tombé à la neuvième en un an.

image.png

Quelle a été l'évolution mensuelle du nombre d'étoiles pour les 10 principaux projets de bases de données de 2018 à 2022 ?

SET odps.namespace.schema = true;
SET odps.sql.validate.orderby.limit = false;

WITH top_10_repos AS (
  SELECT
    dws.repo_id AS repo_id,
    repos.name AS repo_name,
    SUM(dws.stars) AS stars
  FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws
  JOIN bigdata_public_dataset.github_events.db_repos repos ON dws.repo_id = repos.id
  WHERE month >= '2018-01' AND month <= '2022-12'
  GROUP BY dws.repo_id, repos.name
  ORDER BY stars DESC
  LIMIT 10
),
tmp AS (
  SELECT
    month,
    repo_id,
    stars,
    SUM(stars) OVER (PARTITION BY repo_id ORDER BY month ASC) AS total_stars
  FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month
  WHERE month >= '2015-01' AND stars IS NOT NULL
    AND repo_id IN (SELECT repo_id FROM top_10_repos)
  GROUP BY repo_id, month, stars
  ORDER BY month ASC, repo_id
)
SELECT
  tmp.month AS month,
  top_10_repos.repo_name AS repo_name,
  tmp.total_stars AS total_stars
FROM tmp
JOIN top_10_repos ON top_10_repos.repo_id = tmp.repo_id
GROUP BY month, repo_name, total_stars
ORDER BY month ASC, repo_name;

Résultat de l'analyse : elasticsearch a été constamment le projet de base de données le plus étoilé. clickhouse a connu une croissance cumulative rapide à partir de 2021.

image.png

Quelles bases de données étaient les plus populaires au premier semestre 2023 ?

SET odps.namespace.schema = true;

SELECT
  repos.name AS repo_name,
  SUM(dws.stars) AS stars
FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws
JOIN bigdata_public_dataset.github_events.db_repos repos ON repos.id = dws.repo_id
WHERE month >= '2023-01' AND month <= '2023-06'
GROUP BY repo_name
ORDER BY stars DESC
LIMIT 10;

Résultat de l'analyse : clickhouse était la base de données la plus populaire au premier semestre 2023, suivie de prometheus et redis.

image.png

Quelles bases de données étaient les plus activement maintenues au premier semestre 2023 ?

Cette requête mesure l'activité en comptant les événements d'ouverture de pull requests, ce qui reflète le travail de développement en cours.

SET odps.namespace.schema = true;

SELECT
  repos.name AS repo_name,
  COUNT(dwd.id) AS num
FROM bigdata_public_dataset.github_events.dwd_github_events_odps dwd
JOIN bigdata_public_dataset.github_events.db_repos repos ON repos.id = dwd.repo_id
WHERE type = 'PullRequestEvent'
  AND ds >= '2023-01-01' AND ds <= '2023-06-30'
  AND action = 'opened'
GROUP BY repos.name
ORDER BY num DESC
LIMIT 10;

Résultat de l'analyse : StarRocks était le projet de base de données open source le plus activement maintenu au premier semestre 2023.

image.png

Qui étaient les principaux contributeurs individuels au projet de base de données le plus actif ?

Cette requête compte les événements de contribution — pull requests, issues, commentaires, reviews et pushes — par contributeur pour un référentiel et une plage de temps donnés.

SET odps.namespace.schema = true;

WITH a AS (
  SELECT
    repo_id,
    repo_name,
    actor_id,
    actor_login,
    COUNT(*) AS contribution,
    ds
  FROM bigdata_public_dataset.github_events.dwd_github_events_odps
  WHERE ds >= '2021-01-01' AND ds <= '2021-12-31'
    AND (
      (type = 'PullRequestEvent' AND action = 'opened')
      OR (type = 'IssuesEvent' AND action = 'opened')
      OR (type = 'IssueCommentEvent' AND action = 'created')
      OR (type = 'PullRequestReviewEvent' AND action = 'created')
      OR (type = 'PullRequestReviewCommentEvent' AND action = 'created')
      OR (type = 'PushEvent' AND action IS NULL)
    )
  GROUP BY repo_id, repo_name, actor_id, actor_login, ds
)
SELECT
  repo_name,
  actor_login,
  SUM(contribution) AS contribution
FROM a
WHERE repo_name = 'StarRocks/starrocks'
  AND actor_login NOT LIKE '%[bot]'
  AND actor_login NOT LIKE 'cockroach%'
GROUP BY repo_name, actor_login
ORDER BY contribution DESC
LIMIT 10;

Résultat de l'analyse : kangkaisen était le principal contributeur individuel au référentiel StarRocks/starrocks en 2021.

image.png

Langages de programmation

Ce groupe de requêtes utilise la table de référence programming_language_repos pour limiter les résultats aux projets de runtime et de compilateur de langages, répondant à des questions sur les tendances d'utilisation et de popularité.

Quels étaient les 10 langages de programmation les plus utilisés au cours de l'année écoulée ?

SET odps.namespace.schema = true;

SELECT
  language,
  COUNT(*) AS total
FROM bigdata_public_dataset.github_events.dwd_github_events_odps
WHERE ds >= DATE_ADD(GETDATE(), -365)
  AND language IS NOT NULL
GROUP BY language
ORDER BY total DESC
LIMIT 10;

Résultat de l'analyse : JavaScript était le langage le plus utilisé, suivi de TypeScript et Python.

image.png

Quels projets de langages de programmation ont reçu le plus d'étoiles de 2018 à 2022 ?

SET odps.namespace.schema = TRUE;

SELECT
  dws.repo_id AS repo_id,
  repos.name AS repo_name,
  SUM(dws.stars) AS stars
FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws
JOIN bigdata_public_dataset.github_events.programming_language_repos repos ON dws.repo_id = repos.id
WHERE month >= '2015-01'
GROUP BY dws.repo_id, repos.name
ORDER BY stars DESC
LIMIT 10;

Résultat de l'analyse : Go était le projet de langage de programmation le plus populaire avec 81 642 étoiles, suivi de TypeScript et Node.

image.png

Comment les nombres cumulés d'étoiles pour les 10 principaux projets de langages ont-ils évolué mois par mois ?

SET odps.namespace.schema = true;
SET odps.sql.validate.orderby.limit = false;

WITH top_10_repos AS (
  SELECT
    dws.repo_id AS repo_id,
    repos.name AS repo_name,
    SUM(dws.stars) AS stars
  FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month dws
  JOIN bigdata_public_dataset.github_events.programming_language_repos repos ON dws.repo_id = repos.id
  WHERE month >= '2018-01' AND month <= '2022-12'
  GROUP BY dws.repo_id, repos.name
  ORDER BY stars DESC
  LIMIT 10
),
tmp AS (
  SELECT
    month,
    repo_id,
    stars,
    SUM(stars) OVER (PARTITION BY repo_id ORDER BY month ASC) AS total_stars
  FROM bigdata_public_dataset.github_events.dws_overview_by_repo_month
  WHERE month >= '2015-01' AND stars IS NOT NULL
    AND repo_id IN (SELECT repo_id FROM top_10_repos)
  GROUP BY repo_id, month, stars
  ORDER BY month ASC, repo_id
)
SELECT
  tmp.month AS month,
  top_10_repos.repo_name AS repo_name,
  tmp.total_stars AS total_stars
FROM tmp
JOIN top_10_repos ON top_10_repos.repo_id = tmp.repo_id
GROUP BY month, repo_name, total_stars
ORDER BY month ASC, repo_name;

Résultat de l'analyse : Go a connu la croissance cumulative d'étoiles la plus rapide de tous les projets de langages de programmation sur la période de cinq ans.

image.png