Amazon redshift 用于红移的Postgresql hll(或其他Hyperloglog数据类型/结构)

Amazon redshift 用于红移的Postgresql hll(或其他Hyperloglog数据类型/结构),amazon-redshift,hyperloglog,Amazon Redshift,Hyperloglog,需要能够报告唯一的访问者,但希望避免预先计算每一个可能的键排列和创建多个表 作为一个简单的例子,假设我需要在一个包含以下列的表中报告每月Uniques 年月日 页码号 国家识别号 设备类型标识 月刊 在Druid和Redis中,Hyperloglog数据类型将解决这一问题,前提是可以接受较小的误差,在这种情况下,我将能够通过维度的任意组合运行查询,并获得对Unique的可行估计 在PostgreSQL世界中,我能找到的最接近PostgreSQL的插件是PostgreSQL hll插件,但它似乎适

需要能够报告唯一的访问者,但希望避免预先计算每一个可能的键排列和创建多个表

作为一个简单的例子,假设我需要在一个包含以下列的表中报告每月Uniques

年月日 页码号 国家识别号 设备类型标识 月刊 在Druid和Redis中,Hyperloglog数据类型将解决这一问题,前提是可以接受较小的误差,在这种情况下,我将能够通过维度的任意组合运行查询,并获得对Unique的可行估计

在PostgreSQL世界中,我能找到的最接近PostgreSQL的插件是PostgreSQL hll插件,但它似乎适用于PostgreSQL 9.0+

有没有一种方法可以在Redshift中表示这一点,而不必预先计算或存储访问者ID,从而大大增加表的大小,但允许使用Redshift的近似计数hll实现


注意:RedShift是首选平台,但我已经知道其他自托管PostgreSQL fork可以支持此功能,例如CITUDB。正在寻找使用RedShift实现这一点的方法。

RedShift虽然从技术上讲是postgresql派生的,但在十多年前就已经出现了。它仍然使用与postgres相同的线路协议,但其代码存在很大分歧。除其他不兼容外,它不再允许自定义数据类型。这意味着你想要使用的插件类型是不可行的


但是,正如您所指出的,如果您能够获取所有原始数据,则可以使用内置的近似功能。

Redshift最近宣布支持HyperLogLog草图:

更新:关于HLL使用的博客文章
除非自上次查看以来有所改变,否则redshift不允许自定义类型或插件。我知道他们为python函数添加了自定义函数支持,因此您应该能够将hll算法作为一个函数实现,但这可能需要您自己完成。在查询级别,hll是在select语句中的计数之前使用近似关键字实现的。不幸的是,只有当您拥有原始数据或接近原始数据时,这才有效。我正在努力避免储存所有这些东西。文档:Redshift讲的是postgres line协议,但它在很久以前就被分叉了,并且显著地改变了功能。既然没有能力进行自定义类型,那么我认为你所要求的是不可能的。@jmelesky你能把这个作为一个答案吗?确认你是100%正确的,没有办法做到这一点。