GSP850

Ringkasan
BigQuery dapat digunakan untuk melakukan analisis data yang lebih canggih. Di lab ini, Anda akan menganalisis data peristiwa sepak bola untuk mendapatkan insight nyata dari set data.
Data yang digunakan dalam lab ini berasal dari sumber berikut:
- Pappalardo et al., (2019) A public data set of spatio-temporal match events in soccer competitions, Nature Scientific Data 6:236, https://www.nature.com/articles/s41597-019-0247-7
- Pappalardo et al. (2019) PlayerRank: Data-driven Performance Evaluation and Player Ranking in Soccer via a Machine Learning Approach. ACM Transactions on Intelligent Systems and Technologies (TIST) 10, 5, Article 59 (September 2019), 27 halaman. DOI: https://doi.org/10.1145/3343172
Tujuan
Di lab ini, Anda akan mempelajari cara:
- Menganalisis data peristiwa sepak bola menggunakan berbagai fitur BigQuery
- Menulis dan menjalankan kueri yang berfungsi dengan data bertingkat di tabel BigQuery
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
-
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search.
Tugas 1. Membuka BigQuery
Konsol BigQuery menyediakan antarmuka untuk mengkueri tabel, termasuk set data publik yang ditawarkan oleh BigQuery.
- Di Konsol Cloud, dari Navigation menu, pilih BigQuery:
Kotak pesan Welcome to BigQuery in the Cloud Console akan terbuka. Kotak pesan ini menyediakan link ke panduan memulai dan catatan rilis.
- Klik Done.
Konsol BigQuery terbuka.
Catatan: Proses pembuatan set data dan tabel diajarkan di lab BigQuery Soccer Data Ingestion. Di lab ini, fokusnya adalah mempelajari cara mengkueri informasi.
Setelah tabel dibuat, tampilan akan terlihat seperti di bawah ini:
Di bagian ini, antarmuka BigQuery digunakan untuk mengakses konsol. Konsol menyediakan cara praktis untuk menambahkan informasi ke set data. BigQuery menggunakan tabel untuk merepresentasikan data secara terstruktur.
Di bagian berikutnya, pelajari lebih lanjut cara membuat kueri yang lebih kompleks.
Tugas 2. Menganalisis data peristiwa sepak bola bertingkat
Di bagian ini, Anda akan menjalankan beberapa kueri yang menggunakan JOIN dengan fungsionalitas array BigQuery untuk memungkinkan kontrol yang lebih baik atas data peristiwa sepak bola.
- Di Editor kueri, klik Create SQL query.
- Salin dan tempel kueri berikut ke dalam Editor kueri:
SELECT
Events.playerId,
(Players.firstName || ' ' || Players.lastName) AS playerName,
SUM(IF(Tags2Name.Label = 'assist', 1, 0)) AS numAssists
FROM
`soccer.events` Events,
Events.tags Tags
LEFT JOIN
`soccer.tags2name` Tags2Name ON
Tags.id = Tags2Name.Tag
LEFT JOIN
`soccer.players` Players ON
Events.playerId = Players.wyId
GROUP BY
playerId, playerName
ORDER BY
numAssists DESC
Assist tidak ditandai sebagai kolom skalar terpisah dalam tabel events, jadi Anda perlu melihat "di dalam" kolom tags.
Hal ini dilakukan dengan menggunakan correlated cross join antara tabel events dan kolom tags (dengan "," di klausa FROM untuk merepresentasikan join implisit) untuk membuat 1 baris per tag per peristiwa (bukan 1 baris per peristiwa). ID tag yang sesuai dengan assist ditemukan dari tabel tags2name, jumlah kemunculan tag tersebut dihitung per pemain, dan tabel players mendapatkan nama pemain dari ID mereka.
- Klik Run. Hasilnya ditampilkan di bawah jendela kueri.
Klik Periksa progres saya untuk memverifikasi tujuan
Memeriksa apakah kueri telah dijalankan
Di bagian ini, kueri yang lebih kompleks dibuat di BigQuery. Melakukan Penggabungan di BigQuery dan memanfaatkan Array memberikan cara yang efektif untuk mengagregasi data.
Di bagian berikutnya, pelajari cara menggunakan Nesting dan Array dengan BigQuery.
Tugas 3. Menghitung jarak rata-rata operan per tim
Di bagian ini, Anda akan menjalankan beberapa kueri yang menggunakan kolom bertingkat dalam data peristiwa sepak bola dan fungsi array BigQuery serta jenis data STRUCT untuk menjawab beberapa pertanyaan menarik.
Seberapa jauh perbedaan tim klub dalam hal jarak rata-rata operan mereka (baik secara keseluruhan maupun operan akurat)?
Untuk menjawab pertanyaan ini, pelajari kolom positions di tabel events. Dengan mengamati data ini, Anda akan melihat bahwa ini adalah kolom berulang yang berisi 1 atau lebih pasangan (x, y) per peristiwa. Menurut Wyscout, perusahaan data terkemuka di industri sepak bola yang menyediakan data ini, angka tersebut mewakili posisi asal dan (jika berlaku) tujuan yang terkait dengan peristiwa, dalam skala 0-100 yang mewakili persentase lapangan dari perspektif tim penyerang.
Screenshot di bawah mengilustrasikan posisi yang sesuai dengan beberapa jenis peristiwa yang berbeda untuk beberapa contoh peristiwa.
Dari data tersebut, Anda dapat melihat bahwa operan memiliki 2 pasang atribut (x, y) yang merepresentasikan posisi awal dan akhir. Oleh karena itu, jarak operan dapat dihitung dengan menghitung selisih koordinat x dan y, lalu mengonversinya ke perkiraan meter menggunakan dimensi rata-rata lapangan sepak bola (105 x 68, menurut Wikipedia; tidak ada ukuran lapangan standar) dan rumus jarak 2 dimensi.
- Di Editor kueri, klik Create SQL query.
- Tempel kueri berikut ke dalam Editor kueri:
WITH
Passes AS
(
SELECT
*,
/* 1801 is known Tag for 'accurate' from tags2name table */
(1801 IN UNNEST(tags.id)) AS accuratePass,
(CASE
WHEN ARRAY_LENGTH(positions) != 2 THEN NULL
ELSE
/* Translate 0-100 (x,y) coordinate-based distances to absolute positions
using "average" field dimensions of 105x68 before combining in 2D dist calc */
SQRT(
POW(
(positions[ORDINAL(2)].x - positions[ORDINAL(1)].x) * 105/100,
2) +
POW(
(positions[ORDINAL(2)].y - positions[ORDINAL(1)].y) * 68/100,
2)
)
END) AS passDistance
FROM
`soccer.events`
WHERE
eventName = 'Pass'
)
SELECT
Passes.teamId,
Teams.name AS team,
Teams.area.name AS teamArea,
COUNT(Passes.Id) AS numPasses,
AVG(Passes.passDistance) AS avgPassDistance,
SAFE_DIVIDE(
SUM(IF(Passes.accuratePass, Passes.passDistance, 0)),
SUM(IF(Passes.accuratePass, 1, 0))
) AS avgAccuratePassDistance
FROM
Passes
LEFT JOIN
`soccer.teams` Teams ON
Passes.teamId = Teams.wyId
WHERE
Teams.type = 'club'
GROUP BY
teamId, team, teamArea
ORDER BY
avgPassDistance
Kode dalam klausa WITH awal memfilter tabel events ke operan saja dan menambahkan kolom accuratePass dengan melihat "di dalam" kolom tag.
Jarak operan dihitung dengan mengekstrak koordinat (x, y) awal dan akhir menggunakan ORDINAL serta menerapkan konsep dan formula yang disebutkan di atas. Pernyataan SELECT terakhir mengagregasi data operan ke tingkat tim (memfilter hanya tim klub), termasuk jarak operan rata-rata pada semua operan dan operan akurat saja.
- Klik Run. Hasilnya ditampilkan di bawah jendela kueri.
Catatan: Ada beberapa perbedaan dalam jarak rata-rata operan di ribuan operan dari berbagai tim, mulai dari rata-rata terendah, kurang dari 18 meter (Napoli dan PSG) hingga yang tertinggi, lebih dari 23 meter (Eibar).
Rata-rata jarak operan akurat menunjukkan dispersi yang serupa, meskipun nilai-nilai tersebut sedikit lebih terkompresi di seluruh tim.
Klik Periksa progres saya untuk memverifikasi tujuan
Memeriksa apakah kueri telah dijalankan
Di bagian ini, BigQuery digunakan untuk menentukan jumlah operan dan jarak rata-rata operan per tim. Untuk mencapainya, Anda menggunakan kemampuan pemrosesan array untuk mengekstrak nilai berulang dalam satu kolom, lalu menghitung jarak antara titik awal dan akhir setiap lintasan.
Di bagian berikutnya, pelajari cara membatalkan nest data koordinat lainnya untuk menghasilkan informasi tentang jarak tembakan.
Tugas 4. Analisis jarak tembakan
Di bagian ini, Anda akan membuat kueri baru untuk menganalisis jarak tembakan.
Apa dampak jarak tembakan terhadap kemungkinan gol tercipta?
Untuk menjawab pertanyaan ini, gunakan proses yang mirip dengan bagian sebelumnya. Untuk tembakan, gunakan nilai (x, y) dari kolom positions di tabel events.
Catatan: Sesuai dengan kueri sebelumnya, dimensi perkiraan lapangan sepak bola digunakan dengan jarak koordinat x dan koordinat y sebagai input ke rumus jarak.
- Di Editor kueri, klik Create SQL query.
- Salin dan tempel kueri berikut ke dalam Editor kueri:
WITH
Shots AS
(
SELECT
*,
/* 101 is known Tag for 'goals' from goals table */
(101 IN UNNEST(tags.id)) AS isGoal,
/* Translate 0-100 (x,y) coordinate-based distances to absolute positions
using "average" field dimensions of 105x68 before combining in 2D dist calc */
SQRT(
POW(
(100 - positions[ORDINAL(1)].x) * 105/100,
2) +
POW(
(50 - positions[ORDINAL(1)].y) * 68/100,
2)
) AS shotDistance
FROM
`soccer.events`
WHERE
/* Includes both "open play" & free kick shots (including penalties) */
eventName = 'Shot' OR
(eventName = 'Free Kick' AND subEventName IN ('Free kick shot', 'Penalty'))
)
SELECT
ROUND(shotDistance, 0) AS ShotDistRound0,
COUNT(*) AS numShots,
SUM(IF(isGoal, 1, 0)) AS numGoals,
AVG(IF(isGoal, 1, 0)) AS goalPct
FROM
Shots
WHERE
shotDistance <= 50
GROUP BY
ShotDistRound0
ORDER BY
ShotDistRound0
Klausul WITH awal memfilter tabel events hanya untuk tembakan, menambahkan kolom isGoal dengan melihat "di dalam" kolom tags, dan menghitung jarak tembakan dengan cara yang sama seperti penanganan jarak operan di bagian sebelumnya, tetapi menggunakan titik tengah mulut gawang (100, 50) sebagai lokasi akhir.
Pernyataan SELECT terakhir mengagregatkan jumlah tembakan, jumlah gol, dan persentase gol dari tembakan berdasarkan jarak yang dibulatkan ke meter terdekat.
- Klik Run. Hasilnya ditampilkan di bawah jendela kueri.
Seperti yang diharapkan, tembakan dari jarak dekat punya peluang gol yang jauh lebih tinggi, mulai dari hampir 70% kesuksesan pada jarak 2-3 meter hingga kurang dari 25% pada jarak 8 meter, dan terus menurun hingga jarak 25+ meter.
Membuat visualisasi hasil
Memvisualisasikan data dapat mempermudah pemahaman dan melihat tren.
- Klik CHART di bagian Query results.
- Pilih Scatter untuk Chart type.
- Gunakan fitur pembuatan diagram sebar di Spreadsheet untuk membuat diagram seperti di bawah ini:
Ada sedikit peningkatan tingkat keberhasilan pada jarak 11-12 meter, tetapi hal itu kemungkinan besar dapat dijelaskan oleh fakta bahwa tendangan penalti (yang, menurut desainnya, memiliki peluang gol yang jauh lebih tinggi daripada sebagian besar tembakan lainnya) menyumbang persentase besar tembakan dari jarak tersebut.
Klik Periksa progres saya untuk memverifikasi tujuan
Memeriksa apakah kueri telah dijalankan
Di bagian ini, BigQuery digunakan untuk membuat tampilan jarak tembakan versus tingkat keberhasilan gol. Dari analisis ini, kita dapat lebih memahami kemungkinan gol tercipta berdasarkan jarak tembakan.
Di bagian berikutnya, Anda akan melakukan analisis serupa untuk melihat dampak sudut tembakan terhadap keberhasilan tembakan.
Tugas 5. Analisis sudut tembakan
Di bagian ini, ubah kueri sebelumnya untuk melihat dampak sudut terhadap tembakan.
Dalam kasus ini, sudut yang dihitung adalah sudut yang dibentuk oleh lokasi tembakan dan garis gawang, seperti yang ditunjukkan di bawah (kredit gambar untuk Ian Dragulet).
Sudut yang lebih besar muncul karena berada dekat dengan sasaran dan di tengah, sehingga hal ini agak berkorelasi dengan perhitungan jarak yang dilakukan di atas. Perhitungan sudut tembakan melibatkan penggunaan fungsi trigonometri BigQuery pada data (x, y).
- Di Editor kueri, klik Create SQL query.
- Tempel kueri berikut ke dalam Editor kueri:
WITH
Shots AS
(
SELECT
*,
/* 101 is known Tag for 'goals' from goals table */
(101 IN UNNEST(tags.id)) AS isGoal,
/* Translate 0-100 (x,y) coordinates to absolute positions using "average"
field dimensions of 105x68 before using in various distance calcs;
LEAST used to cap shot locations to on-field (x, y) (i.e. no exact 100s) */
LEAST(positions[ORDINAL(1)].x, 99.99999) * 105/100 AS shotXAbs,
LEAST(positions[ORDINAL(1)].y, 99.99999) * 68/100 AS shotYAbs
FROM
`soccer.events`
WHERE
/* Includes both "open play" & free kick shots (including penalties) */
eventName = 'Shot' OR
(eventName = 'Free Kick' AND subEventName IN ('Free kick shot', 'Penalty'))
),
ShotsWithAngle AS
(
SELECT
Shots.*,
/* Law of cosines to get 'open' angle from shot location to goal, given
that goal opening is 7.32m, placed midway up at field end of (105, 34) */
SAFE.ACOS(
SAFE_DIVIDE(
( /* Squared distance between shot and 1 post, in meters */
(POW(105 - shotXAbs, 2) + POW(34 + (7.32/2) - shotYAbs, 2)) +
/* Squared distance between shot and other post, in meters */
(POW(105 - shotXAbs, 2) + POW(34 - (7.32/2) - shotYAbs, 2)) -
/* Squared length of goal opening, in meters */
POW(7.32, 2)
),
(2 *
/* Distance between shot and 1 post, in meters */
SQRT(POW(105 - shotXAbs, 2) + POW(34 + 7.32/2 - shotYAbs, 2)) *
/* Distance between shot and other post, in meters */
SQRT(POW(105 - shotXAbs, 2) + POW(34 - 7.32/2 - shotYAbs, 2))
)
)
/* Translate radians to degrees */
) * 180 / ACOS(-1)
AS shotAngle
FROM
Shots
)
SELECT
ROUND(shotAngle, 0) AS ShotAngleRound0,
COUNT(*) AS numShots,
SUM(IF(isGoal, 1, 0)) AS numGoals,
AVG(IF(isGoal, 1, 0)) AS goalPct
FROM
ShotsWithAngle
GROUP BY
ShotAngleRound0
ORDER BY
ShotAngleRound0
Kueri ini mirip dengan kueri jarak tembakan di atas, kecuali untuk klausa WITH awal untuk mengekstrak koordinat tembakan (untuk menyederhanakan saat diperlukan beberapa kali dalam perhitungan sudut) dan perhitungan trigonometri yang lebih detail menggunakan Hukum Kosinus untuk mendapatkan sudut tembakan dalam klausa WITH kedua.
Pernyataan SELECT terakhir mengagregasi berdasarkan sudut tembakan yang dibulatkan ke derajat terdekat.
- Klik Run. Hasilnya ditampilkan di bawah jendela kueri.
Sudut tembakan tampaknya secara umum berkorelasi positif dengan tingkat keberhasilan gol, mulai dari tingkat keberhasilan satu digit pada sudut di bawah 20° hingga tingkat yang jauh lebih tinggi pada sudut yang lebih lebar (dengan ukuran sampel yang relatif lebih rendah di atas 60° atau lebih).
Dengan mengklik Charts di bagian Query results, memilih Scatter untuk jenis diagram, Anda dapat memvisualisasikan tren lengkap seperti yang Anda lihat di bawah.
Plot menunjukkan bahwa hubungan antara sudut tembakan dan tingkat keberhasilan relatif linear hingga sekitar 100°. Sekali lagi, sudut terlebar hanya mungkin dilakukan pada tembakan yang dekat dengan gawang, jadi sebagian dari hal ini berkorelasi dengan efek jarak yang ditunjukkan di atas. Ada sedikit peningkatan dalam tingkat keberhasilan pada sudut 35° dan 38°, karena ini adalah sudut tembakan yang paling umum untuk tendangan penalti (sekali lagi, peluangnya jauh lebih tinggi daripada kebanyakan tembakan lainnya) dan menyumbang persentase besar tembakan dari jarak tersebut.
Klik Periksa progres saya untuk memverifikasi tujuan
Memeriksa apakah kueri telah dijalankan
Di bagian berikutnya, uji pemahaman Anda tentang apa yang telah Anda pelajari di lab ini.
Tugas 6. Kuis hiburan
Uji pemahaman Anda tentang BigQuery dengan menyelesaikan kuis singkat tentang topik yang dibahas di lab ini.
Selamat!
Anda sedang dalam perjalanan untuk memahami data science olahraga. Anda telah berhasil menggunakan BigQuery untuk menganalisis jarak rata-rata operan, serta hubungan antara jarak tembakan dan sudut tembakan dengan kesuksesan. Kueri yang digunakan menggabungkan cross join yang berkorelasi dan fungsi array serta trigonometri BigQuery untuk melihat data bertingkat dan melakukan perhitungan jarak dan sudut yang diperlukan untuk menganalisis data sesuai permintaan.
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 25 Januari 2024
Lab Terakhir Diuji pada 25 Januari 2024
Hak cipta 2025 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.