# Polars 2.0: pse bashkimet nuk ruajnë më rendin e rreshtave

Published: 2026-10-08

Polars 2.0 ekzekuton 'collect' në një motor transmetimi si parazgjedhje. Për bashkimin, grupimin dhe 'unpivot', versioni nuk garanton më rendin e rreshtave të hyrjes, përveç nëse vendosni 'maintain\_order' ose 'sort' në mënyrë eksplicite. Në ekzekutimin tonë në polars 2.0.0, një bashkim i brendshëm me 2,000,000 rreshta ktheu rreshtat jashtë rendit të hyrjes si parazgjedhje dhe ruajti rendin me 'maintain\_order' të vendosur. Versioni gjithashtu aktivizon 'out-of-core spilling' dhe i bën pretendimet e vlerësimit të performancës të vetë shitësit.

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

## Çfarë mbulon kjo video

- Thirrja e collect() në një kërkesë lazy tani përdor motorin e transmetimit si parazgjedhje, i cili nuk garanton rendin e rreshtave për bashkim, grupim dhe 'unpivot'.
- Udhëzuesi i migrimit thotë se rendi nuk është më rendi i para-2.0 dhe nuk garantohet; ai rekomandon një renditje eksplicite nëse mbështeteni tek ai.
- Në ekzekutimin tonë, një bashkim i brendshëm parazgjedhur ktheu rendin e hyrjes False; maintain\_order="left\_right" në bashkim ktheu True. Një makinë, një ekzekutim, një formë bashkimi.
- Out-of-core spilling është aktiv si parazgjedhje: fillon rreth 80% të RAM-it, me një buxhet disku prej 64 GB si parazgjedhje. Bashkimi dhe grupimi out-of-core janë në rrugë e sipër.
- collect\_schema() kap një kolonë që mungon para se të lexohet ndonjë e dhënë, por një cast që dështon në një vlerë të vetme dështon vetëm në collect().
- Krahasimi TPC-H dhe TPC-DS është ekzekutimi i vetë shitësit mbi të dhëna të derivuara, dhe shënimi i tij thotë se rezultatet nuk janë të krahasueshme me vlerësimet zyrtare.

## Kapitujt

- 0:00 Pse ndryshoi rendi parazgjedhur?
- 0:56 Çfarë premton udhëzuesi i migrimit?
- 1:17 A është vlerësimi një luftë e ndershme?
- 1:41 Çfarë shohim kur e ekzekutojmë?
- 1:56 A do të thotë më i rreptë më herët?
- 2:07 Si e kthej rendin e vjetër?
- 2:20 Cili është verdikti?

## Transkript i përkthyer

Përkthyer nga tregimi origjinal në anglisht. Audio dhe titrat e disponueshme kontrollohen nga YouTube.

### Pse ndryshoi rendi parazgjedhur?

0:00 Mendon se një bashkim t'i kthen rreshtat në rendin që i shkrove. Polars 2.0 ndaloi së premtuari këtë, si parazgjedhje, me qëllim. Në këtë video: pse ndryshoi parazgjedhja? Çfarë fitoi? Dhe cili nga skriptet e tua prishet i pari? Ky është The Daily Diff, nën kapak. Polars është një bibliotekë DataFrame me burim të hapur: një motor tabele që e thërret nga Python,

0:20 me thelbin e saj të shkruar në Rust. Është falas nën licencën MIT, dhe e instaloni me pip install polars. Një detaj së pari. Çelësi që kthen rendin e vjetër është një argument i vetë bashkimit. Do të kthehem tek ai në fund. Që nga 2.0, 'collect' ekzekuton motorin e transmetimit si parazgjedhje. Transmetimi e ndan pyetjen në pjesë që ekzekutohen paralelisht, dhe pjesët përfundojnë kur përfundojnë.

0:42 Për bashkimin, grupimin dhe 'unpivot', versioni nuk premton një rend. Kush preket i pari? Kushdo që krahason daljen me një skedar të ruajtur, rresht pas rreshti. Ky test mund të kalojë në laptopin tuaj dhe të dështojë në një makinë tjetër. Më pas, udhëzuesi i migrimit.

### Çfarë premton udhëzuesi i migrimit?

0:57 Ai thotë se rendi i saktë i rreshtave i shfaqur më lart nuk garantohet. Pra, nëse mbështeteni në rend, renditni në mënyrë eksplicite. Out-of-core është aktiv edhe si parazgjedhje. Fillon të derdhet në disk rreth tetëdhjetë për qind të RAM-it, me një buxhet prej gjashtëdhjetë e katër gigabajtësh. Renditja, funksionet e dritares dhe shumë shprehje mund të derdhen tani. Bashkimet dhe grupimet po vijnë.

### A është vlerësimi një luftë e ndershme?

1:17 Polars thotë se mund DataFusion dhe DuckDB në TPC-H dhe TPC-DS vlerësime. Numrat vijnë nga ekzekutimet e tyre, mbi të dhëna të derivuara, dhe shënimi i tyre thotë se nuk janë të krahasueshme me rezultatet zyrtare. Numrat e tyre thonë se Polars bëhet rreth tre pikë tetë herë më shpejt nga gjashtëmbëdhjetë bërthama në njëqind e nëntëdhjetë e dy, në TPC-H. Ata gjithashtu thonë se fillesat shtesë të makinës së madhe ngadalësojnë pyetjet e vogla.

### Çfarë shohim kur e ekzekutojmë?

1:41 Ne ekzekutuam të njëjtin bashkim dy herë në Polars 2.0.0. Ekzekutimi parazgjedhur i përzien rreshtat. Me flamurin, rendi i hyrjes mbijeton. Gjeni bashkimet që ushqejnë një test. Çdo bashkim pa një renditje pas tij është një vendim rendi rreshtash që nuk e keni marrë kurrë. Polars 2.0 është më i rreptë në lidhje me tipet.

### A do të thotë më i rreptë më herët?

1:58 Kontrolli i skemës kap një kolonë që mungon para se të lexohet ndonjë e dhënë. Nuk mund të kapë një 'cast' që dështon në një rresht, sepse ai gabim pret për të dhënat. Tani rrethin që hapa.

### Si e kthej rendin e vjetër?

2:08 Çelësi qëndron te bashkimi. Vendosni 'maintain order' në bashkim, ose shtoni një renditje pas tij. Udhëzuesi sugjeron renditjen. Flamuri i bashkimit ruajti rendin në ekzekutimin tonë, me rendin e anës së majtë të ruajtur si majta, djathta. Verdikti, nën kapak: KA NEVOJË PËR RISHIKIM.

### Cili është verdikti?

2:22 Do të rishikoja çdo bashkim para përmirësimit. Keni ndonjë pyetje rreth kësaj? Vendoseni te komentet. Dhe ky është ndryshimi për sot. Unë jam Niko nga Axrisi. Bashkohuni me përgjegjësi.

## Burimet

- [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
