Selisihnya cuma 0,25 persen, dan itu yang membuatnya berbahaya
7 September 2026·7 menit baca
Satu tabel, dua kolom yang seharusnya sama, dua angka omzet. Penjelasan yang paling masuk akal ternyata terbantah datanya sendiri.
Pertanyaannya sederhana, dan hampir tiap analis pernah ditanyai persis begini: berapa omzet bulan ini.
Tabelnya sudah ada, satu file, 49.894 baris struk penjualan sebuah kedai kopi
selama April 2019. Kolomnya lengkap: quantity, unit_price, dan
line_item_amount.
Saya menghitungnya dua kali, dengan dua cara yang seharusnya menghasilkan angka sama.
| Cara | Hasil |
|---|---|
Jumlahkan kolom line_item_amount |
233.636 |
Hitung ulang unit_price dikali quantity |
234.212 |
Selisihnya 575,60, atau 0,25 persen.
Angka sekecil itu yang justru berbahaya. Kalau selisihnya sepuluh persen, semua orang berhenti dan bertanya. Nol koma dua lima persen lolos begitu saja, masuk ke slide, lalu jadi dasar keputusan.
Langkah pertama: berapa banyak barisnya yang bermasalah
Selisih total tidak memberi tahu apa pun. Saya perlu tahu dulu: apakah ini seribu baris yang meleset sedikit-sedikit, atau segelintir baris yang meleset jauh.
230 dari 49.894 baris tidak cocok. Kurang dari setengah persen.
Jadi ini bukan pembulatan yang menumpuk. Ini segelintir baris yang salah cukup besar untuk terlihat di jumlah akhir.
Penjelasan yang paling masuk akal, dan kenapa ia gagal
Dugaan pertama saya langsung: diskon. Kalau ada potongan harga,
line_item_amount akan lebih kecil daripada harga kali jumlah, dan itu wajar.
Tabelnya bahkan punya kolom untuk itu, promo_item_yn.
Jadi dugaan itu bisa diuji, dan hasilnya:
| Baris yang tidak cocok | Jumlah |
|---|---|
| Ditandai promo | 30 |
| Ditandai bukan promo | 200 |
Delapan dari sepuluh baris bermasalah justru ditandai bukan promo.
Dugaan saya salah, dan itu bagian yang paling tidak penting. Yang penting, dugaan itu bisa dibentuk jadi sesuatu yang bisa diuji. Diuji. Lalu dibuang dalam dua menit. Dugaan yang tidak pernah diuji akan ikut masuk ke kesimpulan sebagai “kemungkinan karena diskon”, dan tidak ada yang tahu itu tebakan.
Menyempitkan: siapa, apa, di mana
Kalau bukan promo, lalu apa? Saya persempit dari tiga arah.
Produknya. Tujuh produk terlibat, tapi satu mendominasi: Chocolate
Croissant. Harga daftarnya 3,75, dan di 156 baris ia tercatat seharga 1,00
sementara kolom unit_price tetap menulis 3,75.
Gerainya. Dari sembilan gerai, cuma dua yang punya baris bermasalah.
Tanggalnya. Menumpuk di beberapa hari, terbanyak 20 dan 21 April.
Bentuknya sudah jelas sekarang: satu produk, dua gerai, beberapa hari tertentu, dijual seharga satu dolar sementara harga daftarnya tetap tercatat.
Dan di sinilah pekerjaannya berhenti
Ini kelihatan seperti promo yang tidak dicatat sebagai promo. Kasir menekan harga khusus, kolom penanda tidak ikut berubah.
Saya tidak bisa membuktikannya dari data ini, dan tidak akan menulis seolah bisa. Tidak ada kolom yang mencatat siapa mengubah harga, kapan, atau kenapa. Saya cuma punya polanya.
Jadi jawaban untuk “berapa omzet bulan ini” bukan satu angka. Jawabannya:
Dua angka, 233.636 dan 234.212. Selisihnya 575,60, berasal dari 230 baris, sebagian besar Chocolate Croissant di dua gerai. Bentuknya seperti harga khusus yang penandanya tidak ikut disetel. Sebelum salah satu angka dipakai, saya perlu tahu dari orang yang membangun tabel ini: kolom mana yang dianggap resmi.
Kalimat terakhir itu yang sering dikira kegagalan. Ia justru pekerjaannya.
Satu hal lagi yang ketemu di jalan
Sambil memeriksa, dua hal lain muncul, dan keduanya perlu ikut ditulis:
Setengah data tidak punya pelanggan. 25.033 baris, 50,2 persen, punya
customer_id bernilai nol. Pertanyaan apa pun tentang pelanggan hanya bisa
dijawab untuk separuh data, dan itu harus disebut sebelum ada yang bertanya.
Dua pelanggan tidak ada orangnya. Ada dua customer_id di tabel struk yang
tidak punya baris di tabel pelanggan, muncul di sembilan baris. Jumlahnya kecil
dan tidak mengubah apa pun di sini, tapi ia menandakan kedua tabel itu tidak
selalu sinkron.
Kalau ini masuk portofolio Anda
Empat hal di atas yang layak ditunjukkan, dan tidak satu pun berupa grafik:
- Dua cara menghitung dicoba, bukan satu
- Dugaan pertama dinyatakan, diuji, lalu dinyatakan gagal
- Masalahnya dipersempit sampai produk, gerai, dan tanggal
- Kesimpulannya berhenti di batas yang jujur, dengan pertanyaan yang jelas untuk orang berikutnya
Orang dipercaya memegang angka bukan karena selalu punya jawaban. Mereka dipercaya karena tahu kapan jawabannya belum ada, dan bisa menyebut apa yang masih kurang.