このトピックでは、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_DATASET
のgithub_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 | イベントが発生した時間。 たとえば、イベントが |
month | STRING | イベントが発生した月。 たとえば、2015年10月にイベントが発生した場合、このパラメーターの値は |
year | STRING | イベントが発生した年。 たとえば、イベントが2015で発生した場合、このパラメーターの値は |
ds | STRING | イベントが発生した日付。 このパラメーターの値は、 |
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月に発生した場合、このパラメーターの値は |
データの生成方法の詳細については、「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年間で最も人気のあるオープンソースのデータベースプロジェクトは、降順の
elasticsearch
、redis
、prometheus
です。
ランキングの変更を照会する過去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位に落ちました。
過去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年から急速に増加しました。
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の前半で最も人気のあるデータベースは、降順の
clickhouse
、prometheus
、およびredis
でした。
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
が有効になっている場合、データベースはアクティブと見なされます。
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
は最も活発なオープンソースデータベースプロジェクトへの主要な個人貢献者でした。
プログラミング言語を調べる
前年に最も一般的に使用された上位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;
分析結果: 最も一般的に使用されるプログラミング言語は、降順の
JavaScript
、TypeScript
、およびPython
でした。
過去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スター、TypeScript
、Node
が降順です。
過去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
は星の数が最も急速に増加したプログラミング言語でした。