Внутренняя логика дБ / операция для группировки / сжатия результата

У меня есть таблица 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 для разделения и т.д.

Другие вопросы по тегам