1

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

作为一个简单的示例,假设我需要在具有以下列的表中报告每月唯一身份

  • 日期(月/年)
  • page_id
  • country_id
  • device_type_id
  • 每月唯一

在 Druid 和 Redis 中,Hyperloglog 数据类型会解决这个问题(假设可以接受小的误差范围),我将能够通过任何维度组合运行查询并接收对唯一性的可行估计。

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

有没有一种方法可以在 Redshift 中表示这一点,而无需预先计算或存储访问者 ID(大大增加了表大小,但允许使用 RedShift 的“近似计数”hll 实现)?

注意:RedShift 是首选平台,但我已经知道其他自托管 PostgreSQL 分支可以支持这一点,例如 CitusDB。寻找使用 RedShift 执行此操作的方法。

4

3 回答 3

1

Redshift 于 2020 年 10 月宣布了新的 HLL 功能。如果您的 Redshift 发行版本是 1.0.19097 或更高版本,您可以使用所有可用的 HLL 功能。在此处查看AWS Redshift 文档的更多信息

你可以做类似的事情

SELECT hll(column_name) AS unique_count FROM YOURTABLE;

或直接创建HLL 草图

于 2021-11-16T22:12:28.630 回答
-1

Redshift 虽然在技术上是从 postgresql 派生的,但在十多年前就被分叉了。它仍然使用与 postgres 相同的线路协议,但它的代码有很大的不同。除其他不兼容性外,它不再允许自定义数据类型。这意味着您要使用的插件类型将不可行。

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

于 2016-08-24T17:42:14.043 回答