Anda di halaman 1dari 7

Test Case

Basic Knowledge

1. Apakah yang dimaksud dengan DBMS dan berikan contohnya?


DBMS merupakan singkatan dari Database Management System, sesuai dengan Namanya DBMS
merupakan sebuah algoritma database yang dirancang untuk mengelola database dengan
tujuan menghasilkan informasi atau data yang dapat di konsumsi oleh pengguna/user.
Contoh dari DBMS yang sering digunakan atau dijumpai adalah MySQL dan Oracle.
2. Apa yang kamu ketahui tentang ACID compliant pada database?
ACID (Atomicity, Consistency, Isolation, and Durability) adalah sebuah istilah untuk
menggambarkan database, dimana sebuah database harus memliki sifat atau karakteristik
tersebut agar data yang disimpan dapat diolah dan menyajikan informasi yang akurat.
3. Database apa yang paling Anda kuasai saat ini? Berikan penjelasan penggunaan yang selama ini
Anda implementasikan.
Untuk database yang paling dikuasai saat ini yaitu MySQL dan Orcale, untuk Oracle mengacu
pada pengalaman kerja saya di perusahaan sebelumnya menggunakan databse Oracle dan
MySQL sementara untuk pengolahan BigData menggunakan Hadoop. Sedangkan untuk MySQL
biasa saya gunakan untuk pembuatan website sederhana seperti landing page, website profile
atau Portofolio.
4. Database apa yang ingin Anda pelajari saat ini? Berikan alasannya.
Sebagai pelaku IT memang dituntut untuk mampu beradaptasi dengan perkembangan
Teknologi, termasuk dengan Database. Pada dasarnya saya akan beradaptasi dengan kebutuhan
perusahaan untuk mempelajari databse baru yang mungkin belum pernah saya pelajari.
Secara pribadi saya ingin mempelajari MongoDB karena merupakan database cross platform dan
open source.
5. Sebutkan metode (teknik) CDC yang kamu ketahui? Dan jelaskan masing-masing metode
tersebut.
a. Metode/Teknik dengan Timestamp
Penambahan kolom timestamp untuk mengetahui perubahan atau penambahan data.
b. Metode/Teknik dengan perbandingan datasource
Membandingkan satu per satu row dari data warehouce dengan datasource
6. Menurut Anda, metode (teknik) CDC yang mana yang Anda terapkan? Jelaskan mengapa
memakai teknik tersebut. Dan apa saja yang perlu dipersiapkan untuk menjalankan teknik
tersebut?
Saya memilih metode penambahan kolom timestamp karena lebih cepat dan lebih efisien.
Untuk menjalankan Teknik ini pertama kita perlu berkoordinasi dengan database Admin untuk
melakukan konfigurasi dan penambahan kolom timestamp.
7. Bagaimana cara menentukan sebuah query sudah optimal atau belum menurut Anda? Berikan
penjelasannya?
Menurut saya melihat query sudah optimal atau belum yaitu :
a. Script query
Dilihat dari kebutuhan data yang ingin ditampilkan, kemudian analisa query membutuhkan
query yang Panjang atau pendek dan pastikan tidak ada script query yang double proses
(harusnya bisa lebih singkat)
b. Proses query
Sebuah query bisa dikatan optimal atau tidak bisa kita Analisa
- Datasource (seberapa besar database yang akan di proses)
- Seberapa besar data yang akan ditampilkan

Jika datasource dan data yang akan ditampilkan relatif kecil maka proses query harus nya
bisa diselesaikan dengan cepat, tapi jika proses query nya lama maka perlu kita cek Kembali
query nya mungkin ada sub query yang membuat proses menjadi lama dan kurang optimal

8. Apa yang anda ketahui tentang ETL (Extract, Transform, Load)? Serta seberapa pentingkah ETL
dalam suatu proses data untuk kebutuhan perusahaan atau pengembangan bisnis?
ETL (Extract, Transform, Load) merupakan dasar pengolahan data, dimana pengolahan data
tersebut merupakan upaya integrasi data dari berbagai sumber untuk menghasilkan informasi
sesuai dengan kebutuhan.
ETL sangat penting untuk kebutuhan perusahaan dalampengembangan bisnis karena dengan
ETL suatu perusahaan akan dapat dengan mudah mendapatkan data/informasikan yang
dibutuhkan dengan akurat dengan beberapa manipulasi struktur dari data tersebut.
9. Apa yg dimaksud dengan data-mart? Apa hubungan data-mart dengan ETL dan jelaskan?
Data-mart merupakan bagian dari datawarehouse yang sangat memungkinkan untuk diolah
menjadi sebuah informasi atau reporting bahkan untuk keperluan analisis data.
Menurut pemahan saya, Data-mart adalah sebuah datasource atau data sumber yang bisa kita
olah untuk keperluan reporting ataupun analisis atau keperluan bisnis dimana untuk mengolah
Data-mart tersebut kita menggunakan istilah ETL (Extract, Transform, Load) untuk memanipulasi
struktur data supaya menampilkan data sesuai dengan yang dibutuhkan dan mudah dipahami
oleh user dalam hal ini pelaku bisnis orang yang membutuhkan data tersebut.
Secara singkat hubungan data-mart dengan ETL adalah Data-marat-> data sumber sedangan ETL
-> cara untuk mengolah data-mart tersebut.
10. Dalam suatu perusahaan pasti membutuhkan sebuah laporan yg dapat menentukan langkah
bisnis untuk kedepan, untuk mengakomodir hal tersebut apa yg perlu dilakukan oleh seorang
data engineer agar menghasilkan reporting yang optimal?
Menurut pendapat saya untuk mengoptimalkan reporting ada 2 pendekatan :
1. Proses data
Untuk data reguler maka perlu kita proses dengan automation karena format dan struktur
data akan sama dan berkelanjutan, tujuan dari automation adalah konsisten dalam
penyediaan data.
2. Struktur Data
Dari struktur data maka kita olah data sesuai dengan kebutuhan, menyajikan informasi
sesuai dengan kebutuhan dari tim bisnis. Oleh karena itu perlu berkoordinasi dengan tim
bisnis untuk kebutuhan data yang diharapkan lebih optimal.

Use Case

1. Buatlah struktur database untuk penjualan produk yang outputnya bisa menampilkan laporan
penjualan semua produk dengan filtering antara lain:
a. Berdasar cabang tertentu
b. Berdasarkan range tanggal tertentu

Dan sertakanlah dokumentasi DDL dan DML yg digunakan

Dokumentasi DDL
CREATE DATABASE penjualan;

CREATE TABLE `barang` (


`id_barang` varchar(5) NOT NULL,
`nama_barang` varchar(20) NOT NULL,
`harga_barang` int(15) NOT NULL,
`satuan` varchar(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `pelanggan` (


`id_pelanggan` varchar(5) NOT NULL,
`nama_pelanggan` varchar(15) NOT NULL,
`Alamat` varchar(15) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `toko` (


`id_toko` varchar(5) NOT NULL,
`nama_toko` varchar(20) NOT NULL,
`alamat_toko` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `trx_penjualan` (


`id_toko` varchar(5) NOT NULL,
`id_pelanggan` varchar(5) NOT NULL,
`id_barang` varchar(5) NOT NULL,
`tgl_penjualan` date NOT NULL,
`jum_barang` int(11) NOT NULL,
`harga_barang` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Dokumentasi DML
INSERT INTO `trx_penjualan` (`id_toko`, `id_pelanggan`, `id_barang`,
`tgl_penjualan`, `jum_barang`, `harga_barang`) VALUES
('t111', 'p111', 'b211', '2022-04-02', 1, 15000),
('t222', 'p111', 'b212', '2022-04-02', 1, 5000),
('t222', 'p222', 'b213', '2022-04-16', 1, 10000),
('t222', 'p222', 'b214', '2022-04-18', 1, 7000),
('t333', 'p333', '211', '2022-04-27', 1, 15000),
('t444', 'p444', 'b213', '2022-04-29', 1, 10000);
COMMIT;

INSERT INTO `toko` (`id_toko`, `nama_toko`, `alamat_toko`) VALUES


('t111', 'Toko Abadi', 'Sleman'),
('t222', 'Toko Always', 'Bantul'),
('t333', 'Toko Jaya', 'Klaten'),
('t555', 'Toko Rame', 'Solo');
COMMIT;

INSERT INTO `pelanggan` (`id_pelanggan`, `nama_pelanggan`, `Alamat`) VALUES


('p111', 'Binar', 'Blok C'),
('p222', 'Umi', 'Blok C'),
('p333', 'Abby', 'Blok C'),
('p444', 'Qonti', 'Blok C');
COMMIT;

INSERT INTO `barang` (`id_barang`, `nama_barang`, `harga_barang`, `satuan`)


VALUES
('b211', 'Sandal', 15000, 'pcs'),
('b212', 'Bulpen', 5000, 'pcs'),
('b213', 'Piring', 10000, 'pcs'),
('b214', 'Gelas', 7000, 'pcs');
COMMIT;

a. Berdasarkan cabang tertentu


Query :
SELECT
m.id_toko, m.nama_toko,
m.alamat_toko AS tk,
c.id_barang,
c.tgl_penjualan,
c.jum_barang,
c.harga_barang AS trx
FROM
toko m
LEFT JOIN trx_penjualan c USING(id_toko)
WHERE m.id_toko='t222';

Capture :
Semua transaksi

Filter berdasarkan cabang (alamat/id took)

b. Berdasarkan range tanggal


SELECT
m.id_toko, m.nama_toko, m.alamat_toko AS tk,
c.id_barang, c.tgl_penjualan, c.jum_barang, c.harga_barang AS trx
FROM toko m LEFT JOIN trx_penjualan c USING(id_toko)
WHERE c.tgl_penjualan BETWEEN '2022-04-16' AND '2022-04-29';
Capture :

2. Di era saat ini, tentu Anda sudah tidak asing lagi dengan aplikasi pengantar makanan semacam
grab-food atau go-food. Buatlah struktur database dari aplikasi layanan pesan antar tersebut
menurut pengamatan Anda.
a. Table pembeli

b. Table penjual

c. Table transaksi
d. Detail transaksi

e. Table Barang

f. Table data gambar

g. Table provinsi
Relasi Antar Tabel

3. Tolong provide data mart yang dapat mendukung output reporting (laporan) sebagai berikut:
a. Kategori produk yang paling banyak diminati
b. SELECT b.nama, COUNT(a.id_barang) AS total_terjual From detail_transaksi
A INNER JOIN barang B ON detail_transaksi.'id_barang'=barang.’id_barang'
GROUP BY b.nama ORDER BY total_terjual DESC;

Top 5 merchant seller

SELECT b.nama, COUNT(a.id_merchan) AS total_merchan From


detail_transaksi A INNER JOIN merchan B ON
detail_transaksi.'id_merchan'=merchan.’id_merchan' GROUP BY b.nama ORDER
BY total_merchan DESC Limit 5;

c. Top 5 product terlaris


SELECT b.nama, COUNT(a.id_barang) AS total_terjual From detail_transaksi
A INNER JOIN barang B ON detail_transaksi.'id_barang'=barang.’id_barang'
GROUP BY b.nama ORDER BY total_terjual DESC LIMIT 5;
d.

Grafik penjualan produk per jam, per hari, per minggu, per bulan, per tahun
Data penjualan per jam
SELECT hour,COUNT(*) AS jumlah_jam FROM tbl_transaksi WHERE
hour=DATE(NOW()) GROUP BY hour;

Data penjualan per hari


SELECT tanggal,COUNT(*) AS jumlah_harian FROM tbl_transaksi WHERE
tanggal=DATE(NOW()) GROUP BY tanggal;

Data penjualan per minggu


SELECT YEARWEEK(tanggal) AS tahun_minggu,COUNT(*) AS jumlah_mingguan
FROM tbl_data GROUP BY YEARWEEK(tanggal);
Data penjualan per bulan

SELECT CONCAT(YEAR(tanggal),'/',MONTH(tanggal)) AS tahun_bulan, COUNT(*)


AS jumlah_bulanan FROM tbl_data GROUP BY YEAR(tanggal),MONTH(tanggal);

SELECT YEAR(tanggal) AS tahun, COUNT(*) AS jumlah_tahunan FROM tbl_data


GROUP BY YEAR(tanggal);

Data penjualan per tahun


e. Promo paling sering digunakan beserta jumlah claim

f. Top 5 customer dengan pembelian terbanyak beserta detail kategori produk apa yang paling
banyak dibeli
SELECT b.nama, COUNT(a.id_pembeli) AS total_beli From transaksi A INNER
JOIN pembeli B ON transaksi.'id_pembeli'=pembeli.’id_pembeli' GROUP BY
b.nama ORDER BY total_beli DESC LIMIT 5;

4.
Langkah-langkah untuk melakukan proses ETL untuk keperluan reporting pengeluaran tiap business
unit setiap bulannya.
a. Extract data
Sebelum proses extract dilakukan, terlebih dahulu kita definisikan kebutuhan terhadap
sumber data yang akan kita gunakan. Dalam study case ini datasource sudah bersih sehingga
tidak perlu lagi dilakukan extract data dan data tersebut sudah bisa lanut ke proses
selanjutnya.
b. Transform
Pada proses ini mengubah bentuk atau struktur data diolah menjadi sesuai dengan
kebutuhan, dalam case ini struktur yang kita butuhkan adalah
- Id
- Nama
- Email
- Position
- Date
- Value
- Name (business unit)
c. Load
Pada proses ini kita menjalankan script query untuk mengeluarkan data berupa informasi
yang sesuai dengan kebutuhan, kitab isa juga memasukan (load) data hasil olahan kedalam
database.

Anda mungkin juga menyukai