O MaxCompute oferece acesso a dados de eventos públicos do GitHub provenientes do GH Archive, projeto que arquiva a atividade pública do GitHub por hora. Use este conjunto de dados para analisar ecossistemas de código aberto, acompanhar tendências de linguagens de programação e medir a atividade de projetos em milhões de repositórios.
Este conjunto de dados destina-se apenas a testes do produto. A precisão dos dados não é garantida. Não o utilize em ambiente de produção.
Tabelas disponíveis
O conjunto de dados está armazenado no schema github_events do projeto BIGDATA_PUBLIC_DATASET. Todas as tabelas são acessíveis por meio de consultas SQL entre projetos.
|
Nome da tabela |
Descrição |
Ciclo de atualização |
|
|
Tabela de fatos — uma linha por evento público do GitHub |
T+1 hora |
|
|
Tabela agregada — métricas mensais por repositório |
T+1 dia |
|
|
IDs e nomes de projetos de bancos de dados open source |
— |
|
|
IDs e nomes de projetos de linguagens de programação open source |
— |
As listas de projetos db_repos e programming_language_repos têm como source o ossinsight.
Para entender como esses dados são gerados, consulte Processamento de dados offline e em tempo real integrado com base no conjunto de dados de eventos públicos do GitHub.
Schemas das tabelas
dwd_github_events_odps
Esta tabela de fatos armazena um registro por evento público do GitHub, com atualização a cada T+1 hora.
|
Nome do campo |
Tipo de dado |
Descrição |
|
|
BIGINT |
ID do evento. |
|
|
BIGINT |
ID do iniciador do evento. |
|
|
STRING |
Nome de login do iniciador do evento. |
|
|
BIGINT |
ID do repositório. |
|
|
STRING |
Nome do repositório, no formato |
|
|
BIGINT |
ID da organização proprietária do repositório. |
|
|
STRING |
Nome da organização proprietária do repositório. |
|
|
STRING |
Tipo do evento. Para a lista completa, consulte Tipos de eventos do GitHub. |
|
|
DATETIME |
Horário em que o evento ocorreu. |
|
|
STRING |
Ação do evento (por exemplo, |
|
|
BIGINT |
ID da issue ou do pull request. |
|
|
BIGINT |
Número sequencial da issue ou do pull request. |
|
|
BIGINT |
ID do comentário. |
|
|
STRING |
ID do commit. |
|
|
BIGINT |
ID do membro. |
|
|
BIGINT |
ID da revisão, push ou release. |
|
|
STRING |
Nome do recurso criado ou excluído. |
|
|
STRING |
Tipo do recurso criado ou excluído. |
|
|
STRING |
Status da issue, do pull request ou da revisão do pull request. |
|
|
STRING |
Relação entre o iniciador do evento e o repositório. |
|
|
STRING |
Linguagem de programação do código no merge request. |
|
|
BOOLEAN |
Indica se o pull request foi mesclado. |
|
|
DATETIME |
Horário em que o código foi mesclado. |
|
|
BIGINT |
Quantidade de linhas adicionadas. |
|
|
BIGINT |
Quantidade de linhas excluídas. |
|
|
BIGINT |
Quantidade de arquivos alterados pelo pull request. |
|
|
BIGINT |
Total de commits no push. |
|
|
BIGINT |
Quantidade de commits distintos no push. |
|
|
STRING |
Hora em que o evento ocorreu. Por exemplo, um evento às |
|
|
STRING |
Mês em que o evento ocorreu, no formato |
|
|
STRING |
Ano em que o evento ocorreu. Por exemplo, |
|
|
STRING |
Data em que o evento ocorreu, no formato |
dws_overview_by_repo_month
Esta tabela agregada armazena métricas mensais por repositório, com atualização a cada T+1 dia.
|
Nome do campo |
Tipo de dado |
Descrição |
|
|
BIGINT |
ID do repositório. |
|
|
STRING |
Nome do repositório, no formato |
|
|
BIGINT |
Quantidade de estrelas recebidas pelo repositório naquele mês. |
|
|
BIGINT |
Quantidade de commits no repositório naquele mês. |
|
|
BIGINT |
Quantidade de pushes no repositório naquele mês. |
|
|
BIGINT |
Total de pull requests naquele mês. |
|
|
BIGINT |
Quantidade de criadores de pull requests naquele mês. |
|
|
BIGINT |
Quantidade de revisões de pull requests naquele mês. |
|
|
BIGINT |
Quantidade de revisores de pull requests naquele mês. |
|
|
BIGINT |
Total de issues naquele mês. |
|
|
BIGINT |
Quantidade de forks naquele mês. |
|
|
STRING |
Mês, no formato |
Regiões disponíveis
|
Região |
ID da região |
|
China (Hangzhou) |
cn-hangzhou |
|
China (Shanghai) |
cn-shanghai |
|
China (Beijing) |
cn-beijing |
|
China (Zhangjiakou) |
cn-zhangjiakou |
|
China (Ulanqab) |
cn-wulanchabu |
|
China (Shenzhen) |
cn-shenzhen |
|
China (Chengdu) |
cn-chengdu |
Observações de uso
Os conjuntos de dados públicos estão armazenados no projeto BIGDATA_PUBLIC_DATASET. Como você não é membro desse projeto, todas as consultas utilizam acesso entre projetos. Considere os pontos a seguir:
Especifique o caminho completo da tabela no SQL. Adicione o prefixo do projeto e do schema a todo nome de tabela:
bigdata_public_dataset.github_events.<table_name>.-
Ative a sintaxe de schema. Caso a sintaxe de schema no nível de tenant não esteja ativada para sua conta, adicione a seguinte linha no início de cada script SQL:
SET odps.namespace.schema = true; O armazenamento é gratuito; as consultas são cobradas. Não há cobrança pelo armazenamento de dados de conjuntos públicos, mas os recursos computacionais consumidos pelas suas consultas são faturados. Para mais detalhes, consulte Taxas de computação (pagamento conforme o uso).
O Data Map não está disponível para conjuntos de dados públicos. O acesso entre projetos impede a navegação nessas tabelas pelo DataWorks Data Map.
O DataWorks DataAnalysis exige SQL. Se a sintaxe de schema no nível de tenant não estiver ativada, consulte os dados executando instruções SQL diretamente, em vez de usar a interface visual do DataAnalysis.
Para mais informações sobre operações de schema, consulte Operações de schema.
Consultar o conjunto de dados
Pré-requisitos
Antes de começar, verifique se você possui:
Serviço MaxCompute ativado
Um projeto MaxCompute. Para mais detalhes, consulte Criar um projeto MaxCompute.
Ferramentas compatíveis
Execute consultas com qualquer uma das ferramentas abaixo:
Execute sua primeira consulta
O exemplo a seguir recupera 100 linhas da tabela de fatos para uma data específica:
-- 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;
Exemplos de consultas e análises
Os exemplos a seguir utilizam as tabelas dwd_github_events_odps e dws_overview_by_repo_month para responder a perguntas comuns sobre bancos de dados e linguagens de programação open source. Todos os exemplos exigem que a sintaxe de schema esteja ativada.
Bancos de dados open source
Este grupo de consultas usa a tabela de referência db_repos para limitar os resultados a projetos conhecidos de bancos de dados open source, abrangendo rankings de popularidade, tendências de estrelas e atividade de contribuidores.
Quais bancos de dados open source foram mais populares de 2018 a 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;
Resultado da análise: elasticsearch foi o projeto de banco de dados open source mais popular, seguido por redis e prometheus.

Como os rankings dos principais projetos de bancos de dados mudaram anualmente de 2018 a 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;
Resultado da análise: clickhouse apresentou o crescimento mais rápido entre todos os projetos, subindo da décima posição em 2018 para a primeira em 2021. Em 2022, foi superado pelo redis, que vinha em ascensão constante. Já o taosdata/TDengine alcançou a primeira posição em 2019, mas caiu para a nona em apenas um ano.

Qual foi a tendência mensal de estrelas dos 10 principais projetos de bancos de dados entre 2018 e 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;
Resultado da análise: elasticsearch manteve-se consistentemente como o projeto de banco de dados com mais estrelas. O clickhouse teve um rápido crescimento acumulado a partir de 2021.

Quais bancos de dados foram mais populares no primeiro semestre de 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;
Resultado da análise: clickhouse foi o banco de dados mais popular no primeiro semestre de 2023, seguido por prometheus e redis.

Quais bancos de dados tiveram manutenção mais ativa no primeiro semestre de 2023?
Esta consulta mede a atividade contando eventos de pull requests abertos, o que reflete o trabalho contínuo de desenvolvimento.
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;
Resultado da análise: StarRocks foi o projeto de banco de dados open source com manutenção mais ativa no primeiro semestre de 2023.

Quem foram os principais contribuidores individuais do projeto de banco de dados mais ativo?
Esta consulta conta eventos de contribuição — pull requests, issues, comentários, revisões e pushes — por contribuidor para um determinado repositório e intervalo de tempo.
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;
Resultado da análise: kangkaisen foi o principal contribuidor individual do repositório StarRocks/starrocks em 2021.

Linguagens de programação
Este grupo de consultas utiliza a tabela de referência programming_language_repos para focar os resultados em projetos de runtime e compiladores de linguagens, respondendo a perguntas sobre tendências de uso e popularidade.
Quais foram as 10 linguagens de programação mais usadas no último ano?
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;
Resultado da análise: JavaScript foi a linguagem mais utilizada, seguida por TypeScript e Python.

Quais projetos de linguagens de programação receberam mais estrelas de 2018 a 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;
Resultado da análise: Go foi o projeto de linguagem de programação mais popular, com 81.642 estrelas, seguido por TypeScript e Node.

Como as contagens acumuladas de estrelas dos 10 principais projetos de linguagens cresceram mês a mês?
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;
Resultado da análise: Go teve o crescimento acumulado de estrelas mais rápido entre todos os projetos de linguagens de programação no período de cinco anos.
