始める無料で始める

Parquet シンクの多重化

同じクリーニング済みクエリから、デジタルチェックアウト用とフィジカルチェックアウト用の2つのデータ抽出が必要になりました。Polars が共有スキャンを一度だけ計画できるよう、両方の書き込みをレイジーに構築し、1回のパスでまとめて実行しましょう。

clean_checkoutsDIGITAL_EXPORT_PATH および PHYSICAL_EXPORT_PATH とともにあらかじめ読み込まれています。

この演習はコースの一部です

Polars によるデータパイプラインのスケーリングと最適化

コースを見る

演習の手順

  • 両方のシンクが即座に実行されないよう、レイジーに構築してください。
  • ストリーミングエンジンを使用して、両方のシンクをまとめて実行してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Lazy sink for digital
digital_sink = (
    clean_checkouts
    .filter(pl.col("use") == "Digital")
    .sink_parquet(DIGITAL_EXPORT_PATH, lazy=____)
)

# Lazy sink for physical
physical_sink = (
    clean_checkouts
    .filter(pl.col("use") == "Physical")
    .sink_parquet(PHYSICAL_EXPORT_PATH, lazy=____)
)

# Run both sinks together
pl.____([digital_sink, physical_sink], engine="streaming")

# Check the row counts of each extract
result = pl.DataFrame(
    {
        "extract": ["digital", "physical"],
        "rows": [
            pl.scan_parquet(DIGITAL_EXPORT_PATH).select(pl.len()).collect().item(),
            pl.scan_parquet(PHYSICAL_EXPORT_PATH).select(pl.len()).collect().item(),
        ],
    }
)
print(result)
コードを編集して実行