Есть ли в Polars способ заменить или изменить ленивый кадр в начале графа вычислений?Python

Программы на Python
Anonymous
Есть ли в Polars способ заменить или изменить ленивый кадр в начале графа вычислений?

Сообщение Anonymous »

Мне очень нравятся возможности Polars LazyFrame. Однако недавно я пытался разработать метод определения ленивого плана, чтобы его можно было сериализовать и применить к данным после десериализации. Мотивацией для этого является, прежде всего, предотвращение необходимости развертывания нового конвейера для обработки лабораторных данных для решения пограничных случаев, изменений формата или изменений в предположениях, но также это дает преимущество более чистого управления конфигурацией обработки данных.
Игрушечный пример будет выглядеть примерно так;

Код: Выделить всё

import polars as pl
# pipeline definition
empty_lf = pl.LazyFrame()
step1_lf = base_lf.with_columns(pl.col('a') + 1)
step2_lf = step1_lf.filter(pl.col('a') > 2)
serialized_pipeline = step2_lf.serialize()

# pipeline execution (not necessarily performed in the same environment as definition)
actual_data = pl.LazyFrame({'a':[1,2,3]})
# this next line of code is fanciful. It is valid code, but it executes the lazy plan on the
# empty_lf above instead of actual_data, resulting in a ColumnNotFoundError
processed_data = actual_data.deserialize(io.BytesIO(serialized_pipeline)).collect()
Из коробки кажется, что Polars настолько близок к возможности сделать это, и кажется, что это будет очевидная следующая эволюция ленивого выполнения и сериализации объектов Polars.
Я что-то упускаю? Есть ли реальный способ сделать это? Происходит ли что-то под капотом, что делает такую ​​операцию невозможной?

Вернуться в «Python»