Mulai sekarangMulai gratis

Multiplexing sink Parquet

Tim kini memerlukan dua ekstrak dari kueri bersih yang sama: satu untuk checkout digital dan satu untuk fisik. Bangun kedua penulisan secara lazy agar Polars dapat merencanakan pemindaian bersama satu kali, lalu jalankan keduanya sekaligus dalam satu lintasan.

clean_checkouts sudah dimuat, bersama DIGITAL_EXPORT_PATH dan PHYSICAL_EXPORT_PATH.

Latihan ini merupakan bagian dari kursus

Menskalakan dan Mengoptimalkan Pipeline Data dengan Polars

Lihat Kursus

Instruksi latihan

  • Bangun kedua sink secara lazy sehingga tidak langsung dieksekusi.
  • Jalankan kedua sink bersama pada engine streaming.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

# 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)
Edit dan Jalankan Kode