# Polars 2.0: por que as unións xa non manteñen a orde das súas filas

Published: 2026-10-08

Polars 2.0 executa collect nun motor de transmisión por defecto. Para join, group\_by e unpivot, a versión xa non garante a orde das filas de entrada a menos que establezas maintain\_order ou sort explicitamente. Na nosa execución en polars 2.0.0, unha unión interna de 2.000.000 de filas devolveu as filas fóra da orde de entrada por defecto e mantivo a orde con maintain\_order establecido. A versión tamén activa o vertido fóra do núcleo e fai que as reclamacións de referencia sexan propias do provedor.

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

## Que abrangue este vídeo

- Chamar a collect() nunha consulta lazy agora usa o motor de transmisión por defecto, que non garante a orde das filas para join, group\_by e unpivot.
- A guía de migración di que a orde xa non é a orde anterior a 2.0 e non está garantida; recomenda unha ordenación explícita se dependes dela.
- Na nosa execución, unha unión interna por defecto devolveu input order False; maintain\_order="left\_right" na unión devolveu True. Unha máquina, unha execución, unha forma de unión.
- O vertido fóra do núcleo está activado por defecto: comeza en aproximadamente o 80 % da RAM, cun orzamento de disco predeterminado de 64 GB. As unións e agrupacións fóra do núcleo están na folla de ruta.
- collect\_schema() detecta unha columna ausente antes de que se lea calquera dato, pero unha conversión que falla nun só valor só falla en collect().
- A comparación TPC-H e TPC-DS é a propia execución do provedor sobre datos derivados, e a súa nota ao pé di que os resultados non son comparables ás referencias oficiais.

## Capítulos

- 0:00 Por que cambiou a orde predeterminada?
- 0:56 Que promete a guía de migración?
- 1:17 É o benchmark unha loita xusta?
- 1:41 Que vemos cando o executamos?
- 1:56 Máis estrito significa máis cedo?
- 2:07 Como recupero a antiga orde?
- 2:20 Cal é o veredicto?

## Transcrición traducida

Traducido da narración orixinal en inglés. O audio e os subtítulos dispoñibles son controlados por YouTube.

### Por que cambiou a orde predeterminada?

0:00 Pensas que unha unión devolve as túas filas na orde en que as escribiches. Polars 2.0 deixou de prometer iso, por defecto, a propósito. Neste vídeo: por que cambiou o valor predeterminado? Que gañou? E cal dos teus scripts rompe primeiro? Isto é The Daily Diff, baixo o capó. Polars é unha biblioteca de DataFrame de código aberto: un motor de táboas que chamas desde Python,

0:20 co seu núcleo escrito en Rust. É gratuíto baixo a licenza MIT, e instálaso con pip install polars. Un detalle primeiro. O interruptor que devolve a antiga orde é un argumento para a propia unión. Volverei a el ao final. Desde 2.0, collect executa o motor de transmisión por defecto. A transmisión divide a consulta en anacos que se executan en paralelo, e os anacos rematan cando rematan.

0:42 Para join, group by e unpivot, a versión non promete unha orde. Quen é o primeiro en ser afectado? Quen queira que compare a saída cun ficheiro gardado, fila por fila. Esa proba pode pasar no teu portátil e fallar nunha máquina diferente. A seguir, a guía de migración.

### Que promete a guía de migración?

0:57 Di que a orde exacta das filas que se mostra arriba non está garantida. Así que, se dependes da orde, ordena explicitamente. O out-of-core tamén está activado por defecto. Comeza a verter no disco en aproximadamente o oitenta por cento da RAM, cun orzamento de sesenta e catro gigabytes. Ordenar, funcións de xanela e moitas expresións poden verter agora. As unións e as agrupacións están chegando.

### É o benchmark unha loita xusta?

1:17 Polars di que supera a DataFusion e DuckDB nos benchmarks TPC-H e TPC-DS. Os números proceden das súas propias execucións, sobre datos derivados, e a súa nota ao pé di que non son comparables aos resultados oficiais. Os seus propios números din que Polars acelera aproximadamente tres punto oito veces de dezaseis núcleos a cento noventa e dous, en TPC-H. Tamén din que os fíos adicionais da máquina grande retardan as consultas pequenas.

### Que vemos cando o executamos?

1:41 Executamos a mesma unión dúas veces en Polars 2.0.0. A execución predeterminada mestura as filas. Coa bandeira, a orde de entrada sobrevive. Atopa as unións que alimentan unha proba. Calquera unión sen unha ordenación despois é unha decisión de orde de fila que nunca tomaches. Polars 2.0 é máis estrito cos tipos.

### Máis estrito significa máis cedo?

1:58 A verificación do esquema detecta unha columna ausente antes de que se lea calquera dato. Non pode detectar unha conversión que falla nunha fila, porque ese erro agarda os datos. Agora o bucle que abrín.

### Como recupero a antiga orde?

2:08 O interruptor reside na unión. Define maintain order na unión, ou engade unha ordenación despois dela. A guía suxire a ordenación. A bandeira de unión mantivo a orde na nosa execución, coa orde do lado esquerdo mantida como esquerda, dereita. Veredicto, baixo o capó: NEEDS REVIEW.

### Cal é o veredicto?

2:22 Revisaría cada unión antes de actualizar. Tes algunha pregunta sobre isto? Póa nos comentarios. E esa é a diferenza por hoxe. Son Niko de Axrisi. Fusiona con responsabilidade.

## Fontes

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