# Polars 2.0: kenapa gabungan tidak lagi mengekalkan susunan barisnya

Published: 2026-10-08

Polars 2.0 menjalankan koleksi pada enjin penstriman secara lalai. Untuk gabungan, group\_by dan unpivot, keluaran ini tidak lagi menjamin susunan baris input melainkan anda menetapkan maintain\_order atau menyusun secara eksplisit. Dalam larian kami pada polars 2.0.0, gabungan dalaman 2,000,000 baris mengembalikan baris di luar susunan input secara lalai dan mengekalkan susunan dengan maintain\_order ditetapkan. Keluaran ini juga menghidupkan out-of-core spilling dan menjadikan tuntutan penanda aras vendor sendiri.

Canonical: https://thedailydiff.dev/ms/video/polars-2-row-order/

## Apa yang diliputi video ini

- Memanggil collect() pada pertanyaan malas kini menggunakan enjin penstriman secara lalai, yang tidak menjamin susunan baris untuk join, group\_by dan unpivot.
- Panduan migrasi mengatakan susunan tidak lagi susunan pra-2.0 dan tidak dijamin; ia mengesyorkan penyusunan eksplisit jika anda bergantung padanya.
- Dalam larian kami, gabungan dalaman lalai mengembalikan input order False; maintain\_order="left\_right" pada gabungan mengembalikan True. Satu mesin, satu larian, satu bentuk gabungan.
- Out-of-core spilling dihidupkan secara lalai: ia bermula pada kira-kira 80% RAM, dengan anggaran cakera lalai 64 GB. Gabungan dan group\_by out-of-core sedang dalam peta jalan.
- collect\_schema() menangkap lajur yang hilang sebelum sebarang data dibaca, tetapi cast yang gagal pada satu nilai hanya gagal pada collect().
- Perbandingan TPC-H dan TPC-DS adalah larian vendor sendiri pada data terbitan, dan nota kakinya mengatakan hasilnya tidak setanding dengan penanda aras rasmi.

## Bab

- 0:00 Mengapa susunan lalai berubah?
- 0:56 Apa yang dijanjikan panduan migrasi?
- 1:17 Adakah penanda aras itu pertarungan yang adil?
- 1:41 Apa yang kita lihat apabila kita menjalankannya?
- 1:56 Adakah lebih ketat bermakna lebih awal?
- 2:07 Bagaimana saya mendapatkan kembali susunan lama?
- 2:20 Apakah keputusannya?

## Transkrip terjemahan

Diterjemahkan daripada penceritaan asal Bahasa Inggeris. Audio dan kapsyen yang tersedia dikawal oleh YouTube.

### Mengapa susunan lalai berubah?

0:00 Anda fikir gabungan mengembalikan baris anda dalam susunan yang anda tulis. Polars 2.0 berhenti menjanjikannya, secara lalai, dengan sengaja. Dalam video ini: mengapa lalai berubah? Apa yang diperoleh? Dan skrip mana yang pecah dahulu? Ini The Daily Diff, di sebalik tabir. Polars ialah pustaka DataFrame sumber terbuka: enjin jadual yang anda panggil dari Python,

0:20 dengan terasnya ditulis dalam Rust. Ia percuma di bawah lesen MIT, dan anda memasangnya dengan pip install polars. Satu butiran dahulu. Suis yang mengembalikan susunan lama adalah argumen kepada gabungan itu sendiri. Saya akan kembali kepadanya pada akhirnya. Sejak 2.0, collect menjalankan enjin penstriman secara lalai. Penstriman membahagikan pertanyaan kepada kepingan yang berjalan secara selari, dan kepingan selesai apabila ia selesai.

0:42 Untuk gabungan, group by dan unpivot, keluaran tidak menjanjikan susunan. Siapa yang kena dahulu? Sesiapa sahaja yang membandingkan output dengan fail yang disimpan, baris demi baris. Ujian itu boleh lulus pada komputer riba anda dan gagal pada mesin yang berbeza. Seterusnya, panduan migrasi.

### Apa yang dijanjikan panduan migrasi?

0:57 Ia mengatakan susunan baris tepat yang ditunjukkan di atas tidak dijamin. Jadi jika anda bergantung pada susunan, susun secara eksplisit. Out-of-core dihidupkan secara lalai juga. Ia mula menumpahkan ke cakera pada kira-kira lapan puluh peratus RAM, dengan anggaran enam puluh empat gigabait. Sort, fungsi tetingkap dan banyak ekspresi boleh menumpahkan sekarang. Gabungan dan group-by akan datang.

### Adakah penanda aras itu pertarungan yang adil?

1:17 Polars mengatakan ia mengalahkan DataFusion dan DuckDB pada TPC-H dan TPC-DS penanda aras. Nombor-nombor itu datang dari larian mereka sendiri, pada data terbitan, dan nota kaki mereka mengatakan ia tidak setanding dengan hasil rasmi. Nombor mereka sendiri mengatakan Polars menjadi kira-kira tiga titik lapan kali lebih cepat dari enam belas teras kepada seratus sembilan puluh dua, pada TPC-H. Mereka juga mengatakan benang tambahan mesin besar melambatkan pertanyaan kecil.

### Apa yang kita lihat apabila kita menjalankannya?

1:41 Kami menjalankan gabungan yang sama dua kali pada Polars 2.0.0. Larian lalai mengocok baris. Dengan bendera, susunan input kekal. Cari gabungan yang memberi makan ujian. Mana-mana gabungan tanpa susunan selepasnya adalah keputusan susunan baris yang tidak pernah anda buat. Polars 2.0 lebih ketat tentang jenis.

### Adakah lebih ketat bermakna lebih awal?

1:58 Pemeriksaan skema menangkap lajur yang hilang sebelum sebarang data dibaca. Ia tidak dapat menangkap cast yang gagal pada satu baris, kerana ralat itu menunggu untuk data. Sekarang gelung yang saya buka.

### Bagaimana saya mendapatkan kembali susunan lama?

2:08 Suis hidup pada gabungan. Tetapkan maintain order pada gabungan, atau tambahkan sort selepasnya. Panduan mencadangkan sort. Bendera gabungan mengekalkan susunan dalam larian kami, dengan susunan sisi kiri disimpan sebagai kiri, kanan. Keputusan, di sebalik tabir: NEEDS REVIEW.

### Apakah keputusannya?

2:22 Saya akan menyemak setiap gabungan sebelum menaik taraf. Ada soalan tentang ini? Letakkan dalam komen. Dan itu perbezaan untuk hari ini. Saya Niko dari Axrisi. Gabungkan dengan bertanggungjawab.

## Sumber

- [Release of Polars 2.0](https://pola.rs/posts/release-polars-2/) — Polars (pola.rs)
- [Polars 2.0 upgrade guide](https://docs.pola.rs/releases/upgrade/2/) — Polars documentation
- [Polars homepage](https://pola.rs/) — Polars (pola.rs)
- [polars-2.0-benchmark repository](https://github.com/pola-rs/polars-2.0-benchmark) — Polars on GitHub
- [Release of Polars 2.0 (Hacker News discussion)](https://news.ycombinator.com/item?id=49977177) — Hacker News
