Yang dulu memakan waktu 3 jam, kini hanya butuh 30 detik - begini cara saya melakukannya.
Frustasi Sebelum Terobosan
Dulu ketika saya menangani proyek klien dengan lebih dari 1 juta baris data yang berantakan, Power BI terasa lebih seperti "Power Buffer". Query saya tertunda, waktu pemuatan terasa menyakitkan, dan setiap transformasi rasanya seperti berlari menembus pasir hisap.
Saya mencoba setiap trik yang ada - menghapus kolom, memfilter baris sejak awal, menonaktifkan pemuatan - tetapi tidak ada yang benar-benar menyelesaikan masalah kecepatan.
Sampai akhirnya saya menemukan satu trik ampuh menggunakan Table.Buffer dan query folding. Ini mengubah segalanya.
Apa Itu Query Folding?
Bayangkan query folding seperti mengalihdayakan pekerjaan berat.
Alih-alih komputer lokal Anda melakukan semua transformasi (yang menghabiskan memori dan waktu), Power BI mendorong sebanyak mungkin operasi kembali ke sumber data, seperti SQL Server atau Excel, di mana prosesnya jauh lebih cepat3.
💡 Semakin banyak langkah yang di-folding, semakin cepat query Anda.
Query folding pada dasarnya adalah kemampuan Power Query untuk menerjemahkan serangkaian transformasi menjadi perintah native yang dapat dijalankan langsung di sumber data3. Ini sangat meningkatkan kinerja karena pemrosesan dilakukan di server sumber, bukan di mesin lokal Anda.
Kemudian Ada Table.Buffer...
Table.Buffer seperti mengambil snapshot data Anda sekali, sehingga Power Query tidak perlu kembali ke sumber berulang kali selama setiap langkah.
Tetapi inilah kuncinya - jika Anda menggunakannya dengan cara yang salah, itu dapat merusak query folding dan memperlambat segalanya3.
Table.Buffer berfungsi dengan men-cache seluruh tabel ke dalam memori. Ini bisa sangat berguna pada titik-titik tertentu dalam transformasi, tetapi jika digunakan pada tahap yang salah, justru dapat mengganggu proses query folding yang efisien3.
Jadi, waktu penggunaan adalah kunci. Dan inilah cara saya menggunakannya dengan benar.
Contoh Nyata: Dari Lambat Menjadi Super Cepat
Misalkan saya memiliki data penjualan mentah seperti ini:
- Lebih dari 1 juta baris
- Beberapa kolom dengan nilai yang hilang
- Kondisi dan transformasi bersarang
Berikut langkah-langkah yang saya lakukan:
🔧 Langkah 1: Filter Sejak Awal dan Minimalkan Kolom
Sebelum melakukan apapun, saya hanya mempertahankan 6 kolom yang benar-benar saya butuhkan:
text
= Table.SelectColumns(Source, {"Customer", "Date", "Product", "Region", "Amount", "Status"})
Kemudian menerapkan filter sebelum membawa kolom baru apa pun.
Misalnya, untuk memfilter hanya transaksi yang sudah selesai:
text
= Table.SelectRows(PreviousStep, each [Status] = "Completed")
⚡ Langkah 2: Buffer Sekali - Tidak Di Mana-mana
Tepat sebelum menerapkan logika kustom yang kompleks seperti kolom bersyarat dan penguraian teks, saya mem-buffer tabel yang sudah dibersihkan:
text
= Table.Buffer(CleanedTable)
Ini mencegah Power Query menghitung ulang langkah-langkah sebelumnya setiap kali transformasi dijalankan.
Contoh konkret: Setelah memfilter dan memilih kolom yang dibutuhkan, saya mem-buffer tabel sebelum melakukan operasi yang lebih kompleks seperti:
text
// Terapkan buffer sebelum operasi kompleks BufferedTable = Table.Buffer(FilteredTable), // Kemudian lakukan transformasi kompleks CustomCalculation = Table.AddColumn(BufferedTable, "ProfitMargin", each if [Amount] > 1000 then [Amount] * 0.15 else [Amount] * 0.10)
🔁 Langkah 3: Hindari Merusak Query Folding Terlalu Dini
Banyak orang menerapkan Table.Buffer terlalu awal. Ini menghentikan folding dan membebankan semua pemrosesan pada mesin Anda.
Saya menerapkan Table.Buffer hanya setelah semua langkah yang kompatibel dengan folding selesai3. Ini memberi saya kecepatan dan keandalan.
Contoh konkret mengidentifikasi apakah query folding masih berjalan:
- Klik kanan pada langkah di Editor Power Query
- Pilih "View Native Query"
- Jika opsi tersebut tersedia dan menampilkan query, berarti folding masih berjalan
Hasilnya?
✅ Waktu eksekusi query turun dari 3 menit menjadi 30 detik
✅ Tidak ada crash atau overflow memori
✅ Waktu refresh data berkurang setengahnya
✅ Klien terkesima 😮
Tips Bonus yang Membuat Perbedaan Besar
- Gunakan alat diagnostik di Power Query untuk memantau folding (Klik kanan → View Native Query)
- Hindari kolom kustom terlalu awal - mereka cepat membunuh folding. Transformasi seperti each dan fungsi kustom biasanya menghentikan query folding1.
-
Gunakan Table.Profile dan Table.Schema selama pengembangan untuk memahami data tanpa memuat semua baris:
text
= Table.Profile(YourTable) // Memberikan statistik tentang data = Table.Schema(YourTable) // Menampilkan struktur tabel
-
Kelompokkan dan ringkas lebih awal jika bekerja dengan dataset yang sangat lebar:
text
= Table.Group(FilteredTable, {"Region", "Product"}, { {"TotalSales", each List.Sum([Amount]), type number}, {"TransactionCount", each Table.RowCount(_), type number} })
- Gunakan fungsi Table.StopFolding dengan bijak untuk menghentikan query folding pada titik tertentu jika diperlukan, tanpa efek samping yang tidak diinginkan seperti Table.Buffer
Pesan Moral
Power Query tidak lambat. Sebagian besar waktu, kita hanya tidak menggunakannya dengan benar
Trik Table.Buffer saja menghemat waktu saya berjam-jam setiap minggu. Kombinasikan dengan query folding, dan Anda akan merasa seperti telah membuka kode rahasia untuk performa Power BI yang luar biasa
Glosarium Data Analyst untuk Pemula
- Query Folding: Kemampuan Power Query untuk mendelegasikan transformasi data ke server sumber data, sehingga mengurangi beban komputer lokal
- Table.Buffer: Fungsi dalam Power Query yang menyimpan seluruh tabel dalam memori untuk penggunaan yang lebih efisien dalam transformasi berikutnya
- Power Query: Fitur di Excel dan Power BI yang memungkinkan pengguna mengimpor, membersihkan, dan mentransformasi data dari berbagai sumber
- ETL (Extract, Transform, Load): Proses mengekstrak data dari sumber, mentransformasinya untuk analisis, kemudian memuatnya ke sistem tujuan - inilah yang dilakukan Power Query
- Data Cleansing: Proses mengidentifikasi dan memperbaiki atau menghapus data yang tidak akurat dari dataset
- Query Editor: Antarmuka Power Query tempat Anda dapat melihat dan mengedit langkah-langkah transformasi data yang diterapkan
- Applied Steps: Daftar berurutan transformasi yang telah diterapkan pada data dalam Power Query, memungkinkan Anda melacak dan mengubah langkah-langkah yang telah dilakukan
Citations:
- https://www.youtube.com/watch?v=MV3hDbACkkg
- https://www.dutaacademy.com/index.php/home/artikel?detail=mengapa-power-query-menjadi-tools-andalan-bagi-data-analyst%3F
- https://blog.crossjoin.co.uk/2022/04/25/stop-query-folding-with-the-table-stopfolding-m-function/
- https://support.microsoft.com/id-id/office/pelajari-cara-menggunakan-power-query-dan-power-pivot-di-excel-42d895c2-d1d7-41d0-88da-d1ed7ecc102d
- https://dqlab.id/excel-power-query-fitur-canggih-transformasi-data
- https://informationhandyman.com/2024/08/09/15-power-bi-tricks-to-supercharge-your-query-refresh-speed/
- https://kelas.work/blogs/mengenal-tools-power-query-pada-excel-untuk-analisis-data
- https://myedusolve.com/id/blog/pelajari-apa-itu-power-query-tools-andalan-data-analyst
- https://www.excelcampus.com/powerquery/power-query-shortcuts/
- https://community.powerbi.com/t5/Power-Query/When-to-use-Table-Buffer/td-p/2929784
- https://learn.microsoft.com/en-us/power-query/best-practices
- https://www.youtube.com/playlist?list=PLXg1Zd-O5C-RozjPfpKGK4H2YEmizHwV-
- https://blog.myskill.id/istilah-dan-tutorial/menguak-keajaiban-power-query-dalam-analisis-data/
- https://www.youtube.com/watch?v=GJQY_28sWHI
- https://learn.microsoft.com/id-id/power-query/query-folding-basics
- https://www.youtube.com/watch?v=pb9q0rioO6s
- https://www.youtube.com/watch?v=HUPpckEtYy8
- https://learn.microsoft.com/id-id/powerquery-m/
- https://www.youtube.com/watch?v=72jk30kX_ZA
- https://www.excelcampus.com/powerquery/shortcut-open-power-query-editor/