内部数据库逻辑/操作可对结果进行分组/压缩

时间:2019-02-27 07:24:28

标签: cratedb

我有一个CrateDB表,该表存储邮政编码的各种信息。它包含大约3万个邮政编码,我需要查询一次返回所有邮政编码的某些概要信息。我知道通常这是不可行的,但是由于我只需要了解棒球场信息并且许多邮政编码是连续的,因此我认为可以进行优化。

例如,如果我想描述人口,那么将这样的分组结果对我有用:

group 1 (0-1000): 00000-02000,02004-02010,02012
group 2 (1001-3000): ...
...

上面的人群和群体都是假的,但是这个想法应该成立。基本上,将概要分析的类别分组到存储桶中,分配邮政编码以更正存储桶,并通过使用范围表示进一步减小大小。我可以满足预定义数量的组,也可以由请求/查询本身定义组存储桶。希望这会将响应从对于单个查询而言太大的响应减少到可管理的响应。

是否可以编写cratedb函数来执行类似的操作,以避免在另一个服务/容器/ vm上进行此分组,从而避免带宽问题?

1 个答案:

答案 0 :(得分: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]

您可以使用over窗口函数,但这还没有对分区等的完整SQL支持。