8 Hal yang Saya Pelajari Tentang Menggunakan Google Analyctic untuk Mengerjakan Pekerjaan
Indonesian (Bahasa Indonesia) translation by Abdul Mutholib (you can also view the original English article)
Seperti banyak situs lainnya, kami menggunakan Google Analytics untuk melacak data tentang pengunjung web kami dan apa yang mereka lakukan di situs kami. Namun, Tuts+ cukup lebih besar dari beberapa situs tersebut, dan dengan ukuran ini, kami menemukan beberapa permasalahan saat mengerjakannya. Berikut ini adalah apa yang saya pelajari tentang menggunakan Google Analyctic untuk mengerjakan pekerjaan.
1. Memecah Data Menjadi Data dengan Rentang yang Lebih Kecil untuk Mengatasi Masalah Sampling
Google Analytics hanya akan mengembalikan 500.000 baris data untuk setiap pertanyaan yang anda kirimkan (dengan beberapa pengecualian). Jika anda membuat permintaan dimana hasilnya mencakup lebih dari jumlah data ini, Google Analytics akan mengambil sample sebanyak 500,000 baris dan mengalikannya sebanyak yang diperlukan.
Contohnya, jika anda memiliki 5 juta pengunjung di bulan September, dan anda meminta Google Analytics untuk membuat sebuah laporan tentang darimana para pengunjung tersebut berasal selama sebulan ini, Google Analytics akan memilih 10% dari data yang mereka miliki tentang pengunjung web anda di bulan September, mencari darimana 10% dari pengunjung tersebut berasal, lalu mengalikan angka tersebut sebanyak 10 kali dan membuat laporannya untuk anda.



Tipe penghitungan seperti ini adalah teknik statistik yang umum dan cara yang masuk akal bagi Google untuk menghemat waktu pengerjaan. Sayangnya, menurut pengalaman saya, hasil laporannya bisa menyesatkan atau salah sama sekali.
Solusinya, untuk mendapatkan data yang akurat, adalah dengan cara meminta beberapa potongan data dengan jarak tanggal yang lebih pendek yang kemudian akan digabungkan. Dengan menggunakan contoh di atas: jika anda memiliki lima juta pengunjung di bulan September, berarti anda memiliki sekitar 500,000 pengunjung setiap tiga hari. Ini artinya jika anda membuat sepuluh permintaan, dimana satu permintaan meminta data dalam 3 hari, setiap laporan 3 hari yang diberikan oleh Google Analytics tidak akan menggunakan sample yang telah dipotong. Gabungkan laporan ini dan anda akan memiliki data sebulan yang tidak terpotong.
2. Belajar untuk Menggunakan API
Interface dari situs Google Analytics sangatlah kuat dan bagus untuk mempelajari data anda, mendapatkan garis besar kesimpulan dari angka-angka tersebut atau membagi laporan secara cepat dengan kolega anda. Namun, memotong data menjadi periode waktu yang lebih pendek, mengunduhnya, dan menyatukannya kembali melalui interface situs memakan banyak waktu, dan berpotensi error yang akan melelahkan anda.
Jauh lebih mudah untuk melakukan ini melalui Core Reporting API. Query Explorer adalah cara yang cukup bersahabat untuk memulai dalam membuat pertanyaan, dan juga lebih mudah menggunakan Query Explorer untuk mengambil data dengan menggunakan Python, atau bahasa pemograman lainnya.
3. Simpan Data Google Analytics yang Telah Anda Unduh dalam Database yang Sebenarnya
Karena anda perlu untuk menggabungkan kembali potongan-potongan ini sendiri, sekalian saja simpan data ini di tempat sentral dimana anda dapat mengolahnya dan menggunakannya nanti. Saya menggunakan hasil kloningan dari back-end database yang dimiliki oleh Tuts+, yang dimodifikasi untuk menambahkan tabel tambahan untuk data Google Analytics; artinya saya dapat memasangkan data traffic dengan artikel yang berhubungan, daripada memasangkannya ke URL (yang mana sangat penting karena URL resmi kami telah berubah dari tahun ke tahun)



Hal ini juga berarti saya dapat menjalankan permintaan yang rumit seperti “tunjukkan saya 100 postingan yang paling banyak dilihat selama sebulan ini dengan kumpulan kategori yang spesifik” atau “berikan saya postingan yang paling populer dari setiap instruktur yang telah menerbitkan paling tidak lima postingan.” Sangat sulit melakukan ini hanya dengan Google Analytics karena Google Analytics tidak mengerti konsep “kategori” atau “instruktur”. Keuntungan lain dari memiliki semuanya dalam satu database adalah hal ini akan membuat anda jauh lebih mudah untuk menaruh datanya ke analisis eksternal dan alat visualisasi seperti Tableau.
4. Menggunakan View
Dalam Google Analytics, setiap view yang dilaporkan memiliki batas sebanyak 10,000 pemesanan API per hari: itu adalah angka maksimal yang saya coba saat melakukan pertanyaan untuk mendapatkan beberapa data melaui API. Kami memiliki 18,000 postingan pada website Tuts+, jadi mendapatkan informasi untuk setiap postingan secara terpisah tiap harinya akan memakan waktu dua hari.
Ah, namun view ada di dalam sebuah properti, dan setiap properti memiliki total batas sebanyak 50,000 permintaan API. Jadi, kami memasang properti pada Tuts+ dengan seperangkat view yang mengandung semua informasi traffic untuk topik tunggal (seperti Kode, Desain Web, dan Bisnis), dan tambahan view yang mencakup informasi traffic dari Tuts+ secara keseluruhan. Dengan cara ini, kami dapat melakukan permintaan untuk view kategori Kode ketika kami meinginkan data tentang postingan bertopik Kode, view kategori Desain Web ketika kami meinginkan data tentang postingan bertopik Desain Web dan seterusnya, dan juga menggunakan batas 50,000 permintaan sebaik mungkin dan tidak dibatasi hanya dengan 10,000.
5. Ambil Data yang Luas, Kemudian Rincikan Data Tersebut
Untuk map interaktif yang menunjukkan darimana pembaca tutorial terjemahan kami berasal, Saya harus mengunduh statistik pageviews-per-negara untuk sekitar 250 postingan, dengan rentang dari yang paling baru hingga yang berumur enam bulan (rata-rata dari kurang lebih 100 hari), dalam hitungan per-hari – angka ini memiliki total yang jumlahnya sebanyak data untuk 2,500 hari.
Saya bisa membuat 25,000 permintaan dengan Google Analytics namun saya tahu bahwa:
- Beberapa postingan tidak memiliki pageviews untuk beberapa hari
- Tidak seperti pageviews-per-negara, “pageview keseluruhan” tidak pernah di-sample
Jadi saya membuat sebuah permintaan pada Google Analytics untuk setiap 250 postingan, meminta pageview keseluruhan untuk postingan online tiap harinya. Lalu saya membuat permintaan lainnya pada Google Analytics untuk setiap postingan per hari yang memiliki pageview lebih dari nol, dan meminta pageview-per-negara. Hal ini mengurangi keseluruhan permintaan yang harus saya buat secara besar, yang artinya saya bisa bekerja dengan lebih cepat dan saya tidak menggunakan terlalu banyak kuota API dari Google Analytics milik kami.



6. Menggunakan Multithreading
Saya menemukan bahwa setidaknya butuh lima detik atau lebih bagi Google Analytics untuk memberikan hasil dari satu permintaan. Ini berarti untuk membuat satu permintaan untuk setiap artikel kami yang berjumlah lebih dari 18,000, Google Analytics membutuhkan waktu 24 jam untuk memprosesnya! Inilah mengapa saya lebih memilih untuk mengerjakannya secara paralel.



Google Analytics memperbolehkan anda untuk memasukkan sampai 10 permintaan API per detik, jadi anda dapat memasukkan 50 permintaan dalam 5 detik yang dibutuhkan untuk memproses permintaan pertama anda. Ini artinya permintaan yang berjumlah sangat banyak dapat diproses 50 kali lebih cepat daripada jika anda membuat permintaan satu per satu yang mengubah waktu tunggu selama 24 jam menjadi selama istirahat makan siang.
7. Pastikan Anda Dapat Melanjutkan Apa yang Anda Tinggalkan
Jika (atau ketika) kode anda rusak, koneksi internet anda turun, anda telah menggunakan semua batas Google Analytics API, atau sesuatu yang salah terjadi saat anda telah 90% mengunduh seperangkat data yang berukuran besar, anda tidak ingin mengulang kembali proses pengunduhan dari awal.
Pastikan bahwa anda telah menyimpan data dalam disk saat anda mengunduhnya (daripada hanya menyimpannya dalam memori), dan pastikan bahwa anda dapat melanjutkan kembali dari apa yang telah anda tinggalkan ketika anda memulai lagi unduhan anda.
8. Pisahkan Kode yang Mendapatkan Data dari Permintaan Spesifik Anda
Saya terbiasa untuk menulis seperangkat kode dengan tujuan yang baru kapanpun saya ingin meminta data yang belum pernah saya minta sebelumnya, menyalin dan menempelnya dari skrip sebelumnya, namun hal ini membatasi saya dan tidak fleksibel.
Pada akhirnya, saya mengkode solusi yang lebih umum dari apa yang telah saya pelajari seperti yang saya katakan di atas, dan juga dapat membaca definisi file eksternal yang membuat data yang ingin saya unduh lebih spesifik, seperti contoh ini yang digunakan untuk mengunduh data pageview dari semua postingan kami:
1 |
{
|
2 |
"SQL": " |
3 |
SELECT id, slug, section, earliest_date_requiring_data
|
4 |
FROM posts
|
5 |
ORDER BY earliest_date_requiring_data ASC
|
6 |
", |
7 |
"Dimensions": "ga:date", |
8 |
"Metrics": "ga:pageviews", |
9 |
"Filters": "ga:pagePath=~^/(articles|tutorials)/{slug}", |
10 |
"Slicing": "Whole", |
11 |
"View": "{section}", |
12 |
"OutputTemplate": "{id},{ga:date},{ga:pageviews}", |
13 |
"OutputFile": "all_post_pageviews.csv", |
14 |
"StartDate": "{earliest_date_requiring_data}", |
15 |
"EndDate": "{LastSunday}", |
16 |
}
|
Oke, file ini memang tidak terlalu bisa terbaca oleh manusia dan ramah-penggunan, namun kode ini cukup sederhana untuk dimengerti dan dibuat jika anda telah menguasai cara kerja Google Analytics API dan cara bagaimana database kami disusun. Ini artinya saya dapat membuat perangkat instruksi baru tanpa harus menyentuh kode dasar yang menjalankannya, dan saya bisa meningkatkan kode dasarnya tanpa harus khawatir bahwa saya akan menghancurkan pengunduhan data reguler.
Kesimpulan
Banyak dari langkah-langkah yang terasa seperti menggambarkan pendekatan umum saat saya melihatnya kembali dan saya hampir tidak percaya bahwa saya tidak mengerjakan data pengunduhan kami seperti ini dari awal. Namun butuh banyak percobaan dan kesalahan dan kebingungan untuk mencapai proses yang berhasil untuk kami; saya harap dengan membaginya, saya bisa menolong orang lain untuk melalui hal yang sama.