すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:GitHubの公開イベントデータ

最終更新日:Dec 11, 2024

このトピックでは、MaxComputeパブリックデータセットのGitHubパブリックイベントデータと、MaxComputeでGitHubパブリックイベントデータを照会する方法について説明します。 このトピックでは、クエリ例とデータ分析結果も提供します。.

概要

多数の開発者がGitHubでオープンソースプロジェクトを開発し、開発プロセス中に多数のイベントを生成します。 GitHubは、イベントタイプ、イベントの詳細、開発者、コードリポジトリなど、各イベントに関する情報を記録します。 GitHubは、主演リポジトリのイベントやコードの送信など、公開イベントも公開しています。 イベントタイプの詳細については、「GitHubイベントタイプ」をご参照ください。 GH Archiveプロジェクトは、GitHubの公開イベントを1時間ごとに要約し、開発者がイベントにアクセスできるようにします。 GHアーカイブプロジェクトの詳細については、「GHアーカイブ」をご参照ください。

MaxComputeは、GH Archiveが提供する大量のパブリックイベントデータをバッチ処理して開発し、2つのテーブルを生成します。 次の表に、2つのテーブルに関する情報を示します。

テーブル名

説明

更新サイクル

dwd_github_events_odps

GitHubパブリックイベントデータのファクトテーブル

T + 1時間

dws_overview_by_repo_month

GitHubパブリックイベントデータの月次メトリックの集計テーブル

T + 1日

dwd_github_events_odpsおよびdws_overview_by_repo_monthテーブルは、MaxComputeパブリックプロジェクトBIGDATA_PUBLIC_DATASETgithub_eventsスキーマに格納されます。 スキーマの詳細については、「スキーマ関連の操作」をご参照ください。 MaxComputeを有効にしている場合は、プロジェクト間でテーブルにアクセスできます。

テーブルの詳細

dwd_github_events_odps

ファクトテーブルには、各GitHubパブリックイベントに関する主な情報が格納され、T + 1時間ごとに更新されます。 次の表に、ファクトテーブルのフィールドを示します。

フィールド名

データ型

説明

id

BIGINT

イベントID。

actor_id

BIGINT

アクターID。

actor_login

STRING

アクターのユーザー名。

repo_id

BIGINT

リポジトリID。

repo_name

STRING

所有者 /Repository_name形式のリポジトリ名。

org_id

BIGINT

リポジトリが属する組織のID。

org_login

STRING

リポジトリが属する組織の名前。

type

STRING

イベントのタイプ。

イベントタイプの詳細については、「GitHubイベントタイプ」をご参照ください。

created_at

DATETIME

イベントが発生した時刻。

action

STRING

イベントアクション。

iss_or_pr_id

BIGINT

課題またはpull_requestのID。

number

BIGINT

issueまたはpull_requestのシーケンス番号。

comment_id

BIGINT

コメントID。

commit_id

STRING

コミットID。

member_id

BIGINT

メンバーID。

rev_or_push_or_rel_id

BIGINT

レビュー、プッシュ、またはリリースのID。

ref

STRING

作成または削除するリソースの名前。

ref_type

STRING

作成または削除するリソースのタイプ。

state

STRING

課題のステータス、pull_request、またはpull_request_review。

author_association

STRING

アクターとリポジトリの関係。

language

STRING

リクエストコードをマージするために使用されるプログラミング言語。

merged

BOOLEAN

マージを許可するかどうかを指定します。

merged_at

DATETIME

コードがマージされた時刻。

additions

BIGINT

コードに追加される行の数。

deletions

BIGINT

コードから削除される行の数。

changed_files

BIGINT

プルリクエストによって変更されたファイルの数。

push_size

BIGINT

プッシュサイズ。

push_distinct_size

BIGINT

さまざまなプッシュサイズ。

hr

STRING

イベントが発生した時間。

たとえば、イベントが00:23に発生した場合、このパラメーターの値は00です。

month

STRING

イベントが発生した月。

たとえば、2015年10月にイベントが発生した場合、このパラメーターの値は2015-10です。

year

STRING

イベントが発生した年。

たとえば、イベントが2015で発生した場合、このパラメーターの値は2015です。

ds

STRING

イベントが発生した日付。

このパラメーターの値は、yyyy-mm-dd形式です。

dws_overview_by_repo_month

集計テーブルには、プロジェクトの毎月のイベントメトリクスが保存され、T + 1日ごとに更新されます。 次の表に、集計テーブルのフィールドを示します。

フィールド名

データ型

説明

repo_id

BIGINT

リポジトリID。

repo_name

STRING

所有者 /Repository_name形式のリポジトリ名。

stars

BIGINT

リポジトリ内のstarsの数。

commits

BIGINT

リポジトリ内commits数。

pushes

BIGINT

リポジトリ内のpushes数。

total_prs

BIGINT

リポジトリ内のpull_requestsの数。

pr_creators

BIGINT

リポジトリでpull_requestsを送信する作成者の数。

pr_reviews

BIGINT

リポジトリ内のpr_reviewsの数。

pr_reviewers

BIGINT

リポジトリ内のpr_reviewersの数。

total_issues

BIGINT

リポジトリ内のissuesの数。

forks

BIGINT

リポジトリ内のforksの数。

month

STRING

イベントが発生した月。

たとえば、イベントが2015年10月に発生した場合、このパラメーターの値は2015-10です。

データの生成方法の詳細については、「GitHubパブリックイベントデータセットでのデータのオフライン処理とリアルタイム処理の統合」をご参照ください。

MaxComputeには、オープンソースデータベースプロジェクトのIDと名前を格納するdb_reposテーブルと、オープンソースプログラミング言語で開発されたプロジェクトのIDと名前を格納するprogramming_language_reposテーブルがあります。 テーブルを使用して、特定のオブジェクトを分析できます。 プロジェクト情報はossinsightからのものです。

サポートされるリージョン

リージョン

リージョン ID

中国 (杭州)

cn-hangzhou

中国 (上海)

cn-shanghai

中国 (北京)

cn-beijing

中国 (張家口)

cn-zhangjiakou

中国 (ウランチャブ)

cn-wulanchabu

中国 (深セン)

cn-shenzhen

中国 (成都)

cn-chengdu

免責事項

MaxComputeが提供するGitHubパブリックイベントデータは、製品テストにのみ使用できます。 データの精度は保証されません。 実際の運用には公開イベントデータを使用しないでください。

注意事項

パブリックデータセットは、すべてのMaxComputeユーザーが使用できます。 パブリックデータセットを使用する場合は、次の項目に注意してください。

  • パブリックデータセットのすべてのデータは、MaxComputeのBIGDATA_PUBLIC_DATASETプロジェクトに保存されます。 ただし、このプロジェクトにメンバーとして追加されるユーザーはありません。 この場合、プロジェクト間でデータにアクセスする必要があります。 SQLスクリプトを作成するときは、テーブル名の前にプロジェクト名とスキーマ名を指定します。 テナントレベルのスキーマ構文を有効にしない場合は、ステートメントを実行する前にセッションレベルのスキーマ構文を有効にしてください。 サンプル文:

    -- Enable the session-level schema syntax.
    set odps.namespace.schema=true; 
    -- Query 100 data records from the dwd_github_events_odps table.
    select * from bigdata_public_dataset.github_events.dwd_github_events_odps where ds='2024-05-10' limit 100;
    重要

    パブリックデータセットへのデータの保存に対しては課金されません。 ただし、クエリ文を実行すると計算料金が発生します。 詳細については、

    コンピューティング価格

  • プロジェクト間アクセスが必要なため、DataWorksの [データマップ] ページでパブリックデータセットのテーブルを見つけることができません。

  • パブリックデータセットはスキーマによって保存されます。 テナントレベルのスキーマ構文を有効にしない場合、DataWorks DataAnalysisでパブリックデータセットを表示することはできません。 この場合、SQL文を実行することによってのみ、パブリックデータセットをクエリできます。

MaxComputeでGitHubの公開イベントデータを調べる

前提条件

MaxComputeが有効化されています。 MaxComputeプロジェクトが作成されます。 MaxComputeプロジェクトの作成方法の詳細については、「MaxComputeプロジェクトの作成」をご参照ください。

サポートされているツールとプラットフォーム

付録: クエリの例と分析結果

オープンソースのデータベースを調べる

過去5年間 (2018年から2022年) で最も人気のあるオープンソースデータベースプロジェクトのトップ10を照会

  • サンプルクエリ文:

    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;
  • 分析結果: 過去5年間で最も人気のあるオープンソースのデータベースプロジェクトは、降順のelasticsearchredisprometheusです。image.png

ランキングの変更を照会する過去5年間で最も人気のあるトップ10のオープンソースデータベースプロジェクト (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;
  • 分析結果: 過去5年間で、最も人気のあるトップ10のオープンソースデータベースプロジェクトが頻繁に変更されます。 clickhouseプロジェクトは、2018年の10位から2021年の1位まで、ランキングが最も急速に上昇しています。 2022年、redisプロジェクトはクリックハウスプロジェクトを上回りました。 taosdata/TDengineプロジェクトは2019年に1位にランクされましたが、2020年には9位に落ちました。image.png

過去5年間 (2018年から2022年) に最も人気のあるトップ10のオープンソースデータベースプロジェクトのそれぞれが受け取った星の数の毎月の成長傾向を照会します。

  • サンプルクエリ文:

    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
    ;
  • 分析結果: elasticsearchプロジェクトは、トップ10のオープンソースデータベースプロジェクトで最も人気のあるオープンソースデータベースであり、clickhouseプロジェクトのスターの数は2021年から急速に増加しました。

    image.png

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;
  • 分析結果: 2023の前半で最も人気のあるデータベースは、降順のclickhouseprometheus、およびredisでした。image.png

2023の前半でアクティブに維持および更新されているデータベースを照会する

  • サンプルクエリ文:

    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;
  • 分析結果: 2023の前半では、StarRocksデータベースが最も積極的に維持および更新されています。 PullRequestが有効になっている場合、データベースはアクティブと見なされます。

    image.png

2023の前半で最もアクティブなオープンソースデータベースプロジェクトへの主要な個人貢献者を照会します

  • サンプルクエリ文:

    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
    ;
  • 分析結果: 2023の前半では、kangkaisenは最も活発なオープンソースデータベースプロジェクトへの主要な個人貢献者でした。image.png

プログラミング言語を調べる

前年に最も一般的に使用された上位10のプログラミング言語を照会する

  • サンプルクエリ文:

    SET odps.namespace.schema=true; 
    SELECT
     language,
     count(*) 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;
  • 分析結果: 最も一般的に使用されるプログラミング言語は、降順のJavaScriptTypeScript、およびPythonでした。image.png

過去5年間で最も人気のあった上位10のプログラミング言語プロジェクト (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;
  • 分析結果: 過去5年間で、最も人気のあるプログラミング言語プロジェクトはGoで、81,642スター、TypeScriptNodeが降順です。

    image.png

過去5年間に上位10の最も人気のあるプログラミング言語プロジェクトのそれぞれが受け取った星の数の毎月の成長傾向を照会します (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_by_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_by_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
    ;
  • 分析結果: 過去5年間で、Goは星の数が最も急速に増加したプログラミング言語でした。image.png