0

我有一个 CrateDB 表,用于存储邮政编码的各种信息。它包含大约 30k 个邮政编码,我需要我的查询一次返回所有邮政编码的某些分析信息。我知道这通常是不可行的,但由于我只需要球场信息并且许多邮政编码是连续的,我认为优化是可能的。

例如,如果我想分析人口,这样的分组结果对我有用:

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

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

是否可以编写一个 cratedb 函数来执行类似的操作,以避免在不同的服务/容器/虚拟机上完成此分组而导致带宽问题?

4

1 回答 1

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 windowed 函数,但这还没有对分区等的完整 SQL 支持。

于 2019-03-11T12:25:45.477 回答