Внутренняя логика дБ / операция для группировки / сжатия результата
У меня есть таблица CrateDB, хранящая различную информацию для почтовых индексов. Он содержит около 30 тыс. Почтовых индексов, и мне нужен мой запрос, чтобы вернуть определенную информацию о профилировании для всех почтовых индексов одновременно. Я понимаю, что, как правило, это невозможно, но, поскольку мне нужна только приблизительная информация, а многие почтовые индексы являются последовательными, я думаю, что оптимизация возможна.
Например, если бы я хотел профилировать население, сгруппированный результат, такой как этот, работал бы для меня:
group 1 (0-1000): 00000-02000,02004-02010,02012
group 2 (1001-3000): ...
...
Население и группы выше являются фальшивыми, но идея должна держаться. По сути, сгруппируйте профилированную категорию в сегменты, назначьте почтовые индексы для коррекции сегмента и дополнительно уменьшите размер с помощью представления диапазона. Я мог бы согласиться на предопределенное количество групп или групповые сегменты, определенные самим запросом / запросом. Мы надеемся, что это уменьшит ответ от чего-то, что будет слишком большим для одного запроса, до того, который будет управляемым.
Можно ли написать функцию cratedb для выполнения чего-то подобного, чтобы избежать проблем с пропускной способностью при выполнении этой группировки на другом сервисе / контейнере / виртуальной машине?
0 ответов
Вероятно, вы могли бы создавать группы на лету или в виде столбцов, если хотите, с помощью регулярного выражения, я сделал это в таблице строк 23M и сгруппировал по этому.
В моем примере regex
группировка и AVG
заняло около 30 секунд, но это очень субъективно для моего оборудования.
Что-то вроде этого, вероятно, будет работать как общий указатель
SELECT avg (--yourColumn--), regexp_matches(--yourColumn--, '--your regex--','i')[1]
FROM "doc"."--yourTable--"
group by regexp_matches(postcode, '--your regex--','i')[1]
order by regexp_matches(postcode, '--your regex--','i')[1]
Вы можете использовать более оконную функцию, но это еще не имеет полную поддержки SQL для разделения и т.д.