Код Middle Parquet и партиционирование спрашивают часто обновлено
Какие row groups можно пропустить
Условие
Напишите groups_to_read(stats, op, value): stats список статистик row groups {"min": ..., "max": ..., "nulls": int, "rows": int} одной колонки. Условие фильтра: колонка op value, где op один из "=", ">", "<", ">=", "<=". Верните индексы групп, которые нельзя пропустить (в них может найтись подходящая строка). Группа, где все значения NULL (nulls == rows), всегда пропускается: NULL не удовлетворяет сравнению.
Примеры
groups_to_read([{"min":1,"max":100,"nulls":0,"rows":10}, {"min":101,"max":200,"nulls":0,"rows":10}], "=", 150) // [1]
groups_to_read([{"min":1,"max":100,"nulls":0,"rows":10}, {"min":101,"max":200,"nulls":0,"rows":10}], ">", 100) // [1]
groups_to_read([{"min":1,"max":100,"nulls":0,"rows":10}, {"min":101,"max":200,"nulls":0,"rows":10}], ">=", 100) // [0, 1]
Как подойти
Подсказки: 1
- Для
>достаточно проверитьmax > value, для<проверитьmin < value.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.