Fitur ini hanya tersedia di Analytics 360, bagian dari Google Marketing Platform. Pelajari Google Marketing Platform lebih lanjut. |
Artikel ini berisi contoh cara membuat kueri dari data Analytics yang Anda ekspor ke BigQuery. Kami telah menyediakan set data sampel sehingga Anda dapat berlatih dengan beberapa kueri dalam artikel ini.
Dalam artikel ini:- Pengoptimalan kueri
- Tips dan praktik terbaik
- Contoh kueri dasar
- Contoh kueri lanjutan
- Produk yang dibeli oleh pelanggan yang membeli Produk A (E-commerce Klasik)
- Produk yang dibeli oleh pelanggan yang membeli Produk A (Enhanced E-commerce)
- Jumlah rata-rata interaksi pengguna sebelum melakukan pembelian
- Persentase stok yang terjual per produk
- Profitabilitas setiap produk
- Profitabilitas riil setiap produk
Pengoptimalan kueri
Setiap kueri yang Anda jalankan berkontribusi terhadap kuota pemrosesan data bulanan Anda. Jika Anda memilih kolom yang tidak relevan, Anda meningkatkan jumlah data yang perlu diproses, dan akibatnya, Anda menggunakan lebih banyak kuota bulanan daripada yang dibutuhkan. Kueri yang dioptimalkan membuat penggunaan kuota pemrosesan data bulanan Anda menjadi efisien.
Pelajari lebih lanjut penetapan harga.
Hanya pilih yang dibutuhkan
Ketika merumuskan kueri, pilih kolom yang relevan dalam pernyataan SELECT. Dengan mengecualikan kolom yang tidak relevan, Anda mengurangi jumlah data, dan waktu yang dibutuhkan untuk memproses kueri.
Contoh: hindari penggunaan operator karakter pengganti
Format yang salah: menggunakan operator karakter pengganti |
---|
SELECT * |
Format yang lebih baik: menggunakan nama kolom untuk menghindari pemrosesan yang tidak perlu |
---|
SELECT field1, field2 |
Mengizinkan cache
Jika memungkinkan, hindari penggunaan fungsi sebagai kolom. Fungsi (seperti NOW()
atau TODAY()
) menampilkan hasil variabel, yang mencegah kueri disimpan ke cache dan karena itu ditampilkan lebih cepat. Sebagai gantinya, gunakan waktu dan tanggal spesifik.
Menggunakan tabel perantara untuk subkueri yang biasa digunakan
Jika ternyata Anda berulang kali menggunakan kueri tertentu sebagai subkueri, Anda dapat menyimpan kueri tersebut sebagai tabel perantara dengan mengklik Simpan sebagai Tabel di atas hasil kueri. Selanjutnya, Anda dapat mereferensikan tabel tersebut di bagian FROM
pada kueri, yang akan mengurangi jumlah data yang harus diproses dan waktu pemrosesan yang dibutuhkan.
menggunakan tabel perantara |
---|
SELECT field1, field2 |
Proses debug kueri
BigQuery melakukan debug terhadap kode Anda ketika Anda membuatnya. Pada jendela komposisi, proses debug ditunjukkan tepat di bawah kueri. Proses debug juga tersedia melalui API dengan flag dryRun.
Kueri yang valid memiliki indikator berwarna hijau yang dapat Anda klik untuk melihat jumlah data yang diproses oleh kueri. Fitur ini memberi Anda kesempatan untuk mengoptimalkan data sebelum menjalankan kueri, sehingga Anda dapat menghindari pemrosesan data yang tidak perlu.
Kueri yang tidak valid memiliki indikator berwarna merah yang dapat Anda klik untuk melihat informasi tentang error, serta menemukan baris dan kolom yang berisi error tersebut. Pada contoh di bawah ini, pernyataan GROUP BY kosong, dan kesalahan ditunjukkan.
Tips dan praktik terbaik
Menggunakan set data sampel
Contoh berikut menggunakan set data sampel Google Analytics.
Untuk menggunakan kueri pada data Anda sendiri, cukup ganti nama project dan set data dalam contoh dengan nama project dan set data Anda sendiri.
Menggunakan SQL Standar vs Legacy SQL
BigQuery mendukung dua dialek SQL:
Bermigrasi ke SQL Standar menjelaskan perbedaan antara dua dialek tersebut.
SQL Standar sekarang menjadi dialek SQL pilihan untuk membuat kueri pada data yang tersimpan di BigQuery.
Lihat Mengaktifkan SQL Standar untuk informasi tentang cara mengaktifkan SQL Standar di UI BigQuery, CLI, API, atau antarmuka mana pun yang Anda gunakan.
Cara termudah untuk memulai adalah menyertakan komentar "standardSQL" di bagian teratas kueri SQL Standar seperti yang ditunjukkan pada contoh berikut.
Dengan Legacy SQL, data Google Analytics 360 diteruskan ke tabel baru setiap hari. Untuk membuat kueri beberapa tabel sekaligus, Anda dapat menggunakan koma untuk memisahkan nama tabel, menggunakan fungsi karakter pengganti tabel TABLE_DATE_RANGE
, atau menggunakan beberapa fungsi TABLE_DATE_RANGE
yang dipisahkan koma, seperti dalam contoh berikut.
Membuat kueri beberapa tabel
Contoh berikut menunjukkan kueri SQL Standar dan Legacy SQL untuk data yang sama.
3 hari
SQL Standar
3 Hari menggunakan UNION ALL |
---|
#standardSQL |
Legacy SQL
3 hari menggunakan nama tabel yang dipisahkan koma |
---|
SELECT |
1095 Hari Terakhir
SQL Standar
1095 Hari Terakhir menggunakan _TABLE_SUFFIX |
---|
#standardSQL |
Legacy SQL
1095 hari terakhir menggunakan TABLE_DATE_RANGE |
---|
SELECT |
36 Bulan Terakhir
SQL Standar
36 Bulan Terakhir menggunakan _TABLE_SUFFIX |
---|
#standardSQL |
Legacy SQL
36 bulan terakhir menggunakan TABLE_DATE_RANGE |
---|
SELECT |
3 tahun terakhir
SQL Standar
3 Tahun Terakhir menggunakan _TABLE_SUFFIX |
---|
#standardSQL |
Legacy SQL
3 tahun terakhir menggunakan TABLE_DATE_RANGE |
---|
SELECT |
Rentang tanggal tertentu
SQL Standar
Rentang tanggal tertentu menggunakan _TABLE_SUFFIX |
---|
#standardSQL |
Legacy SQL
Rentang tanggal tertentu menggunakan TABLE_DATE_RANGE |
---|
SELECT |
3 tahun terakhir ditambah data hari ini (intrahari)
SQL Standar
3 tahun terakhir ditambah data hari ini (intrahari) menggunakan UNION ALL & _TABLE_SUFFIX |
---|
Catatan: contoh kueri ini tidak akan berfungsi dengan set data publik Google Analytics karena saat ini tidak ada tabel intrahari. |
#standardSQL |
Legacy SQL
3 tahun terakhir ditambah data hari ini (intrahari) menggunakan beberapa TABLE_DATE_RANGE |
---|
Catatan: contoh kueri ini tidak akan berfungsi dengan set data publik Google Analytics karena saat ini tidak ada tabel intrahari. |
SELECT |
Contoh kueri dasar
Bagian ini menjelaskan cara membuat kueri dasar menggunakan metrik dan dimensi dari contoh data Analytics.
Total [metrik] per [dimensi]?
Di bawah ini adalah contoh skrip untuk pertanyaan: Berapa jumlah total transaksi yang dihasilkan per browser perangkat pada Juli 2017?
SQL Standar
Total transaksi per browser perangkat pada Juli 2017 |
---|
#standardSQL |
Legacy SQL
Total transaksi per browser perangkat pada Juli 2017 |
---|
SELECT |
Rasio pantulan rata-rata per [ dimensi ]?
Rasio pantulan yang sesungguhnya didefinisikan sebagai persentase kunjungan dengan kunjungan halaman tunggal. Berikut ini contoh skrip untuk pertanyaan: Berapa rasio pantulan yang sesungguhnya per sumber traffic?
SQL Standar
Rasio pantulan per sumber traffic pada Juli 2017 |
---|
#standardSQL |
Legacy SQL
Rasio pantulan per sumber traffic pada Juli 2017 |
---|
SELECT |
Jumlah rata-rata kunjungan halaman produk menurut jenis pembeli (pembeli vs bukan pembeli)
Di bawah ini adalah contoh skrip untuk pertanyaan: Berapa jumlah rata-rata kunjungan halaman produk untuk pengguna yang melakukan pembelian pada Juli 2017?
SQL Standar
Jumlah rata-rata kunjungan halaman produk untuk pengguna yang melakukan pembelian pada Juli 2017 |
---|
#standardSQL |
Legacy SQL
Jumlah rata-rata kunjungan halaman produk untuk pengguna yang melakukan pembelian pada Juli 2017 |
---|
SELECT |
Berikut ini contoh skrip untuk pertanyaan: Berapa jumlah rata-rata kunjungan halaman produk untuk pengguna yang tidak melakukan pembelian pada Juli 2017?
SQL Standar
Jumlah rata-rata kunjungan halaman produk untuk pengguna yang tidak melakukan pembelian pada Juli 2017 |
---|
#standardSQL |
Legacy SQL
Jumlah rata-rata kunjungan halaman produk untuk pengguna yang tidak melakukan pembelian pada Juli 2017 |
---|
SELECT |
Jumlah rata-rata transaksi per pembeli
Di bawah ini adalah contoh skrip untuk pertanyaan: Berapa total transaksi rata-rata per pengguna yang melakukan pembelian pada Juli 2017?
SQL Standar
Jumlah rata-rata transaksi per pengguna yang melakukan pembelian pada Juli 2017 |
---|
#standardSQL |
Legacy SQL
Jumlah rata-rata transaksi per pengguna yang melakukan pembelian pada Juli 2017 |
---|
SELECT |
Jumlah rata-rata uang yang dibelanjakan per sesi
Di bawah ini adalah contoh skrip untuk pertanyaan: Berapa jumlah rata-rata uang yang dibelanjakan per sesi pada Juli 2017?
SQL Standar
Jumlah rata-rata uang yang dibelanjakan per sesi pada Juli 2017 |
---|
#standardSQL |
Legacy SQL
Jumlah rata-rata uang yang dibelanjakan per sesi pada Juli 2017 |
---|
SELECT |
Urutan hit
Di bawah ini adalah contoh skrip untuk pertanyaan: Apa urutan halaman yang dilihat?.
SQL Standar
Urutan halaman yang dilihat oleh pengguna pada Juli 2017 |
---|
#standardSQL |
Legacy SQL
Urutan halaman yang dilihat oleh pengguna pada Juli 2017 |
---|
SELECT |
Dalam kueri ini, Anda membatasi jenis hit menjadi PAGE
agar tidak perlu melihat interaksi peristiwa atau transaksi. Setiap baris output mewakili kunjungan halaman dan ditunjukkan oleh urutan default kolom dalam pernyataan SELECT
.
Beberapa dimensi kustom di tingkat hit atau sesi
dimensi kustom di tingkat hit |
---|
SELECT fullVisitorId, visitId, hits.hitNumber, hits.time, |
dimensi kustom di tingkat sesi |
---|
SELECT fullVisitorId, visitId, |
Di setiap kueri:
Pernyataan SELECT
mengajukan kueri untuk kolom dimensi dan metrik yang relevan.
Fungsi MAX
:
- Menampilkan dimensi khusus sebagai kolom baru. Anda dapat mengulangi fungsi ini untuk menampilkan beberapa dimensi khusus sebagai kolom baru.
WITHIN hits
danWITHIN RECORD
mengevaluasi kondisi di dalam kolom berulang di BigQuery.- Kondisi di dalam
MAX
dievaluasi untuk setiap dimensi kustom, tetapi untuk setiap kondisi yang bukanindex=1 (hits)
atauindex=2 (sessions)
, hasil yang ditampilkan adalahNULL
. - Menampilkan nilai maksimum, yang merupakan nilai Dimensi Kustom 1 untuk hit atau Dimensi Kustom 2 untuk sesi karena semua nilai lain
NULL
.
Contoh kueri lanjutan
Setelah memahami kueri sederhana, sekarang Anda dapat membuat kueri menggunakan fungsi dan fitur lanjutan yang tersedia di BigQuery.
Produk yang dibeli oleh pelanggan yang membeli produk A (E-commerce Klasik)
Di bawah ini adalah skrip kerangka untuk pertanyaan: Apa produk lain yang dibeli oleh pelanggan yang membeli produk A?
produk yang dibeli oleh pelanggan yang membeli produk A (E-commerce Klasik) |
---|
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity |
- Pada baris pertama, Anda memilih semua item lainnya yang dibeli oleh pengguna dan fungsi agregat
COUNT()
digunakan untuk menghitung kuantitas setiap item lain yang dibeli. Hasilnya akan ditampilkan di kolom berlabelquantity
, dengan itemnya yang terkait di kolom produk yang diberi label sebagaiother_purchased_products
. - Di subkueri abu-abu, Anda hanya memilih pengguna unik (
fullVisitorId
) yang telah melakukan transaksi (totals.transactions>=1
) dan selama transaksi membeli produk A (WHERE hits.item.productName CONTAINS 'Product Item Name A'
).
Aturan (pernyataan WHERE
dan AND
) di kueri tingkat teratas (hijau) mengabaikan nilai di hits.item.productName
yang null dan berisi produk A.
Berikut ini contoh dari kueri Jika pelanggan membeli Pulpen Metalik Brighton - Set of 4, apa produk lainnya yang dia beli?
produk yang dibeli oleh pelanggan yang membeli 'Brighton Metallic Pens (Set of 4)' pada 24 Juni 2013 |
---|
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity |
Di Dremel/BigQuery, menggunakan WHERE expr IN
akan memicu JOIN, dan berlaku pembatasan ukuran; terutama, ukuran sisi kanan JOIN (dalam hal ini, jumlah pengunjung) tidak boleh lebih dari 8 MB. Di Dremel, ini disebut broadcast JOIN. Jika ukurannya melebihi 8 MB, Anda harus memicu shuffled JOIN, yang dapat dilakukan menggunakan sintaksis JOIN EACH. Sayangnya, hal ini tidak dapat dilakukan menggunakan IN, tetapi kueri yang sama dapat ditulis kembali dengan JOIN.
Produk yang dibeli oleh pelanggan yang membeli Produk A (Enhanced E-commerce)
Ini sama dengan kueri kerangka sebelumnya, namun berfungsi untuk Enhanced E-commerce. Contoh ini juga memanfaatkan TABLE_DATE_RANGE
untuk membuat kueri data selama beberapa hari.
produk yang dibeli oleh pelanggan yang membeli produk A (Enhanced E-commerce) |
---|
SELECT hits.product.productSKU AS other_purchased_products, COUNT(hits.product.productSKU) AS quantity |
Jumlah rata-rata interaksi pengguna sebelum melakukan pembelian
Ini adalah contoh kueri dari perintah JOIN() [...] ON
, yang hanya bergantung pada data Analytics.
Di bawah ini adalah skrip kerangka untuk pertanyaan: Berapa jumlah rata-rata interaksi pengguna sebelum melakukan pembelian?
jumlah interaksi pengguna sebelum melakukan pembelian |
---|
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number |
- Baris pertama menjalankan operasi matematika utama untuk menemukan rata-rata interaksi pengguna per produk, dan kueri ini menciptakan join antara dua subkueri yang disebut ‘Alias_Name_1’ dan ‘Alias_Name_2’.
- ‘Alias_Name_1’ digunakan untuk menghasilkan kolom yang menggunakan fungsi agregat
SUM()
untuk menjumlahkan semua jumlah hit yang dicatat untuk sebuah produk. - ‘Alias_Name_2’ digunakan untuk menemukan jumlah hit yang dilakukan oleh pengguna per produk menggunakan fungsi
COUNT()
. - Baris terakhir menunjukkan kolom umum (
hits.item.productSku
) yang dibagikan antara dua set data pada join.
Berikut ini contoh dari kueri Pada tanggal 10 September 2013, berapa jumlah rata-rata interaksi pengguna sebelum membeli?
jumlah interaksi pengguna pada 10 September 2013 sebelum melakukan pembelian |
---|
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number |
Persentase stok yang terjual per produk
Ini adalah contoh kueri yang tidak hanya bergantung pada data Analytics, tetapi juga data non-Analytics. Dengan menggabungkan kedua set data, Anda dapat mulai memahami perilaku pengguna pada tingkat yang lebih tersegmentasi. Anda bisa mengimpor data non-Analytics ke BigQuery, tetapi perlu diingat bahwa ini akan memengaruhi tagihan penyimpanan data bulanan Anda.
Di bawah ini adalah skrip kerangka untuk pertanyaan: Berapa persentase stok terjual per produk?
persentase stok yang terjual per produk |
---|
SELECT AnalyticsImport.product_data_20130728.productId, ((( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold )) * 100 ) AS percentage_of_stock_sold |
- Baris pertama menghasilkan dua kolom: satu berisi semua ID produk, dan satu lagi berisi operasi matematika yang menunjukkan persentase stok yang terjual untuk ID produk tersebut.
- Karena kueri ini bergantung pada dua set data, Anda perlu menggunakan fungsi
JOIN() ... ON
. Perintah ini menggabungkan baris dari dua set data berdasarkan kolom yang sama di antara keduanya. Dalam hal ini, kedua set data itu adalah[ ‘Imported_DataSet’ ]
dan‘Alias_Name’
. [ ‘Imported_DataSet’ ]
adalah data non-Analytics. Ini adalah set data yang berisi kolom metrik untuk jumlah stok yang tersisa (Imported DataSet.’stock_left_field’
) dan kolom dimensi ID produk (Imported_DataSet.’productId_field’
).‘Alias_Name’
adalah nama yang diberikan ke data yang ditampilkan oleh subkueri abu-abu. Subkueri ini menggunakan data Analytics untuk mengetahui total kuantitas item yang terjual per produk.- Baris terakhir menggunakan pernyataan
ON
untuk menunjukkan kolom yang sama di antara kedua set data dan tempat kedua set data digabungkan.
Banyak variabel dalam kueri ini memiliki nama set data yang dilampirkan sebagai awalan (misalnya, Imported_DataSet.’productId_field’, Alias_Name.quantity_sold
). Awalan ini untuk mengklarifikasi kolom yang Anda pilih dan untuk memperjelas set data asal kolom tersebut.
Berikut ini contoh dari kueri Berapa persentase stok yang terjual per produk pada tanggal 28 Juli 2013?
persentase stok yang terjual per produk pada 28 Juli 2013 |
---|
SELECT AnalyticsImport.product_data_20130728.productId, ( ( ( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold ) ) * 100 ) AS percentage_of_stock_sold |
Profitabilitas setiap produk
Berikut ini skrip kerangka untuk pertanyaan: Berapa profitabilitas setiap produk?
laba berdasarkan produk |
---|
SELECT Alias_Name.hits.item.productSku, ( Imported_DataSet.’product profit field’ * Alias_Name.quantity ) AS profit |
- Baris pertama berisi operasi matematika untuk menghitung total laba yang dihasilkan pada setiap produk.
- Subkueri abu-abu menggunakan data non-Analytics, yang mengumpulkan data tentang jumlah laba yang dihasilkan ketika produk terjual.
- Subkueri merah adalah subkueri data Analytics, yang akan digabungkan dengan data non-Analytics. Ini menghitung kuantitas item yang terjual per produk.
- Baris terakhir menggunakan pernyataan
ON
untuk memperjelas kolom yang sama dari kedua set data. Dalam contoh ini, kolom tersebut adalah nomor ID produk.
Berikut ini contoh dari kueri Berapa profitabilitas setiap produk pada tanggal 28 Juli 2013?
laba berdasarkan produk pada 28 Juli 2013 |
---|
SELECT two.hits.item.productSku, ((AnalyticsImport.product_data_20130728.productprice-AnalyticsImport.product_data_20130728.productcost)*two.quantity) AS profit |
Laba dihitung dengan mencari selisih antara harga jual produk dan biaya produksi. Informasi ini disimpan pada set data non-GA.
Profitabilitas riil setiap produk (memperhitungkan pengembalian dana)
Di bawah ini adalah skrip kerangka untuk pertanyaan: Berapa profitabilitas riil setiap produk?
laba riil berdasarkan produk |
---|
SELECT Alias_Name.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit |
- Kueri ini sangat mirip dengan Berapa profitabilitas setiap produk? Hal yang berbeda hanyalah pada set data non-Analytics di subkueri abu-abu dan pada operasi matematika yang menghitung laba riil di baris pertama.
- Dalam set data non-Analytics, Anda juga menghitung jumlah total uang yang dihabiskan untuk pengembalian dana (dalam pernyataan
SELECT
subkueri merah). - Kemudian Anda menjalankan operasi matematika pada baris 1 untuk menemukan laba riil dengan mengurangi pendapatan yang dibelanjakan untuk pengembalian dana dari laba kotor Anda.
Untuk informasi selengkapnya tentang kueri, lihat bagian profitabilitas setiap produk.
Berikut ini contoh dari kueri berikut Berapa profitabilitas riil setiap produk pada tanggal 28 Juli 2013?
laba riil berdasarkan produk pada 28 Juli 2013 |
---|
SELECT two.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit |
Laba riil memperhitungkan profitabilitas suatu produk setelah memperhitungkan produk yang dananya dikembalikan. Untuk menghitung total pendapatan yang dikembalikan untuk suatu produk:
total pendapatan yang dikembalikan untuk suatu produk = (harga produk + harga pengiriman pengembalian untuk produk) * kuantitas produk yang dikembalikan