arrow_back

Pemecahan Masalah dan Menyelesaikan Kendala Penggabungan Data

Login Gabung
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Pemecahan Masalah dan Menyelesaikan Kendala Penggabungan Data

Lab 1 jam universal_currency_alt 5 Kredit show_chart Menengah
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP412

Lab Mandiri Google Cloud

Ringkasan

BigQuery adalah database analisis berbiaya rendah dan tanpa pengoperasian (NoOps) yang dikelola sepenuhnya oleh Google. Dengan BigQuery, Anda dapat mengkueri data berskala terabyte tanpa perlu mengelola infrastruktur atau memiliki administrator database. BigQuery menggunakan SQL dan dapat memanfaatkan model bayar sesuai penggunaan. Dengan BigQuery, Anda dapat berfokus untuk menganalisis data guna menemukan insight yang bermakna.

Menggabungkan tabel data dapat memberikan insight yang bermakna terkait set data Anda. Namun, saat menggabungkan data, ada kendala umum yang dapat merusak hasil Anda. Lab ini berfokus untuk menghindari kendala tersebut. Jenis-jenis gabungan (join):

  • Cross join: menggabungkan tiap baris dari set data pertama dengan tiap baris dari set data kedua, di mana tiap kombinasi direpresentasikan dalam outputnya.
  • Inner join: mengharuskan adanya nilai kunci di kedua tabel agar kumpulan data muncul di tabel hasil. Kumpulan data muncul dalam gabungan hanya jika ada kecocokan di kedua tabel untuk nilai kuncinya.
  • Left join: Tiap baris di tabel kiri muncul di hasil, terlepas dari apakah ada kecocokan di tabel kanan atau tidak.
  • Right join: kebalikan dari left join. Tiap baris di tabel kanan akan muncul di hasil, terlepas dari apakah ada kecocokan di tabel kiri atau tidak.

Untuk mengetahui informasi lebih lanjut tentang penggabungan, lihat Halaman Gabungan.

Set data yang digunakan dalam lab ini adalah set data e-commerce yang memiliki jutaan kumpulan data Google Analytics untuk Google Merchandise Store yang dimuat ke BigQuery. Anda memiliki salinan set data tersebut untuk lab ini dan akan menjelajahi kolom dan baris yang tersedia untuk mendapatkan insight.

Untuk mengetahui informasi sintaksis guna membantu Anda mengikuti dan memperbarui kueri, lihat Sintaksis Kueri SQL Standar.

Yang akan Anda lakukan

Di lab ini, Anda akan mempelajari cara:

  • Menggunakan BigQuery untuk menjelajahi dan memecahkan masalah baris duplikat dalam set data.
  • Membuat gabungan antara tabel data.
  • Memilih di antara jenis-jenis gabungan yang berbeda.

Penyiapan dan persyaratan

Sebelum mengklik tombol Mulai 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 praktik ini dapat Anda gunakan untuk melakukan sendiri 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 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: Jika Anda sudah memiliki project atau akun pribadi Google Cloud, jangan menggunakannya untuk lab ini agar terhindar dari tagihan ekstra pada akun Anda.

Cara memulai lab dan login ke Google Cloud Console

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Di sebelah kiri adalah panel Lab Details dengan berikut ini:

    • Tombol Open Google Console
    • Waktu tersisa
    • Kredensial sementara yang harus Anda gunakan untuk lab ini
    • Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
  2. Klik Open Google Console. Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Login.

    Tips: Atur tab di jendela terpisah secara berdampingan.

    Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
  3. Jika perlu, salin Username dari panel Lab Details dan tempel ke dialog Sign in. Klik Next.

  4. Salin Password dari panel Lab Details dan tempel ke dialog Welcome. Klik Next.

    Penting: Anda harus menggunakan kredensial dari panel sebelah kiri. Jangan menggunakan kredensial Google Cloud Skills Boost. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
  5. Klik halaman berikutnya:

    • Setujui persyaratan dan ketentuan.
    • Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
    • Jangan daftar uji coba gratis.

Setelah beberapa saat, Cloud Console akan terbuka di tab ini.

Catatan: Anda dapat melihat menu dengan daftar Produk dan Layanan Google Cloud dengan mengklik Menu navigasi di kiri atas. Ikon menu navigasi

Membuka konsol BigQuery

  1. Di Google Cloud Console, pilih Navigation menu > BigQuery.

Kotak pesan Welcome to BigQuery in the Cloud Console akan terbuka. Kotak pesan ini menyediakan link ke panduan memulai dan catatan rilis.

  1. Klik Done.

Konsol BigQuery terbuka.

Tugas 1. Membuat set data baru untuk menyimpan tabel Anda

Di project BigQuery Anda, buat set data baru yang bernama ecommerce.

  1. Klik tiga titik di samping Project ID Anda, lalu pilih Create dataset.

Opsi Create dataset ditandai

Dialog Create dataset terbuka.

  1. Tetapkan dataset ID ke ecommerce.

  2. Biarkan opsi lain diisi dengan nilai defaultnya, lalu klik Create dataset.

Di panel kiri, terlihat sebuah tabel ecommerce yang tercantum dalam project Anda.

Klik Check my progress untuk memverifikasi tujuan.

Membuat set data baru

Tugas 2. Menyematkan project lab di BigQuery

Skenario: Tim Anda memberikan set data baru terkait tingkat stok inventaris untuk tiap produk yang dijual di situs e-commerce Anda. Anda ingin memahami produk di situs dan kolom yang dapat Anda gunakan untuk digabungkan ke set data lain.

Project dengan set data baru ini adalah data-to-insights.

  1. Klik Navigation menu Ikon Navigation menu > BigQuery.

Kotak pesan Welcome to BigQuery pada Konsol Cloud akan terbuka.

Catatan: Kotak pesan Welcome to BigQuery pada Konsol Cloud menampilkan link ke panduan memulai dan update UI.
  1. Klik Done.

  2. Set data publik BigQuery tidak ditampilkan secara default. Untuk membuka project set data publik, salin data-to-insights.

  3. Klik + Add > Star a project by name lalu tempel nama data-to-insights.

  4. Klik Star.

Project data-to-insights dicantumkan pada bagian Explorer.

Tugas 3. Memeriksa kolom

Selanjutnya, kenali produk dan kolom di situs yang dapat Anda gunakan untuk membuat kueri guna menganalisis set data.

  1. Di panel sebelah kiri pada bagian Resources, arahkan kursor ke data-to-insights > ecommerce > all_sessions_raw.

  2. Di sebelah kanan, di bawah Query editor, klik tab Schema untuk melihat Fields dan informasi terkait tiap kolom.

Tugas 4. Mengidentifikasi kolom kunci dalam set data e-commerce Anda

Periksa produk dan kolom lebih lanjut. Anda ingin memahami produk di situs dan kolom yang dapat Anda gunakan untuk digabungkan ke set data lain.

Memeriksa kumpulan data

Di bagian ini, Anda akan mengetahui berapa banyak nama produk dan SKU produk yang ada di situs Anda dan apakah salah satu kolom tersebut unik atau tidak.

  1. Temukan berapa nama produk dan SKU produk yang ada di situs. Salin dan Tempel kueri berikut di EDITOR BigQuery:
#standardSQL # how many products are on the website? SELECT DISTINCT productSKU, v2ProductName FROM `data-to-insights.ecommerce.all_sessions_raw`
  1. Klik Run.

Lihat hasil penomoran halaman di konsol untuk mengetahui jumlah total kumpulan data yang ditampilkan.

Hasil kueri dengan penomoran halaman ditandai

Tapi apakah hasil ini berarti SKU produk yang unik ada sebanyak itu? Salah satu kueri pertama yang akan Anda jalankan sebagai analis data adalah melihat keunikan nilai data Anda.

  1. Hapus kueri sebelumnya dan jalankan kueri di bawah ini untuk mencantumkan jumlah SKU unik yang dicantumkan menggunakan DISTINCT:
#standardSQL # find the count of unique SKUs SELECT DISTINCT productSKU FROM `data-to-insights.ecommerce.all_sessions_raw`

Memeriksa hubungan antara SKU & Nama

Sekarang tentukan produk mana yang memiliki lebih dari satu SKU dan SKU mana yang memiliki lebih dari satu Nama Produk.

  1. Hapus kueri sebelumnya dan jalankan kueri di bawah ini untuk menentukan apakah beberapa nama produk memiliki lebih dari satu SKU. Penggunaan fungsi STRING_AGG() adalah untuk menggabungkan semua SKU produk yang dikaitkan dengan satu nama produk ke dalam comma separated values.
SELECT v2ProductName, COUNT(DISTINCT productSKU) AS SKU_count, STRING_AGG(DISTINCT productSKU LIMIT 5) AS SKU FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE productSKU IS NOT NULL GROUP BY v2ProductName HAVING SKU_count > 1 ORDER BY SKU_count DESC
  1. Klik Run.

Hasil:

Hasil kueri

ecommerce website catalog menunjukkan bahwa tiap nama produk mungkin memiliki beberapa pilihan (ukuran, warna) yang dijual sebagai SKU terpisah.

Jadi Anda sudah melihat bahwa 1 Produk bisa memiliki 12 SKU. Bagaimana dengan 1 SKU? Apakah boleh dimiliki lebih dari 1 produk?

  • Hapus kueri sebelumnya dan jalankan kueri di bawah ini untuk mengetahuinya:
SELECT productSKU, COUNT(DISTINCT v2ProductName) AS product_count, STRING_AGG(DISTINCT v2ProductName LIMIT 5) AS product_name FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE v2ProductName IS NOT NULL GROUP BY productSKU HAVING product_count > 1 ORDER BY product_count DESC

Hasil kueri

Catatan: Cobalah mengganti STRING_AGG() dengan ARRAY_AGG(). Cukup keren, bukan? BigQuery secara native mendukung nilai array bertingkat. Anda dapat mempelajarinya lebih lanjut dari panduan Bekerja dengan array.

Anda akan melihat mengapa hubungan data many-to-many ini menjadi masalah di bagian berikutnya.

Klik Check my progress untuk memverifikasi tujuan.

Mengidentifikasi kolom kunci dalam set data e-commerce Anda

Tugas 5. Kendala: kunci tidak unik

Dalam pelacakan inventaris, SKU dirancang untuk mengidentifikasi satu dan hanya satu produk secara unik. Namun, hal ini akan menjadi dasar kondisi JOIN Anda ketika Anda mencari informasi dari tabel lain. Memiliki kunci yang tidak unik dapat menyebabkan masalah data yang serius seperti yang akan Anda lihat.

  1. Tulis kueri untuk mengidentifikasi semua nama produk untuk SKU 'GGOEGPJC019099'.

Solusi yang dapat dilakukan:

SELECT DISTINCT v2ProductName, productSKU FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE productSKU = 'GGOEGPJC019099'
  1. Klik Run.

v2ProductName

productSKU

7" Dog Frisbee

GGOEGPJC019099

7" Dog Frisbee

GGOEGPJC019099

Google 7-inch Dog Flying Disc Blue

GGOEGPJC019099

Dari hasil kueri, sepertinya ada tiga nama berbeda untuk produk yang sama. Dalam contoh ini, terdapat karakter khusus pada satu nama dan nama yang sedikit berbeda untuk yang lain:

Menggabungkan data situs terhadap daftar inventaris produk Anda

Sekarang lihat dampak penggabungan pada set data yang memiliki beberapa produk untuk satu SKU. Pertama-tama, jelajahi set data inventaris produk (tabel products) untuk melihat apakah SKU ini unik atau tidak di tabel tersebut.

  • Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
SELECT SKU, name, stockLevel FROM `data-to-insights.ecommerce.products` WHERE SKU = 'GGOEGPJC019099'

Kendala Gabungan: Hubungan SKU many-to-one yang tidak disengaja

Anda sekarang memiliki dua set data: satu untuk tingkat stok inventaris dan yang lainnya untuk analisis situs kita. Dengan fungsi JOIN, gabungkan set data inventaris dengan nama produk dan SKU situs Anda, sehingga Anda dapat mengetahui tingkat stok inventaris yang terkait dengan tiap produk yang dijual di situs.

  1. Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
SELECT DISTINCT website.v2ProductName, website.productSKU, inventory.stockLevel FROM `data-to-insights.ecommerce.all_sessions_raw` AS website JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE productSKU = 'GGOEGPJC019099'

Selanjutnya, perluas kueri sebelumnya untuk menjumlahkan inventaris yang tersedia berdasarkan produk menggunakan fungsi SUM.

  1. Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
WITH inventory_per_sku AS ( SELECT DISTINCT website.v2ProductName, website.productSKU, inventory.stockLevel FROM `data-to-insights.ecommerce.all_sessions_raw` AS website JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE productSKU = 'GGOEGPJC019099' ) SELECT productSKU, SUM(stockLevel) AS total_inventory FROM inventory_per_sku GROUP BY productSKU

Astaga! Jadinya 154x3=462 atau inventaris dihitung tiga kali! Ini disebut cross join yang tidak disengaja (topik yang akan dibahas nanti).

Klik Check my progress untuk memverifikasi tujuan.

Kendala: kunci tidak unik

Tugas 6. Solusi kendala gabungan: gunakan SKU yang berbeda sebelum penggabungan

Apa saja pilihan untuk mengatasi dilema penghitungan rangkap tiga yang Anda alami? Pertama, Anda perlu memilih hanya SKU yang berbeda dari situs sebelum menggabungkan dengan set data lainnya.

Anda tahu bahwa mungkin ada lebih dari satu nama produk (misalnya 7" Dog Frisbee) yang dapat menggunakan SKU yang sama.

  1. Kumpulkan semua nama yang mungkin ke dalam array:
SELECT productSKU, ARRAY_AGG(DISTINCT v2ProductName) AS push_all_names_into_array FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE productSKU = 'GGOEGAAX0098' GROUP BY productSKU

Sekarang, alih-alih memiliki baris untuk tiap Nama Produk, Anda hanya memiliki satu baris untuk tiap SKU unik.

  1. Jika Anda ingin menghapus duplikat nama produk, Anda bahkan dapat membatasi array menggunakan fungsi LIMIT, seperti:
SELECT productSKU, ARRAY_AGG(DISTINCT v2ProductName LIMIT 1) AS push_all_names_into_array FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE productSKU = 'GGOEGAAX0098' GROUP BY productSKU

Kendala gabungan: kehilangan kumpulan data setelah penggabungan

Sekarang Anda siap untuk menggabungkan dengan set data inventaris produk Anda lagi.

  1. Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
#standardSQL SELECT DISTINCT website.productSKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU

Tampaknya 819 SKU hilang setelah menggabungkan set data tersebut. Selidiki hal ini dengan menambahkan lebih banyak kekhususan di kolom Anda (satu kolom SKU dari tiap set data):

  1. Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
#standardSQL # pull ID fields from both tables SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU # IDs are present in both tables, how can you dig deeper?

Tampaknya SKU tersebut ada di kedua set data setelah penggabungan 1.090 kumpulan data ini. Bagaimana cara menemukan kumpulan data yang hilang?

Solusi kendala gabungan: memilih jenis gabungan yang benar dan memfilter NULL

Jenis JOIN default adalah INNER JOIN yang menampilkan kumpulan data hanya jika ada kecocokan SKU di tabel kiri dan kanan yang digabungkan.

  1. Tulis ulang kueri sebelumnya untuk menggunakan jenis penggabungan yang berbeda guna menyertakan semua kumpulan data dari tabel situs, terlepas dari apakah ada kecocokan pada kumpulan data SKU inventaris produk atau tidak. Pilihan jenis gabungan: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN.

Solusi yang dapat dilakukan:

#standardSQL # the secret is in the JOIN type # pull ID fields from both tables SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website LEFT JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU
  1. Klik Run.

Anda telah berhasil menggunakan LEFT JOIN untuk menampilkan ke-1.909 SKU asli situs dalam hasil Anda.

Berapa banyak SKU yang hilang dari set inventaris produk Anda?

  1. Tulis kueri untuk memfilter nilai NULL dari tabel inventaris.

Solusi yang dapat dilakukan:

#standardSQL # find product SKUs in website table but not in product inventory table SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website LEFT JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE inventory.SKU IS NULL
  1. Klik Run.

Pertanyaan: Berapa banyak produk yang hilang?

Jawaban: 819 produk hilang (SKU IS NULL) dari set data inventaris produk Anda.

  • Hapus kueri sebelumnya dan jalankan kueri di bawah ini untuk mengonfirmasi penggunaan salah satu SKU spesifik dari set data situs:
#standardSQL # you can even pick one and confirm SELECT * FROM `data-to-insights.ecommerce.products` WHERE SKU = 'GGOEGATJ060517' # query returns zero results

Sekarang, bagaimana dengan situasi sebaliknya? Apakah ada produk dalam set data inventaris produk tetapi hilang dari situs?

  1. Tulis kueri menggunakan jenis gabungan yang berbeda untuk menyelidikinya.

Solusi yang dapat dilakukan:

#standardSQL # reverse the join # find records in website but not in inventory SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website RIGHT JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE website.productSKU IS NULL
  1. Klik Run.

Jawaban: Ya. Ada dua SKU produk yang hilang dari set data situs

Selanjutnya, tambahkan lebih banyak kolom dari set data inventaris produk untuk mendapatkan detail selengkapnya.

  • Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
#standardSQL # what are these products? # add more fields in the SELECT STATEMENT SELECT DISTINCT website.productSKU AS website_SKU, inventory.* FROM `data-to-insights.ecommerce.all_sessions_raw` AS website RIGHT JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE website.productSKU IS NULL

Mengapa produk di bawah ini hilang dari set data situs e-commerce?

website_SKU

SKU

name

orderedQuantity

stockLevel

restockingLeadTime

sentimentScore

sentimentMagnitude

null

GGOBJGOWUSG69402

USB wired soundbar - in store only

10

15

2

1.0

1.0

null

GGADFBSBKS42347

PC gaming speakers

0

100

1

null

null

Kemungkinan jawaban:

  • Satu produk baru (tidak ada pesanan, tidak ada sentimentScore) dan satu produk yang berstatus "in store only"
  • Kemungkinan lainnya adalah produk baru dengan 0 pesanan

Mengapa produk baru tidak muncul di set data situs Anda?

  • Set data situs adalah transaksi pesanan sebelumnya oleh pelanggan. Produk baru yang belum pernah terjual tidak akan muncul di analisis web sampai produk tersebut dilihat atau dibeli.
Catatan: Anda biasanya tidak akan melihat RIGHT JOIN dalam kueri produksi. Anda cukup melakukan LEFT JOIN dan mengganti urutan tabel.

Bagaimana jika Anda menginginkan satu kueri yang mencantumkan semua produk yang hilang dari situs atau inventaris?

  1. Tulis kueri menggunakan tipe penggabungan yang berbeda.

Solusi yang dapat dilakukan:

#standardSQL SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website FULL JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE website.productSKU IS NULL OR inventory.SKU IS NULL
  1. Klik Run.

Anda memiliki 819+2=821 SKU produk.

LEFT JOIN + RIGHT JOIN = FULL JOIN yang menampilkan semua kumpulan data dari kedua tabel, terlepas dari apakah ada kunci gabungan yang cocok atau tidak. Anda kemudian memfilter dan mengeluarkan ketidakcocokan pada salah satu sisi

Kendala gabungan: cross join yang tidak disengaja

Tidak mengetahui hubungan antara kunci tabel data (1:1, 1:N, N:N) dapat memberikan hasil yang tidak diharapkan dan juga mengurangi performa kueri secara signifikan.

Jenis gabungan yang terakhir adalah CROSS JOIN.

Buat tabel baru dengan persentase diskon seluruh situs yang ingin Anda terapkan di seluruh produk dalam kategori Clearance.

  1. Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
#standardSQL CREATE OR REPLACE TABLE ecommerce.site_wide_promotion AS SELECT .05 AS discount;

Di panel kiri, site_wide_promotion kini tercantum di bagian Resource di bawah project dan set data Anda.

  1. Hapus kueri sebelumnya dan jalankan kueri di bawah ini untuk mengetahui berapa banyak produk yang ada dalam clearance:
SELECT DISTINCT productSKU, v2ProductCategory, discount FROM `data-to-insights.ecommerce.all_sessions_raw` AS website CROSS JOIN ecommerce.site_wide_promotion WHERE v2ProductCategory LIKE '%Clearance%'

Catatan: Untuk CROSS JOIN, perhatikan bahwa tidak ada kondisi gabungan (misalnya ON atau USING). Isi kolom ini cukup dikalikan dengan set data pertama atau diskon 0,05 di semua item.

Lihat dampak penambahan lebih dari satu kumpulan data secara tidak disengaja di tabel diskon.

  1. Hapus kueri sebelumnya dan jalankan kueri di bawah ini untuk memasukkan dua kumpulan data lagi ke dalam tabel promosi:
INSERT INTO ecommerce.site_wide_promotion (discount) VALUES (.04), (.03);

Selanjutnya, lihat nilai data di tabel promosi.

  1. Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
SELECT discount FROM ecommerce.site_wide_promotion

Berapa banyak kumpulan data yang ditampilkan?

Jawaban: 3

Apa yang terjadi jika Anda menerapkan diskon lagi di semua 82 produk clearance?

  1. Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
SELECT DISTINCT productSKU, v2ProductCategory, discount FROM `data-to-insights.ecommerce.all_sessions_raw` AS website CROSS JOIN ecommerce.site_wide_promotion WHERE v2ProductCategory LIKE '%Clearance%'

Berapa banyak produk yang ditampilkan?

Jawaban: Alih-alih 82, Anda sekarang memiliki 246 kumpulan data yang ditampilkan dan jumlah ini lebih banyak daripada tabel awal Anda.

Sekarang selidiki penyebab utamanya dengan memeriksa satu SKU produk.

  1. Hapus kueri sebelumnya, lalu jalankan kueri di bawah ini:
#standardSQL SELECT DISTINCT productSKU, v2ProductCategory, discount FROM `data-to-insights.ecommerce.all_sessions_raw` AS website CROSS JOIN ecommerce.site_wide_promotion WHERE v2ProductCategory LIKE '%Clearance%' AND productSKU = 'GGOEGOLC013299'

Apa dampak dari CROSS JOIN?

Jawaban: Karena ada 3 kode diskon untuk digabungkan dengan cross join, Anda menyebabkan set data asli dikalikan 3.

Catatan: Perilaku ini tidak terbatas pada cross join. Dengan normal join, Anda dapat melakukan cross join secara tidak sengaja ketika hubungan datanya adalah many-to-many. Hal ini dapat dengan mudah menyebabkan jutaan atau bahkan miliaran kumpulan data ditampilkan secara tidak sengaja.

Solusinya adalah mengetahui hubungan data Anda sebelum melakukan penggabungan dan jangan menganggap kunci-kunci adalah unik.

Klik Check my progress untuk memverifikasi tujuan.

Solusi kendala gabungan

Selamat!

Anda telah menyelesaikan lab ini dan mengatasi beberapa kendala serius dalam penggabungan SQL dengan mengidentifikasi kumpulan data duplikat dan mengetahui kapan harus menggunakan tiap jenis JOIN. Bagus!

Langkah berikutnya/Pelajari lebih lanjut

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 03 Februari 2024

Lab Terakhir Diuji pada 20 September 2023

Hak cipta 2024 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.