Профилирование ленивого запроса
Прежде чем добавить новый запрос в ежедневный рабочий процесс, команда хочет понять, на что уходит время. Профилирование выполняет ленивый запрос так же, как .collect(), но дополнительно возвращает DataFrame с временными показателями — по одной строке на каждый этап.
Это упражнение является частью курса
Масштабирование и оптимизация конвейеров данных с Polars
Инструкции к упражнению
- Отфильтруйте
library, оставив только записи, в которыхuseравно"Physical". - Выберите 10 самых длинных названий по столбцу
title_lenс помощью.top_k(). - Выполните запрос с профилированием, чтобы также получить DataFrame с временными показателями.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
result, timings = (
library
# Filter to physical checkouts
.filter(pl.col("use") == "____")
.with_columns(pl.col("title").str.len_chars().alias("title_len"))
# Keep the 10 longest titles
.top_k(10, by="____")
# Run with profiling to capture per-stage timings
.____()
)
print(timings)