【发布时间】:2019-05-24 01:04:01
【问题描述】:
我想知道是否可以通过以下方式进行近似的不同计数:
- 我有一个这样的聚合:
+---------+----------------------+-------------------------------+
| country | unique products sold | helper_data -- limit 1MB size |
+---------+----------------------+-------------------------------+
| US | 100,000,005 | ?? |
| CA | 192,394,293 | ?? |
+---------+----------------------+-------------------------------+
- 我想知道我是否可以获得以下信息:
+---------+--------------------------------------+
| country | unique products sold |
+---------+--------------------------------------+
| [ALL] | 205,493,599 # possible to get this?? |
| US | 100,000,005 |
| CA | 192,394,293 |
+---------+--------------------------------------+
换句话说,如果不传递所有值(有太多而且我没有足够的内存来处理它),是否可以为每个特定区域的行项目传递某种哈希(或其他东西) ,以近似在多个项目之间相加时的近似不同计数是多少?或者这是不可能的。
请注意,我不是在寻找 sql 方法,我只是想看看它是否可以传递某种对象/哈希/等。返回每个订单项,然后在多个订单项中建立一个近似的唯一计数。
【问题讨论】:
-
您正在寻找 HyperLogLog++ Functions in Standard SQL - 它完全符合您的要求
-
@MikhailBerlyant 能否请您展示一下这是如何完成的 - 在 BigQuery 中执行 HLL,然后在其外部执行 count_merge(例如在 python 中?)
-
我不是 python 人,但可以用 sql (BigQuery SQL) 告诉你
标签: python algorithm google-bigquery hyperloglog