Parquet sink'lerini çoğullama
Ekip artık aynı temizlenmiş sorgudan iki çıktı istiyor: biri dijital ödemeler, diğeri fiziksel için. Polars paylaşılan taramayı bir kez planlayabilsin diye her iki yazmayı da tembel (lazy) şekilde kur, sonra ikisini tek geçişte birlikte çalıştır.
clean_checkouts, DIGITAL_EXPORT_PATH ve PHYSICAL_EXPORT_PATH önceden yüklendi.
Bu egzersiz, kursun bir parçasıdır
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme
Egzersiz talimatları
- Her iki sink'i de hemen çalışmasın diye tembel (lazy) olarak kur.
- Her iki sink'i de streaming motorunda birlikte çalıştır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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)