Penetapan Ujian A/B dan Metrik
Menggabungkan penetapan eksperimen dengan hasil serta mengira metrik bagi setiap varian.
Penetapan Ujian A/B dan Metrik ialah pelajaran Persediaan Temu Duga SQL percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Persediaan Temu Duga SQL, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
Perkara yang Diuji oleh Soalan Ujian A/B
Soalan ujian A/B menyemak sama ada Anda boleh menggabungkan penetapan eksperimen dengan hasil dengan betul dan mengira metrik yang tepat bagi setiap varian.
Perangkapnya hampir selalu terletak pada gabungan: mengira hasil bagi pengguna yang tidak pernah didaftarkan, atau mengira dua kali pengguna yang ditetapkan dua kali. Dapatkan gabungan penetapan yang betul, maka metrik hanyalah kiraan aritmetik mudah.
Dua Jadual yang Diberikan
Anda akan menemui jadual penetapan dan jadual hasil:
assignments(user_id, variant, assigned_at)yang varian di dalamnya ialah 'kawalan' atau 'rawatan'.orders(user_id, order_id, amount, created_at)atau jadual peristiwa umum.
Penetapan ialah sumber rujukan utama untuk menentukan siapa yang menyertai eksperimen. Hasil hanya dikira jika pengguna muncul dalam penetapan.
CREATE TABLE assignments (
user_id INT,
variant VARCHAR(20),
assigned_at TIMESTAMP
);
CREATE TABLE orders (
user_id INT,
order_id INT,
amount NUMERIC,
created_at TIMESTAMP
);Mulakan daripada Penetapan, LEFT JOIN Hasil
Peraturan asas: mulakan daripada jadual penetapan dan gunakan LEFT JOIN untuk hasil. Ini mengekalkan pengguna yang didaftarkan tetapi tidak pernah melakukan penukaran, yang diperlukan untuk mendapatkan penyebut yang jujur.
INNER JOIN akan menggugurkan pengguna yang tidak melakukan penukaran secara senyap-senyap dan menaikkan kadar penukaran anda.
SELECT
a.user_id,
a.variant,
o.order_id
FROM assignments a
LEFT JOIN orders o
ON o.user_id = a.user_id;Mengira Penukaran bagi Setiap Varian
Kadar penukaran = pengguna yang melakukan penukaran / pengguna yang ditetapkan, bagi setiap varian. Kira penukar unik dalam pengangka dan semua pengguna yang ditetapkan dalam penyebut.
Gunakan COUNT(DISTINCT ...) pada pengguna pesanan supaya pengguna yang mempunyai tiga pesanan masih dikira sebagai seorang penukar.
SELECT
a.variant,
COUNT(DISTINCT a.user_id) AS assigned,
COUNT(DISTINCT o.user_id) AS converters,
ROUND(100.0 * COUNT(DISTINCT o.user_id)
/ COUNT(DISTINCT a.user_id), 2) AS conv_rate_pct
FROM assignments a
LEFT JOIN orders o ON o.user_id = a.user_id
GROUP BY a.variant;Perangkap Penetapan Dua Kali
Bagaimana jika seorang pengguna muncul dua kali dalam penetapan, sekali bagi setiap varian? Gabungan anda kini mengira pengguna itu pada kedua-dua belah dan eksperimen tercemar.
Penemu duga sering sengaja menguji perkara ini. Tangani dengan membuang pendua penetapan supaya setiap pengguna hanya mempunyai satu varian, biasanya berdasarkan penetapan pertama, sebelum menggabungkannya.
WITH dedup AS (
SELECT user_id, variant,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY assigned_at) AS rn
FROM assignments
)
SELECT user_id, variant
FROM dedup
WHERE rn = 1;Kira Hanya Hasil Selepas Penetapan
Pesanan yang dibuat sebelum pengguna ditetapkan tidak mungkin disebabkan oleh eksperimen. Tambahkan pengawal masa: hasil mesti berlaku pada atau selepas assigned_at.
Letakkan syarat ini dalam klausa ON bagi LEFT JOIN supaya pengguna yang tidak melakukan penukaran masih dikekalkan.
SELECT
a.variant,
COUNT(DISTINCT a.user_id) AS assigned,
COUNT(DISTINCT o.user_id) AS converters
FROM assignments a
LEFT JOIN orders o
ON o.user_id = a.user_id
AND o.created_at >= a.assigned_at
GROUP BY a.variant;ON berbanding WHERE dalam Cantuman Hasil
Ini soalan susulan yang pasti muncul. Jika Anda memindahkan o.created_at >= a.assigned_at ke dalam WHERE, Anda menukarkan LEFT JOIN menjadi gabungan dalaman: baris bagi pengguna yang tidak pernah membuat pesanan mempunyai o.created_at = NULL, predikat itu ialah UNKNOWN, lalu baris tersebut hilang.
Kekalkan syarat penapisan hasil dalam ON untuk mengekalkan pengguna yang tidak melakukan penukaran dalam penyebut.
Metrik Pendapatan bagi Setiap Varian
Selain penukaran, penemu duga bertanya tentang pendapatan bagi setiap pengguna (ARPU) dan pendapatan bagi setiap penukar. Jumlahkan amaun, kemudian bahagi dengan penyebut yang betul.
ARPU dikira dengan membahagikan pendapatan kepada semua pengguna yang ditetapkan; pendapatan bagi setiap penukar pula hanya dibahagikan kepada pengguna yang membuat pesanan. Nyatakan dengan jelas metrik yang diperlukan oleh perniagaan.
SELECT
a.variant,
COUNT(DISTINCT a.user_id) AS assigned,
COALESCE(SUM(o.amount), 0) AS revenue,
ROUND(COALESCE(SUM(o.amount), 0)
/ COUNT(DISTINCT a.user_id), 2) AS arpu
FROM assignments a
LEFT JOIN orders o
ON o.user_id = a.user_id
AND o.created_at >= a.assigned_at
GROUP BY a.variant;Corak Pengagregatan Dua Tahap
Apabila metriknya ialah "purata pesanan bagi setiap pengguna", jangan mengiranya dalam satu laluan kerana Anda akan mencampurkan tahap pengguna dan tahap pesanan. Agregatkan ke tahap pengguna dahulu, kemudian kira purata merentas pengguna.
Corak mengikut pengguna dahulu, kemudian mengikut varian, menggunakan tahap data yang betul dan merupakan pembezaan biasa dalam temu duga.
WITH per_user AS (
SELECT a.variant, a.user_id,
COUNT(o.order_id) AS orders_cnt
FROM assignments a
LEFT JOIN orders o
ON o.user_id = a.user_id
AND o.created_at >= a.assigned_at
GROUP BY a.variant, a.user_id
)
SELECT variant, ROUND(AVG(orders_cnt), 3) AS avg_orders_per_user
FROM per_user
GROUP BY variant;Pertanyaan Lengkap yang Boleh Dipertahankan
Gabungkan semuanya: buang pendua kepada penetapan pertama, mulakan daripada penetapan, letakkan pengawal masa hasil dalam ON, dan laporkan penukaran serta ARPU bagi setiap varian. Huraikan tujuan setiap pengawal semasa menulisnya.
WITH enrolled AS (
SELECT user_id, variant, assigned_at
FROM (
SELECT user_id, variant, assigned_at,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY assigned_at) AS rn
FROM assignments
) x WHERE rn = 1
)
SELECT
e.variant,
COUNT(DISTINCT e.user_id) AS assigned,
COUNT(DISTINCT o.user_id) AS converters,
ROUND(100.0 * COUNT(DISTINCT o.user_id)
/ COUNT(DISTINCT e.user_id), 2) AS conv_pct,
ROUND(COALESCE(SUM(o.amount),0)
/ COUNT(DISTINCT e.user_id), 2) AS arpu
FROM enrolled e
LEFT JOIN orders o
ON o.user_id = e.user_id
AND o.created_at >= e.assigned_at
GROUP BY e.variant;Semakan Kewajaran yang Dijangka oleh Penemu Duga
Sebelum memetik keputusan, sahkan persediaan eksperimen:
- Adakah saiz varian agak seimbang? Pembahagian 90/10 sedangkan 50/50 yang dimaksudkan menandakan ralat.
- Adakah mana-mana pengguna berada dalam kedua-dua varian? Kira pengguna yang mempunyai lebih daripada satu varian berbeza.
- Adakah terdapat penetapan yang tiada tetingkap hasil yang mungkin (ditetapkan selepas had data)?
Menawarkan semakan ini tanpa diminta menunjukkan kematangan analisis.
SELECT user_id, COUNT(DISTINCT variant) AS variant_count
FROM assignments
GROUP BY user_id
HAVING COUNT(DISTINCT variant) > 1;Semakan Pantas
Anda mengira penukaran bagi setiap varian dengan menggabungkan pesanan kepada penetapan menggunakan LEFT JOIN, tetapi meletakkan o.created_at >= a.assigned_at dalam klausa WHERE. Apakah yang berlaku?
Imbas Kembali: Penetapan Ujian A/B dan Metrik
Anda kini mempunyai panduan analisis eksperimen yang boleh dipertahankan:
- Anggap penetapan sebagai sumber rujukan utama; gunakan LEFT JOIN untuk hasil.
- Buang pendua supaya setiap pengguna hanya mempunyai satu varian (penetapan pertama).
- Letakkan pengawal masa hasil dalam klausa ON, bukan WHERE, untuk mengekalkan pengguna yang tidak melakukan penukaran.
- Pilih penyebut yang betul bagi penukaran, ARPU dan pendapatan bagi setiap penukar.
- Agregatkan ke tahap pengguna dahulu untuk mendapatkan purata bagi setiap pengguna.
- Jalankan semakan kewajaran terhadap keseimbangan pembahagian dan penetapan silang.
Seterusnya: menukarkan metrik bagi setiap varian ini kepada peningkatan, keertian statistik dan metrik pengawal.
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Penetapan Ujian A/B dan Metrik” percuma?
Ya — teks penuh “Penetapan Ujian A/B dan Metrik” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Persediaan Temu Duga SQL, tingkat taraf kepada CoddyKit PRO. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Penetapan Ujian A/B dan Metrik”?
Menggabungkan penetapan eksperimen dengan hasil serta mengira metrik bagi setiap varian. Anda berlatih Persediaan Temu Duga SQL menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Persediaan Temu Duga SQL?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Persediaan Temu Duga SQL di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Penetapan Ujian A/B dan Metrik” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Persediaan Temu Duga SQL ini?
Ya. Setiap pelajaran Persediaan Temu Duga SQL menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Membina Corong Berbilang Langkah
- Peristiwa Mengikut Turutan dan Tetingkap Masa
- Penetapan Ujian A/B dan Metrik
- Peningkatan, Keberertian dan Pengawal dalam SQL