ПочатиПочніть безкоштовно

Мультиплексування Parquet‑«синків»

Команді тепер потрібні два витяги з одного й того самого очищеного запиту: один для цифрових видач і один для фізичних. Побудуйте обидва записи в «ледачому» режимі, щоб Polars міг спланувати спільне сканування один раз, а потім запустіть їх разом за один прохід.

clean_checkouts уже завантажено, як і DIGITAL_EXPORT_PATH та PHYSICAL_EXPORT_PATH.

Ця вправа є частиною курсу

Масштабування й оптимізація конвеєрів даних з Polars

Переглянути курс

Інструкції до вправи

  • Побудуйте обидва «синки» в «ледачому» режимі, щоб вони не виконувалися негайно.
  • Запустіть обидва «синки» разом на рушії потокової обробки (streaming).

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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)
Редагувати та запускати код