У меня есть секционированный набор данных паркета, который я пытаюсь прочитать во фрейм данных pandas. Полный набор данных паркета не помещается в память, поэтому мне нужно выбрать только некоторые разделы (столбцы разделов - это год, месяц и дата. У меня есть следующее:
pd.read_parquet(
path_to_dataset,
filters=[("Date", ">=", "20200715"), ("Date", "<=", "2020804")]
)
Когда я запускаю это, я получаю ошибка памяти / программа python вылетает. Но когда я запускаю следующее, она работает без проблем, хотя теоретически она вернет точно такой же объем данных (мой набор данных останавливается 4-го числа).
pd.read_parquet(
path_to_dataset,
filters=[("Date", ">=", "20200715")]
)
Кажется, что второй фильтр ("Date", "<=", "2020804")
имеет приоритет над первым и не рассматривается как составное выражение. В моем текущем варианте использования я могу просто удалить второй фильтр, но у меня есть другие, где данные будут больше посередине всего диапазона, и без второго фильтра я бы снова стал читать слишком много.
Я безуспешно пробовал каждое из следующих действий.
(("Date", ">=", "20200715") & ("Date", "<=", "2020804"))
("Date", ">=", "20200715", "Date", "<=", "2020804")
Есть ли способ справиться Составные выражения в том же разделе / столбце?
Справочная документация здесь: https://arrow.apache.org/docs/python/dataset.html