शुरू करेंमुफ़्त में शुरू करें

Parquet sinks का multiplexing

टीम को अब उसी साफ़ की गई क्वेरी से दो एक्सट्रैक्ट चाहिए: एक digital checkouts के लिए और एक physical के लिए. दोनों writes को lazily बनाएँ ताकि Polars shared scan की योजना एक बार बना सके, फिर उन्हें एक ही पास में साथ चलाइए.

clean_checkouts पहले से लोड है, साथ में DIGITAL_EXPORT_PATH और PHYSICAL_EXPORT_PATH भी.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

पाठ्यक्रम देखें

अभ्यास निर्देश

  • दोनों sinks को lazily बनाएँ ताकि वे तुरंत execute न हों.
  • दोनों sinks को streaming engine पर साथ में चलाएँ.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

# 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)
कोड संपादित करें और चलाएँ