C4 · Modul 02
Format dan penyimpanan
41 langkah singkat, dari mudah sampai tantangan.
Level 1
Kenal
Level 2
Paham
Level 3
Terapkan
Level 4
Tantangan
Level 5
Pendalaman
Intinya
- Terima format apa pun dari sumber, simpan salinan mentahnya, lalu ubah secepatnya ke format kolumnar bertipe (Parquet).
- CSV dibaca dengan skema per sumber yang ditulis: pemisah, pengodean, tipe, format tanggal, token kosong. Jangan pernah menebak (
format="mixed",sep=None). - Bilangan yang bisa kosong memakai
Int64; uang tidak pernahfloat64. - Parquet menyimpan skema dan statistik min/maks di footer, sehingga mesin kueri bisa melewati row group (predicate pushdown); urutan baris menentukan ukuran dan seberapa banyak yang bisa dilewati.
Sebelum mulai
±6 jam.
Modul ini memakai materi di bawah. Belum yakin? Ulas dulu bagian yang disebut.
Hasil belajar: memilih format berkas (CSV, JSON, JSON Lines, Parquet, Arrow) dengan alasan yang terukur: tata letak baris atau kolom, skema, kompresi, dan cara membacanya sebagian; membaca CSV yang ambigu tanpa menebak (pemisah, kutip RFC 4180, desimal dan ribuan, pengodean dan BOM, tanggal dd/mm/yyyy, token kosong, kolom yang muncul di tengah jalan); menulis baca_mesin_a, baca_mesin_b, dan baca_pos yang mengubah dua format mesin kasir ke skema normal POS; membedah berkas Parquet (footer, row group, kamus dan RLE, statistik min/maks) dan memakai statistiknya untuk melewati row group; memilih urutan baris, kompresi, dan ukuran row group dengan angka ukuran berkas sebagai alasan.
Hasil lab: gudang.py berisi baca_mesin_a, baca_mesin_b, baca_pos sesuai kontrak, dan data/lapisan/pos_mentah.parquet (1.529 baris, terurut waktu, terkompresi zstd) yang isinya dicocokkan dengan CSV asal. Contoh diuji dengan Python 3.12 dan 3.13, pandas 3.0.2, pyarrow 22.0.0, dan DuckDB 1.5.1 (_kerangka/requirements.txt). Ukuran berkas Parquet yang dicetak bergantung pada versi pyarrow; dengan versi lain angkanya bisa bergeser beberapa byte, tetapi perbandingannya tetap.
Istilah di modul ini (26)
Ketuk istilah untuk melihat penjelasannya. Di materi, istilah bergaris titik membuka kartu yang sama. Semua istilah course
Bahan modul
Semua kode, latihan, dan data modul ini dalam satu zip, untuk dijalankan di laptop atau Google Colab.
- 17 contoh kode
- 8 berkas latihan + tes
- 68 berkas data
- requirements.txt
Lihat isi zip
- BACA-DULU.txt
- pos_mesin.py
- contoh_c4_02_25.py
- contoh_c4_02_56.py
- contoh_c4_02_110.py
- contoh_c4_02_177.py
- contoh_c4_02_201.py
- contoh_c4_02_229.py
- contoh_c4_02_289.py
- contoh_c4_02_333.py
- contoh_c4_02_380.py
- contoh_c4_02_407.py
- contoh_c4_02_826.py
- contoh_c4_02_979.py
- contoh_c4_02_1053.py
- contoh_c4_02_1262.py
- contoh_c4_02_1461.py
- contoh_c4_02_1553.py
- contoh_c4_02_1621.py
- test_c4_02_1.py
- test_c4_02_2.py
- test_c4_02_3.py
- test_c4_02_4.py
- test_c4_02_6.py
- test_c4_02_8.py
- test_c4_02_5.py
- test_c4_02_7.py
- cdc_pelanggan.jsonl
- pemasok_api/halaman_001.json
- pemasok_api/halaman_002.json
- pemasok_api/halaman_003.json
- pemasok_api/halaman_004.json
- pemasok_api/halaman_005.json
- pos_harian/mesin_a_2026-09-01.csv
- pos_harian/mesin_a_2026-09-02.csv
- pos_harian/mesin_a_2026-09-03.csv
- pos_harian/mesin_a_2026-09-04.csv
- pos_harian/mesin_a_2026-09-05.csv
- pos_harian/mesin_a_2026-09-06.csv
- pos_harian/mesin_a_2026-09-07.csv
- pos_harian/mesin_a_2026-09-08.csv
- pos_harian/mesin_a_2026-09-09.csv
- pos_harian/mesin_a_2026-09-10.csv
- pos_harian/mesin_a_2026-09-11.csv
- pos_harian/mesin_a_2026-09-12.csv
- pos_harian/mesin_a_2026-09-13.csv
- pos_harian/mesin_a_2026-09-14.csv
- pos_harian/mesin_a_2026-09-15.csv
- pos_harian/mesin_a_2026-09-16.csv
- pos_harian/mesin_a_2026-09-17.csv
- pos_harian/mesin_a_2026-09-18.csv
- pos_harian/mesin_a_2026-09-19.csv
- pos_harian/mesin_a_2026-09-20.csv
- pos_harian/mesin_a_2026-09-21.csv
- pos_harian/mesin_a_2026-09-22.csv
- pos_harian/mesin_a_2026-09-23.csv
- pos_harian/mesin_a_2026-09-24.csv
- pos_harian/mesin_a_2026-09-25.csv
- pos_harian/mesin_a_2026-09-26.csv
- pos_harian/mesin_a_2026-09-27.csv
- pos_harian/mesin_a_2026-09-28.csv
- pos_harian/mesin_a_2026-09-29.csv
- pos_harian/mesin_a_2026-09-30.csv
- pos_harian/mesin_b_2026-09-01.csv
- pos_harian/mesin_b_2026-09-02.csv
- pos_harian/mesin_b_2026-09-03.csv
- pos_harian/mesin_b_2026-09-04.csv
- pos_harian/mesin_b_2026-09-05.csv
- pos_harian/mesin_b_2026-09-06.csv
- pos_harian/mesin_b_2026-09-07.csv
- pos_harian/mesin_b_2026-09-08.csv
- pos_harian/mesin_b_2026-09-09.csv
- pos_harian/mesin_b_2026-09-10.csv
- pos_harian/mesin_b_2026-09-10_ulang.csv
- pos_harian/mesin_b_2026-09-11.csv
- pos_harian/mesin_b_2026-09-12.csv
- pos_harian/mesin_b_2026-09-13.csv
- pos_harian/mesin_b_2026-09-14.csv
- pos_harian/mesin_b_2026-09-15.csv
- pos_harian/mesin_b_2026-09-16.csv
- pos_harian/mesin_b_2026-09-17.csv
- pos_harian/mesin_b_2026-09-18.csv
- pos_harian/mesin_b_2026-09-19.csv
- pos_harian/mesin_b_2026-09-20.csv
- pos_harian/mesin_b_2026-09-21.csv
- pos_harian/mesin_b_2026-09-22.csv
- pos_harian/mesin_b_2026-09-23.csv
- pos_harian/mesin_b_2026-09-24.csv
- pos_harian/mesin_b_2026-09-25.csv
- pos_harian/mesin_b_2026-09-26.csv
- pos_harian/mesin_b_2026-09-27.csv
- pos_harian/mesin_b_2026-09-28.csv
- pos_harian/mesin_b_2026-09-29.csv
- pos_harian/mesin_b_2026-09-30.csv
- pos_harian/mesin_b_2026-10-01.csv
- requirements.txt