+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Polars 2.0: なぜ結合でレコードの順序が保持されなくなったのか

Polars 2.0では、デフォルトでストリーミングエンジンでcollectが実行されます。

Polars 2.0では、デフォルトでストリーミングエンジンでcollectが実行されます。結合、group_by、unpivotの場合、maintain_orderまたはsortを明示的に設定しない限り、入力行の順序は保証されなくなりました。polars 2.0.0での実行では、2,000,000行の内部結合はデフォルトで入力順序とは異なる行を返し、maintain_orderを設定すると順序を保持しました。このリリースでは、アウトオブコアスピリングも有効になり、ベンチマークの主張はベンダー自身のものとなっています。

書面版を読む(英語) ↗

この動画の要点

  • 遅延クエリでcollect()を呼び出すと、デフォルトでストリーミングエンジンが使用されます。このエンジンは、join、group_by、unpivotの場合、行の順序を保証しません。
  • 移行ガイドには、順序は2.0以前の順序ではなく、保証されないと記載されています。順序に依存する場合は、明示的なソートを推奨しています。
  • 私たちの実行では、デフォルトの内部結合は入力順序がFalseを返しました。結合でmaintain_order="left_right"を設定するとTrueを返しました。1台のマシン、1回の実行、1つの結合形状です。
  • アウトオブコアスピリングはデフォルトで有効になっています。RAMの約80%で開始され、デフォルトのディスク予算は64GBです。アウトオブコアの結合とgroup_byはロードマップにあります。
  • collect_schema()は、データが読み込まれる前に欠落している列を捕捉しますが、1つの値でのみ失敗するキャストはcollect()で失敗します。
  • TPC-HとTPC-DSの比較は、ベンダー自身が派生データで実行したものであり、脚注には、結果は公式ベンチマークとは比較できないと記載されています。

翻訳されたトランスクリプト

オリジナルの英語ナレーションから翻訳されています。利用可能なオーディオとキャプションはYouTubeによって管理されています。

なぜデフォルトの順序が変わったのですか?

0:00 結合は、あなたが書いた順序で行を返すと思いますよね。 Polars 2.0は、デフォルトでは意図的にそれを約束しなくなりました。 このビデオでは、なぜデフォルトが変更されたのか? それによって何が得られましたか? そして、どのスクリプトが最初に壊れますか? こちらはThe Daily Diff、舞台裏です。 PolarsはオープンソースのDataFrameライブラリです。 Pythonから呼び出すテーブルエンジンで、

0:20 そのコアはRustで書かれています。 MITライセンスの下で無料であり、pip install polarsでインストールします。 まず、1つの詳細。 古い順序を取り戻すスイッチは、結合自体への引数です。 これについては最後にまた触れます。 2.0以降、collectはデフォルトでストリーミングエンジンを実行します。 ストリーミングはクエリを並列で実行されるチャンクに分割し、 チャンクは終了したときに終了します。

0:42 結合、group by、unpivotの場合、このリリースは順序を約束しません。 誰が最初に影響を受けますか? 出力と保存されたファイルを1行ずつ比較する人です。 そのテストはあなたのラップトップでは合格しても、別のマシンでは失敗する可能性があります。 次に、移行ガイドです。

移行ガイドは何を約束していますか?

0:57 上記の正確な行の順序は保証されないと記載されています。 したがって、順序に依存する場合は、明示的にソートしてください。 アウトオブコアもデフォルトで有効になっています。 RAMの約80パーセントでディスクへのスピルを開始し、 64ギガバイトの予算があります。 ソート、ウィンドウ関数、および多くの式は現在スピルできます。 結合とgroup-byは今後追加されます。

ベンチマークは公平な戦いですか?

1:17 Polarsは、TPC-HおよびTPC-DSベンチマークでDataFusionとDuckDBを上回ると述べています。 これらの数値は、派生データに対する彼ら自身の実行によるものであり、 脚注には、公式結果とは比較できないと記載されています。 彼ら自身の数値によると、PolarsはTPC-Hで16コアから192コアで約3.8倍高速になります。 また、大きなマシンの追加スレッドは小さなクエリを遅くするとも述べています。 Polars 2.0.0で同じ結合を2回実行しました。

実行すると何が見えますか?

1:41 デフォルトの実行では行がシャッフルされます。 フラグを使用すると、入力順序が保持されます。 テストにフィードする結合を見つけてください。 ソートされていない結合は、あなたが決して行わなかった行順序の決定です。 Polars 2.0は型についてより厳密です。 スキーマチェックは、データが読み込まれる前に欠落している列を捕捉します。

厳密であることは早期を意味しますか?

1:58 1行で失敗するキャストは捕捉できません。なぜなら、そのエラーはデータが来るまで待つからです。 さて、私が開いたループです。 スイッチは結合上にあります。

古い順序を取り戻すにはどうすればよいですか?

2:08 結合でmaintain orderを設定するか、その後にソートを追加します。 ガイドはソートを推奨しています。 結合フラグは、私たちの実行では順序を保持し、左側の順序は左、右として保持されました。 舞台裏の評決: NEEDS REVIEW。 アップグレードする前にすべての結合をレビューします。

評決は何ですか?

2:22 これについて質問がありますか? コメントに書いてください。 これで今日の差分は終わりです。 AxrisiのNikoです。 責任を持ってマージしてください。 これはThe Daily Diff、舞台裏です。

情報源

  1. Release of Polars 2.0Polars (pola.rs)
  2. Polars 2.0 upgrade guidePolars documentation
  3. Polars homepagePolars (pola.rs)
  4. polars-2.0-benchmark repositoryPolars on GitHub
  5. Release of Polars 2.0 (Hacker News discussion)Hacker News

関連動画

daily · ja · 2026/10/07

Honoが外部からのプルリクエストを制限、メンテナーが貢献の受け入れを再検討

HonoはMITライセンスのコードを維持しつつ、外部からのプルリクエスト作成を無効にしました。Sindre Sorhusは自身のレポジトリ制限をAIに起因するとし、メンテナンスと問題対応は継続すると述べました。この10月6日版では、レビュー能力、Mistral Large 4のAPIプレビューと公開が約束されたウェイト、Polars 2.0のアムステルダムとの関連性および移行に関する注意点について

5:22 ↗
daily · ja · 2026/10/07

GoogleがJPEG XLをChromeに再導入

Googleは、以前の実験的サポートが削除された後、Chrome 155からJPEG XLデコードを開始すると発表しました。この10月7日号では、開発者のフィードバック、新しいRustデコーダー、競合する圧縮の主張と展開のフォールバックについて検証し、次にOpenAIが新たに公開した数学的証明成果物とESP32-C3 DNSシンクホールのハッシュ・イン・フラッシュ設計について見ていきます。

5:17 ↗
under-the-hood · ja · 2026/09/24

SAML、その仕組み:手紙の中の署名

SAMLは、ほとんどすべての仕事用アプリへのログインを可能にし、その署名は署名対象のXML内に存在します。その仕組み:アプリ、ブラウザ、IDプロバイダ間のログインのやり取り、アサーションの見た目、なぜ正規化があらゆるバイトで一致する必要があるのか、そしてなぜ2012年から2025年まで同じバグクラスが再発し続けるのか。Trail of Bitsの「SAML: A fractal of bad de

3:02 ↗