Ubah Kekacauan Menjadi Keuntungan: Memahami Proses ETL
Diterbitkan: 2022-03-11Salah satu kesalahan paling kritis yang mencegah perusahaan memberikan informasi pengambilan keputusan penting kepada pengguna bisnis adalah tidak adanya data yang dapat diandalkan dari satu atau lebih sumber data, dikumpulkan di satu lokasi, terorganisir dan siap untuk digunakan.
Bayangkan skenario ini—Anda adalah manajer TI dari perusahaan casing ponsel dengan lokasi ritel di seluruh Amerika Serikat. Dewan direksi Anda sedang berjuang untuk membuat keputusan berdasarkan penjualan karena informasinya tersedia tetapi berada di lokasi dan format yang berbeda. Salah satu direktur meminta Anda untuk membuat dasbor dengan informasi penjualan dari semua titik penjualan untuk dipresentasikan dalam rapat dewan berikutnya.
Anda sudah tahu bahwa hampir tidak mungkin untuk mengkonsolidasikan informasi karena format dan struktur yang berbeda. Beberapa kios ritel masih menggunakan sistem kepemilikan dalam database Oracle. Toko yang lebih besar menggunakan sistem Salesforce baru. Kios terbaru yang mulai beroperasi selama transisi sistem memiliki spreadsheet bersama yang digunakan untuk menghitung penjualan.
Bagaimana Anda akan menyusun semua data dari lokasi, format, dan struktur yang berbeda ke dalam database unik yang siap diakses untuk pembuatan dasbor?
Dasar-dasar ETL
ETL adalah singkatan dari Extract, Transform, dan Load . ETL adalah sekelompok proses yang dirancang untuk mengubah penyimpanan data yang kompleks ini menjadi proses yang terorganisir, andal, dan dapat direplikasi untuk membantu perusahaan Anda menghasilkan lebih banyak penjualan dengan data yang sudah Anda miliki.
Dalam kasus kami, kami akan menerima data dari database Oracle (kebanyakan kios), dari Salesforce (toko), dan dari spreadsheet (kios baru), mengekstrak data, mengubah bila perlu, dan memuat ke dalam satu database gudang data untuk menjadi diakses oleh alat pelaporan dan digunakan untuk menghasilkan dasbor dan kartu skor.
Mari selami tiga langkah ETL untuk menguraikan prosesnya.
Ekstraksi
Ekstraksi adalah proses menerima data dari satu atau beberapa sumber. Sumber dapat memiliki format dan struktur yang berbeda, seperti dokumen, spreadsheet, file CSV, file datar, database relasional seperti Oracle, MySQL, SQL Server, database non-relasional, dan sebagainya.
Ada dua jenis utama ekstraksi: penuh dan parsial .
- Ekstraksi penuh digunakan untuk ekstraksi awal atau ketika jumlah data dan akibatnya waktu untuk ekstraksi dapat diterima.
- Ekstraksi sebagian direkomendasikan ketika tidak perlu mengekstrak semua data lagi, atau jumlah data cukup besar untuk membuat ekstraksi penuh tidak mungkin dilakukan. Dalam ekstraksi parsial, hanya data yang diperbarui atau data baru yang akan diekstraksi.
Selain aspek-aspek ini, beberapa pertimbangan lain diperlukan ketika memilih antara ekstraksi penuh atau sebagian, dan saya ingin menjelaskan salah satunya: ketersediaan dan integritas data .
Ini berarti bahwa hanya transaksi yang telah selesai yang akan dipertimbangkan untuk ekstraksi, menghilangkan data yang dapat menyebabkan kesalahan integritas. Misalnya, tes online untuk mengidentifikasi pengetahuan seorang insinyur dengan 10 pertanyaan. Jika seorang insinyur berada di tengah ujian dan telah menjawab beberapa pertanyaan tetapi belum selesai, proses ekstraksi tidak dapat membaca pertanyaan dari tes yang belum selesai. Ini dapat menyebabkan kesalahan integritas.
Transformasi
Setelah mengekstrak data, kita dapat memulai proses transformasi: membersihkan, memanipulasi, dan mengubah data sesuai dengan aturan bisnis dan kriteria teknis untuk mempertahankan tingkat kualitas data yang dapat diterima.
Tergantung pada sejumlah faktor, penggunaan area pementasan mungkin diperlukan. Area pementasan adalah ruang penyimpanan perantara yang digunakan untuk menyimpan sementara data yang diambil dari sumber data untuk diubah.
Di beberapa proyek, biasanya yang memiliki sedikit data, tidak perlu menggunakan area pementasan, tetapi sebagian besar proyek menggunakannya.
Ada berbagai tugas yang dilakukan selama fase transformasi:
- Seleksi: kriteria untuk memilih data yang diekstraksi. Seleksi dapat dilakukan selama fase ekstraksi, selama fase transformasi, atau di kedua fase.
- Integration : penggabungan data dari tahap ekstraksi ke staging area. Kombinasi ini berarti menambah, menghapus, dan memperbarui data di staging area berdasarkan data yang diekstraksi.
- Bergabung: digunakan untuk menggabungkan data yang diekstraksi, mirip dengan gabungan SQL (gabung dalam, gabung kiri, gabung kanan, gabung penuh, dll.)
- Pembersihan atau penggosokan: menghapus data yang tidak konsisten atau tidak valid, atau data dengan kesalahan untuk meningkatkan kualitas data. Bekerja dengan beberapa sumber data meningkatkan kemungkinan masalah data yang perlu dibersihkan, seperti:
- Integritas referensial (pelanggan dengan kategori tidak ada)
- Nilai yang hilang (pelanggan tanpa ID)
- Keunikan (lebih dari satu orang dengan SSN yang sama)
- Salah eja (Sun Diego, Cannada, L.Angeles)
- Nilai kontradiktif (Alex dob 04.27.1974, Alex dob 04.14.2000)
- dan banyak lagi
- Peringkasan: meringkas kumpulan data untuk penggunaan posterior
- Agregasi: data dikompilasi dan diringkas dalam kelompok
- Konsolidasi: data dari berbagai sumber atau struktur yang dikonsolidasikan dalam satu set data
Berikut adalah beberapa jenis transformasi umum:
- Hapus data duplikat
- Memisahkan dan menggabungkan
- Konversi (tanggal, waktu, topeng angka, pengukuran)
- Pengkodean (Pria ke M)
- Perhitungan (item_value = unit_Price * kuantitas)
- Pembuatan kunci
Memuat
Last but not least, proses terakhir dalam ETL adalah memuat data ke tujuan. Loading adalah tindakan memasukkan data yang diubah (dari staging area atau tidak) ke dalam repositori, biasanya database gudang data.
Ada tiga jenis utama pemuatan data: penuh atau awal, tambahan, dan penyegaran.
- Penuh atau awal berarti beban lengkap dari data yang diekstraksi dan diubah. Semua data di staging area akan dimuat ke tujuan akhir untuk disiapkan bagi pengguna bisnis.
- Beban tambahan adalah proses membandingkan data yang diubah dengan data di tujuan akhir dan hanya memuat data baru. Beban tambahan dapat digunakan bersama dengan beban penyegaran, dijelaskan di bawah.
- Refresh load adalah proses memperbarui data di tujuan akhir untuk mencerminkan perubahan yang dibuat di sumber aslinya. Refresh bisa penuh atau inkremental.
Singkatnya, setiap perusahaan, terlepas dari ukurannya, dapat menggunakan proses ETL untuk mengintegrasikan informasi yang sudah ada dan menghasilkan lebih banyak informasi untuk pengambilan keputusan, mengubah data yang sebelumnya tidak dapat digunakan menjadi sumber pendapatan baru.
Pengujian
Pengujian adalah salah satu fase paling penting dari ETL, namun juga salah satu yang paling diabaikan.

Mengubah data dari sumber dan struktur yang berbeda dan memuatnya ke dalam gudang data sangat kompleks dan dapat menghasilkan kesalahan. Kesalahan yang paling umum dijelaskan dalam fase transformasi di atas.
Keakuratan data adalah kunci keberhasilan, sedangkan ketidakakuratan adalah resep bencana. Oleh karena itu, profesional ETL memiliki misi untuk menjamin integritas data selama keseluruhan proses. Setelah setiap fase, tes harus dilakukan. Apakah mengekstrak data dari satu sumber atau dari beberapa sumber, data harus diperiksa untuk memastikan tidak ada kesalahan.
Hal yang sama harus dilakukan setelah transformasi apa pun. Misalnya, ketika meringkas data selama fase transformasi, data harus diperiksa untuk menjamin bahwa tidak ada data yang hilang dan jumlahnya benar.
Setelah memuat data hasil transformasi ke dalam data warehouse, proses pengujian harus diterapkan kembali. Data yang dimuat perlu dibandingkan dengan data yang diubah dan setelah itu dengan data yang diekstraksi.
Dalam contoh perusahaan casing ponsel kami, kami bekerja dengan tiga sumber berbeda (database Oracle berpemilik, Salesforce, dan spreadsheet) dan format yang berbeda. Tahap pengujian dapat menggunakan data sampel dari sumber asli dan membandingkannya dengan data yang ada di staging area untuk menjamin ekstraksi terjadi tanpa kesalahan.
Data sampel—yang dalam hal ini dapat berupa informasi penjualan dari tiga lokasi berbeda (toko, kios lama, kios baru)—akan dibandingkan dengan sumber aslinya. Perbedaannya, jika ada, harus dianalisis untuk melihat apakah perbedaan tersebut dapat diterima atau jika ada kesalahan.
Jika kesalahan ditemukan, kesalahan itu harus diperbaiki, dan ada beberapa keputusan yang harus dibuat jika Anda perlu memperbaikinya: Haruskah data asli diubah? Apakah mungkin untuk melakukannya? Jika kesalahan tidak dapat diperbaiki di sumber aslinya, dapatkah diperbaiki dengan beberapa transformasi?
Dalam beberapa kasus, data dengan kesalahan harus dihilangkan dan peringatan dipicu untuk memberi tahu mereka yang bertanggung jawab.
Beberapa contoh pengujian:
- Data memerlukan validasi
- Kualitas data
- Pertunjukan
- Aturan data
- Pemodelan data
Pencatatan
Mencatat proses ETL adalah jaminan utama bahwa Anda memiliki sistem yang dapat dipelihara dan mudah diperbaiki.
ETL dengan proses logging yang benar penting untuk menjaga seluruh operasi ETL dalam keadaan peningkatan yang konstan, membantu tim mengelola bug dan masalah dengan sumber data, format data, transformasi, tujuan, dll.
Proses log yang kuat membantu tim menghemat waktu sehingga mereka dapat mengidentifikasi masalah dengan lebih cepat dan mudah, dan lead engineer membutuhkan lebih sedikit waktu untuk menunjukkan masalah secara langsung. Kadang-kadang, kesalahan terjadi di tengah-tengah mengekstraksi banyak data, dan tanpa log, mengidentifikasi masalah itu sulit—kadang-kadang hampir tidak mungkin. Tanpa log, seluruh proses harus dijalankan kembali. Dengan menggunakan log, tim dapat dengan cepat mengidentifikasi file dan baris yang menyebabkan masalah dan hanya dapat memperbaiki data tersebut.
Satu-satunya kasus yang dapat saya bayangkan di mana log tidak begitu penting adalah dengan sistem tidak otomatis yang sangat kecil, di mana proses berjalan secara manual dan ada sejumlah kecil data yang dapat dipantau dengan tangan.
Log meningkatkan otomatisasi. Proses ETL dengan jumlah data yang besar yang berjalan secara otomatis membutuhkan sistem log. Jika direncanakan dan dijalankan dengan baik, semua upaya yang dilakukan untuk membangun sistem logging akan membuahkan hasil dalam bentuk identifikasi kesalahan yang lebih cepat, data yang lebih andal, dan poin peningkatan yang ditemukan dalam file log.
Ada tiga langkah utama dalam membuat sistem log: menghasilkan, mengarsipkan, dan menganalisis .
- Generate adalah proses mendokumentasikan apa yang terjadi selama eksekusi pipeline ETL: saat proses dimulai, file atau tabel mana yang sedang diekstraksi, data yang disimpan di staging area, pesan kesalahan, dan banyak lagi. Semua informasi penting yang dapat membantu para insinyur harus dicatat. Peringatan : Perhatikan untuk tidak menghasilkan begitu banyak informasi yang hanya akan menghabiskan waktu dan ruang dan tidak akan membantu.
- Data log arsip berarti menyimpan rekam jejak eksekusi sebelumnya untuk mencari skenario masa lalu untuk mengidentifikasi kesalahan atau membandingkan dengan skenario saat ini untuk mencari perbaikan. Penting untuk memeriksa relevansi titik tertentu dalam sejarah untuk disimpan—data dari masa lalu, di mana strukturnya berubah berkali-kali, tidak layak disimpan.
- Analisis . Analisis log sangat penting. Menyimpan banyak data yang tidak dianalisis tidak masuk akal. Hanya membutuhkan waktu dan uang untuk menghasilkan dan menyimpan data. Analisis log penting tidak hanya untuk membantu mencari kesalahan tetapi juga untuk mengidentifikasi poin perbaikan dan meningkatkan kualitas data secara keseluruhan.
Pertunjukan
Proses ETL dapat bekerja dengan banyak data dan mungkin menghabiskan banyak biaya—baik dari segi waktu yang dihabiskan untuk menyiapkannya maupun sumber daya komputasi yang diperlukan untuk memproses data. Saat merencanakan integrasi, insinyur harus mengingat perlunya semua data yang digunakan. Hal terbaik yang harus dilakukan adalah bekerja dengan jumlah data minimum untuk mencapai tujuan, daripada menghabiskan waktu dan uang hanya untuk memindahkan data yang tidak berguna. Juga, ingatlah bahwa jumlah data cenderung meningkat dari waktu ke waktu, jadi cobalah untuk mempertimbangkan kebutuhan Anda di masa mendatang.
Berapa banyak usaha yang harus dilakukan untuk merancang sistem logging?
Itu tergantung pada sejumlah faktor yang berbeda seperti jumlah dan frekuensi data yang akan diproses. Sistem kecil dengan sedikit data dapat dikelola secara manual, tanpa perlu berinvestasi dalam sistem logging tingkat lanjut.
Perusahaan dengan jumlah data yang besar, banyak proses yang berbeda, sumber dan format data yang berbeda, dan pipeline yang kompleks harus berinvestasi dalam membuat sistem logging. Seperti yang telah kami sebutkan, sistem log yang baik dapat menghemat banyak waktu dan uang.
Untuk pendekatan yang lebih jelas, terlepas dari ukuran perusahaan, jumlah data, dan frekuensi integrasi, proses ETL harus menguntungkan . Investasi dalam waktu, uang, dan sumber daya teknis harus menghasilkan pengembalian—seperti yang dikatakan ekonom Milton Friedman: “Tidak ada makan siang gratis.”
Singkatnya, proses ETL dapat membantu perusahaan untuk meningkatkan keuntungan dengan data yang sudah mereka miliki tetapi tidak digunakan dengan cara yang benar. Pipa ETL dapat mengintegrasikan sistem yang berbeda, spreadsheet dengan informasi penting, dan bagian lain dari data yang tersebar di berbagai departemen dan cabang, memungkinkan organisasi untuk memanfaatkan data mereka sebaik mungkin.