Topik ini menjelaskan data event publik GitHub yang tersedia dalam dataset publik MaxCompute. Topik ini juga menjelaskan cara melakukan kueri terhadap data tersebut serta menyediakan contoh kueri beserta hasil analisis.
Ikhtisar
Banyak pengembang mengerjakan proyek open source di GitHub. Aktivitas tersebut menghasilkan volume besar event. GitHub mencatat informasi tentang setiap event, seperti jenis event, detailnya, pengembang, dan repositori kode. GitHub juga menyediakan event publik, seperti memberikan bintang pada repositori atau mengirimkan kode. Untuk informasi lebih lanjut mengenai jenis-jenis event, lihat Jenis Event GitHub. Proyek GH Archive merangkum event publik GitHub per jam dan membuatnya dapat diakses oleh para pengembang. Untuk informasi lebih lanjut mengenai proyek ini, lihat GH Archive.
MaxCompute memproses volume besar data event publik dari GH Archive untuk menghasilkan tabel-tabel berikut:
Nama tabel | Deskripsi | Siklus pembaruan |
dwd_github_events_odps | Tabel fakta data event publik GitHub | T+1 jam |
dws_overview_by_repo_month | Tabel agregat metrik bulanan untuk event publik GitHub | T+1 hari |
Tabel dwd_github_events_odps dan dws_overview_by_repo_month disimpan dalam skema github_events dari proyek publik BIGDATA_PUBLIC_DATASET. Untuk informasi lebih lanjut, lihat Operasi skema. Jika Anda telah mengaktifkan MaxCompute, Anda dapat melakukan kueri terhadap tabel-tabel ini menggunakan akses lintas proyek.
Detail tabel
dwd_github_events_odps
Tabel fakta ini menyimpan informasi utama tentang setiap event publik GitHub. Tabel ini diperbarui setiap T+1 jam. Tabel ini berisi bidang-bidang berikut:
Nama bidang | Jenis data | Deskripsi |
id | BIGINT | ID event. |
actor_id | BIGINT | ID inisiator event. |
actor_login | string | Nama login inisiator event. |
repo_id | BIGINT | ID repositori. |
repo_name | String | Nama repositori dalam format pemilik/Nama_Repositori. |
org_id | BIGINT | ID organisasi tempat repositori tersebut berada. |
org_login | string | Nama organisasi tempat repositori tersebut berada. |
type | string | Jenis event. Untuk informasi lebih lanjut mengenai jenis dan deskripsinya, lihat Jenis Event GitHub. |
created_at | DATETIME | Waktu kejadian event. |
action | string | Perilaku event. |
iss_or_pr_id | BIGINT | ID issue atau pull_request. |
number | BIGINT | Nomor urut issue atau pull_request. |
comment_id | BIGINT | ID komentar. |
commit_id | string | ID commit. |
member_id | BIGINT | ID anggota. |
rev_or_push_or_rel_id | BIGINT | ID review, push, atau rilis. |
ref | string | Nama sumber daya yang dibuat atau dihapus. |
ref_type | String | Jenis sumber daya yang dibuat atau dihapus. |
state | string | Status issue, pull_request, atau pull_request_review. |
author_association | string | Hubungan antara aktor dan repositori. |
language | string | Bahasa kode dalam permintaan merge. |
merged | boolean | Menunjukkan apakah merge diterima. |
merged_at | DATETIME | Waktu kode digabungkan. |
additions | BIGINT | Jumlah baris yang ditambahkan ke kode. |
deletions | BIGINT | Jumlah baris yang dihapus dari kode. |
changed_files | BIGINT | Jumlah file yang diubah oleh pull request. |
push_size | BIGINT | Jumlah commit. |
push_distinct_size | BIGINT | Jumlah commit unik. |
hr | string | Jam kejadian event. Sebagai contoh, jika event terjadi pada pukul |
month | String | Bulan kejadian event. Sebagai contoh, jika event terjadi pada Oktober 2015, nilai parameter ini adalah |
year | string | Tahun kejadian event. Sebagai contoh, jika event terjadi pada tahun 2015, nilai parameter ini adalah |
ds | string | Tanggal kejadian event. Nilainya dalam format |
dws_overview_by_repo_month
Tabel agregat ini menyimpan ringkasan bulanan metrik event untuk setiap repositori. Tabel ini diperbarui setiap T+1 hari. Tabel ini berisi bidang-bidang berikut:
Nama bidang | Jenis data | Deskripsi |
repo_id | BIGINT | ID repositori. |
repo_name | string | Nama repositori dalam format pemilik/Nama_Repositori. |
stars | BIGINT | Jumlah bintang untuk repositori. |
commits | BIGINT | Jumlah commit ke repositori. |
pushes | BIGINT | Jumlah push ke repositori. |
total_prs | BIGINT | Total jumlah pull request untuk repositori. |
pr_creators | BIGINT | Total jumlah pembuat pull request untuk repositori. |
pr_reviews | BIGINT | Total jumlah tinjauan pull request untuk repositori. |
pr_reviewers | BIGINT | Total jumlah peninjau pull request untuk repositori. |
total_issues | BIGINT | Total jumlah issue untuk repositori. |
forks | BIGINT | Jumlah bintang untuk repositori. |
month | string | Bulan kejadian event. Sebagai contoh, jika event terjadi pada Oktober 2015, nilai parameter ini adalah |
Untuk memahami cara data ini dihasilkan, lihat Pemrosesan data offline dan real-time terintegrasi berdasarkan dataset event publik GitHub.
Untuk menganalisis objek tertentu, MaxCompute juga menyimpan tabel db_repos, yang berisi ID dan nama proyek database open source, serta tabel programming_language_repos, yang berisi ID dan nama proyek bahasa pemrograman open source. Daftar proyek tersebut bersumber dari ossinsight.
Wilayah yang tersedia
Wilayah | ID Wilayah |
Tiongkok (Hangzhou) | cn-hangzhou |
Tiongkok (Shanghai) | cn-shanghai |
Tiongkok (Beijing) | cn-beijing |
Tiongkok (Zhangjiakou) | cn-zhangjiakou |
Tiongkok (Ulanqab) | cn-wulanchabu |
Tiongkok (Shenzhen) | cn-shenzhen |
Tiongkok (Chengdu) | cn-chengdu |
Penafian
Data event publik GitHub yang disediakan oleh MaxCompute hanya untuk pengujian produk. Akurasi data tidak dijamin. Jangan gunakan data ini dalam lingkungan produksi.
Perhatian
Dataset publik tersedia untuk semua pengguna MaxCompute. Perhatikan hal-hal berikut:
Data untuk dataset publik disimpan dalam proyek
BIGDATA_PUBLIC_DATASET. Pengguna tidak ditambahkan sebagai anggota ke proyek ini. Oleh karena itu, Anda harus mengakses data secara lintas proyek. Saat menulis skrip SQL, Anda harus menentukan nama proyek dan skema sebelum nama tabel. Jika sintaks skema tingkat penyewa tidak diaktifkan, Anda harus mengaktifkan sintaks skema tingkat sesi untuk menjalankan perintah. Contohnya:-- Mengaktifkan sintaks skema tingkat sesi. SET odps.namespace.schema=true; -- Melakukan kueri 100 catatan dari tabel dwd_github_events_odps. SELECT * FROM bigdata_public_dataset.github_events.dwd_github_events_odps WHERE ds='2024-05-10' limit 100;PentingAnda tidak dikenai biaya untuk penyimpanan data dalam dataset publik. Namun, Anda dikenai biaya untuk sumber daya komputasi yang dikonsumsi oleh kueri Anda. Untuk informasi lebih lanjut, lihat Biaya komputasi (Bayar Sesuai Pemakaian).
Karena diperlukan akses lintas proyek, Anda tidak dapat melihat tabel dari dataset publik di Peta Data DataWorks.
Proyek dataset publik menyimpan data berdasarkan skema. Jika sintaks skema tingkat penyewa tidak diaktifkan untuk akun Anda, Anda tidak dapat melihat dataset publik secara langsung di Analisis Data DataWorks. Anda tetap dapat melakukan kueri terhadap data dengan menjalankan pernyataan SQL.
Gunakan MaxCompute untuk menjelajahi data event publik GitHub
Prasyarat
MaxCompute telah diaktifkan dan proyek MaxCompute telah dibuat. Untuk informasi lebih lanjut mengenai cara membuat proyek MaxCompute, lihat Membuat proyek MaxCompute.
Alat dan platform yang didukung
Lampiran: Contoh kueri dan hasil analisis
Jelajahi database open source
Lihat 10 proyek database open source paling populer selama lima tahun terakhir (2018 hingga 2022)
Contoh kueri:
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;Hasil analisis: Dalam lima tahun terakhir,
elasticsearchmerupakan proyek database open source paling populer, diikuti olehredisdanprometheus.
Lihat perubahan peringkat 10 proyek database open source paling populer selama lima tahun terakhir (2018 hingga 2022)
Contoh kueri:
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;Hasil analisis: Selama lima tahun terakhir, peringkat 10 proyek database open source teratas telah bergeser.
clickhousemenunjukkan pertumbuhan tercepat, naik dari peringkat kesepuluh pada tahun 2018 menjadi peringkat pertama pada tahun 2021. Pada tahun 2022, proyek ini dilampaui olehredisyang terus meningkat secara stabil. Sebaliknya,taosdata/TDengineberada di peringkat pertama pada tahun 2019 tetapi turun ke peringkat kesembilan dalam waktu satu tahun.
Lihat tren pertumbuhan bintang bulanan untuk 10 proyek database open source paling populer selama lima tahun terakhir (2018 hingga 2022)
Contoh kueri:
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 ;Hasil analisis: Di antara 10 proyek database open source teratas,
elasticsearchsecara konsisten menjadi yang paling populer. Proyekclickhousemengalami pertumbuhan pesat sejak tahun 2021.
Database mana yang paling populer pada paruh pertama tahun 2023
Contoh kueri:
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;Hasil analisis: Pada paruh pertama tahun 2023,
clickhousemerupakan database paling populer, diikuti olehprometheusdanredis.
Database mana yang paling aktif dipelihara dan diperbarui pada paruh pertama tahun 2023
Contoh kueri:
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;Hasil analisis: Pada paruh pertama tahun 2023,
StarRocksmerupakan database yang paling aktif dipelihara dan diperbarui. Aktivitas proyek didefinisikan berdasarkan jumlah eventPullRequestyang dibuat.
Siapa kontributor individu utama untuk proyek database open source paling aktif pada paruh pertama tahun 2023
Contoh kueri:
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 ;Hasil analisis: Pada paruh pertama tahun 2023,
kangkaisenmerupakan kontributor individu utama untuk proyek database open source paling aktif.
Jelajahi bahasa pemrograman
Hitung sepuluh bahasa pemrograman paling banyak digunakan dalam setahun terakhir
Contoh kueri:
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;Hasil analisis: Bahasa pemrograman yang paling banyak digunakan adalah
JavaScript, diikuti olehTypeScriptdanPython.
Lihat sepuluh proyek bahasa pemrograman paling populer selama lima tahun terakhir (2018 hingga 2022)
Contoh kueri:
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;Hasil analisis: Selama lima tahun terakhir, proyek bahasa pemrograman paling populer adalah
Go, yang menerima 81.642 bintang. Proyek ini diikuti olehTypeScriptdanNode.
Lihat tren pertumbuhan bintang bulanan untuk 10 proyek bahasa pemrograman paling populer selama lima tahun terakhir (2018 hingga 2022)
Contoh kueri:
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 ;Hasil analisis: Selama lima tahun terakhir,
Gomerupakan proyek bahasa pemrograman dengan pertumbuhan popularitas tercepat.